Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по Delphi (все версии) - часть 4

Автор: RSoFT1978
Дата сообщения: 17.12.2008 13:07
OOD
Исправь (убери (Sender: TObject)) в объявлении процедуры:
...
public
{ Public declarations }
procedure ThisISHowIPutFilesIn;
...
Создай на диске С файлы SomeSmalFile1.txt и SomeSmalFile2.txt (не пустые).
Положи на форму кнопку, нажми на неё мышкой 2 раза и в открывшемся окне напиши form1.ThisISHowIPutFilesIn;
Должно получится примерно так:
...
procedure TForm1.Button1Click(Sender: TObject);
begin
form1.ThisISHowIPutFilesIn;
end;

Если сделаешь это без ошибок, то всё заработает.
Автор: Grande
Дата сообщения: 18.12.2008 16:38
Не поможет ли кто решить такую проблему.
Имеется заранее неизвестное число экземпляров объекта (например, TForm). Число экземпляров выясняется во время работы программы, после чего эти экземпляры создаются. До сих пор все понятно. А вот как каждой вновь созданной форме назначить СВОЙ обработчик события (допустим, OnShow)? Ведь неизвестно, сколько обработчиков понадобится.
Вот такая задача.
Автор: asdnsd
Дата сообщения: 18.12.2008 17:43
Grande, а "универсальный" не написать?
Автор: Grande
Дата сообщения: 18.12.2008 17:51
asdnsd
К сожалению, никак
Автор: VitaliM
Дата сообщения: 18.12.2008 18:16
Grande
Все зависит от того что должен делать этот обработчик, а ты этого не пояснил.
Автор: Frodo_Torbins
Дата сообщения: 18.12.2008 18:52
Grande
В D2009 можно попробовать через анонимные методы, только по-моему должен быть способ как обойтись без них.
Автор: Grande
Дата сообщения: 18.12.2008 20:10
Вот, посмотрите, правильно ли я мыслю.
Я решил создать класс TSample (потомок, допустим, TObject). Затем в этом классе описываю нужный мне объект (как уже говорилось - потомок TForm). Затем, в процессе работы программы, когда выяснится необходимое количество экземпляров, я создаю это количество экземпляров TSample, а там создается потомок TForm. И, самое интересное, каждый экземпляр TForm будет иметь свой собственный обработчик.
Не сочтите за труд - прокомментируйте эту идею.

Добавлено:
Frodo_Torbins
Я работаю в Delphi7, там оных нет


Добавлено:
VitaliM
В общем-то дело не в том, что должен делать обработчик. Мне необходимо выяснить - могут ли созданные в run-time объекты одного типа иметь различные обработчики событий. Задумал тут переписать свой же проект и появилась идея, только вот не знаю, как ее реализовать.
Автор: NOwlar
Дата сообщения: 18.12.2008 20:39
Grande
Иметь-то могут, если обработчики где-то в коде описаны, ибо обработчик события назначается экземпляру класса. Только никак не могу взять в толк зачем это может понадобиться. Может разъяснения по данному вопросу помогут остальным дать тебе дельный совет?
Автор: Maks150988
Дата сообщения: 18.12.2008 20:44
Здравствуйте. Подскажите как загрузить png из ресурсов средствами GDI+. Я думал что это может функция GdipCreateBitmapFromResource, но толку-то, она грузит только битмап, когда через LoadImage так же можно... Ведь есть функция GdipLoadImageFromFile, грузящая и png и gif и некоторые другие форматы, а из ресурса-то как? Может есть идеи какие-нибудь? Просто мне важен размер компилируемого файла и цветность - PNG формат идеально подходит для этого. Тем более делаю скринсейвер - как раз через GDI можно спокойно делать с изображением что хочешь. Но вот проблема с загрузкой картинки из ресурса.
Автор: Grande
Дата сообщения: 18.12.2008 20:53
NOwlar

Цитата:
Только никак не могу взять в толк зачем это может понадобиться. Может разъяснения по данному вопросу помогут остальным дать тебе дельный совет?

Возможно, ты прав.
Задача такова: имеется несколько машин в локальной сети. Сколько их в данный момент - неизвестно. Требуется их опросить и, в зависимости от типа рабочей станции, принять решение.
Автор: VitaliM
Дата сообщения: 18.12.2008 21:14
Grande

Цитата:
могут ли созданные в run-time объекты одного типа иметь различные обработчики событий

В этом проблемы нет, только надо различать, что создать динамически рантайм объекты ты можешь сколько угодно, но они будут близнецами, а количество готовых обработчиков событий будет всегда конечно. Обработчик динамически не создашь в отличии от объекта. Либо, как уже советовали, один обрабтчик, но универсальный с критериями по типам рабочих станций (это более предпочтительный вариант, IMHO). Объект при создании получает тип рабочей станции и универсальный обработчик в зависимости от типа выполняет требуемое действие. Весь набор возможных действий тебе известен, я надеюсь, и программируется без проблем. Более того, универсальный обработчик проще развивать, добавляя новые варианты обработки в соответствии с критериями, зависящими от рабочих станций, которые могут меняться или добавляться.
Автор: Grande
Дата сообщения: 18.12.2008 21:19
VitaliM
Угу, я вроде и сам к этому же подхожу. Спасибо огромное.
Автор: bornbill
Дата сообщения: 18.12.2008 22:21
в кратце пользуясь twebbrowser пытаюсь обойти все фрейме и выдрать из них всё получаю "отказанно в доступе", вот более полное описание подобной проблемы www.delphikingdom.ru заранее благодарен за посыл в верном направлении
Автор: ShIvADeSt
Дата сообщения: 19.12.2008 01:55
Maks150988

Цитата:
Здравствуйте. Подскажите как загрузить png из ресурсов средствами GDI+. Я думал что это может функция GdipCreateBitmapFromResource, но толку-то, она грузит только битмап, когда через LoadImage так же можно... Ведь есть функция GdipLoadImageFromFile, грузящая и png и gif и некоторые другие форматы, а из ресурса-то как?

Ссылка http://hermantan.blogspot.com/2007/09/using-vfp-resource-file-there-are.html
краткое содержание на ангельском.
I also shown you about putting an image (PNG) to custom resource section. Since the image was put as a raw data, you can only load it back as raw data. After you get the raw data, you can save it to a file, or you can also create a stream data to create the bitmap from the stream. GdipCreateBitmapFromResource() doesn't work for this resource type.
Автор: anfilat
Дата сообщения: 19.12.2008 08:51
bornbill
Ответил в форуме по твоей ссылке.
Автор: Maks150988
Дата сообщения: 19.12.2008 16:27
ShIvADeSt
Да, понятно теперь что надо в стрим загрузить изображение. Вот эти микрософцы удумают же долбанутый способ, каждый раз грабли для разработчиков, чего нельзя-то без проблем грузануть из ресурсов одной функцией пнг...
Автор: ASE_DAG
Дата сообщения: 19.12.2008 16:46
Посоветуйте, как из Delphi 7 или 6 сделать portable версию? Или где такую можно скачать? Допустима жесткая привязка к пути. Т.е. принес на машину, скопировал и работает. Это возможно?
Срочно понадобилось, попытался поискать – ничего путного.
Автор: RageSV
Дата сообщения: 19.12.2008 17:07
Frodo_Torbins
В 2009 анонимные методы не распространяются на методы класса (только шманскими способами). Фактически это недо-анонимные методы :-( .

Grande
Собственно уже давным давно все решено до вас. Смотрите в сторону паттерна Factory Method.

Автор: Maks150988
Дата сообщения: 19.12.2008 18:47
Ууу, вобщем,кто разбирается в GDI+, прошу вашей помощи.
http://webdrive.avtograd.ru/Download/Explorer/temp/TScreenSaver.zip
Я не понимаю, почему не отображается загруженная картинка. Код стрима правилен полюбому. Интересует какого надо GdipCreateFromHDC подсунуть HDC, либо я HDC неправильно создал. Дибо может я что-то неправильно в WM_PAINT через блиттинг делаю... Вобщем необходимо чтобы блиттилось на HDC через PaintStruct загруженное PNG из ресурсов. Оно загружается, а вот дальше фиг знает почему не отрисовывается. Возможно стили окна надо сменить чтоли? А то сколько не попадалось примеров - через layred окна какие-то мудрено все...
Автор: Grande
Дата сообщения: 19.12.2008 22:37
RageSV
Понял, спасибо.
Автор: igorfil007
Дата сообщения: 20.12.2008 09:05
Подскажите пожалуйста как решить проблему установки Delphi7 в Vista64SP1 Ultimate.
В процессе установки синий экран смерти, ссылка на файл VBENgNT.sys.
Все обновления установлены.
Автор: Frodo_Torbins
Дата сообщения: 20.12.2008 09:33
igorfil007
Ну можно Delphi7SE поставить попробовать. Там другой инсталлятор, может и прокатит. А вообще для висты либо Delphi2007 либо Delphi2009 (первая кстати есть в Lite варианте на 91Mb).
Автор: metraton
Дата сообщения: 20.12.2008 11:59
Здравствуйте. Следующая проблема. При запуске только-что установленной Delphi 2009, происходит ошибка Access Violation. Что-то там обратилось по адресу 000000 и этого не может быть. Как решить проблему? Система свежая, только что переустановил.
Автор: Frodo_Torbins
Дата сообщения: 20.12.2008 17:02
metraton

Цитата:
Система свежая, только что переустановил.

Вот отсюда подробней, пожалуйста. И про саму Delphi тоже побольше подробностей.
Автор: metraton
Дата сообщения: 20.12.2008 19:04
Frodo_Torbins
Система свежей установки. WinXP SP3, установлен .NET Framework 3.5 SP1, Delphi 2009 с лицензией Architect. Рассмотрел ошибку: что-то связано с регистрацией какой-то библиотеки ядра, т.е. файла bpl. И ещё пишет, что regasm.exe, который лежит в папке системы в подпапке с фреймворком, не может что-то там зарегистрировать.

PS Поставил Delphi 2007, походил вокруг компа, послушал музыку, посмотрел футбол on-line, начал писать эти строки, запустил Delphi 2009 - и, о чудо! Она запустилась! В чём дело, я вообще не понимаю. Мистика какая-то. Может что-то установилось с 2007'й делфой, но я раньше проделывал такой фокус, ничего из этого не получалось. Хотелось всё-таки знать на будущее, в чём заключалась проблема.
Автор: Asm64D
Дата сообщения: 21.12.2008 02:09
metraton
Ох, там с 2007 ставятся какие-то дрова доступа (в виде bpl) к dbExpress которые в случае с 2009 либо не идут по умолчанию, либо более вероятно не устанавливаются в c:\system
Автор: metraton
Дата сообщения: 21.12.2008 09:56
Asm64D
Вчера программируя обнаружил новую ошибку (в чудом запустившемся 2009) - не могу скомпилить ни одно приложение. Пишет, что класс с таким-то ID (набор непонятных цифр и букв) не зарегистрирован. Пришлось всё переписывать с нуля в 2007.
Автор: lamber
Дата сообщения: 21.12.2008 13:29
Столкнулся с такой проблемой уже заколебался искать.

Суть в следующеем имеется некий файл текстовый и понему строится дерево через TreeView.Loadfromfile();
С помощью этого дерева формируется структура катологов и файлов. и вот я построил эту структуру и хочу ей воспользоватся в каждой папке есть текстовый файл из которого нужно забрать информацию файл текстовый, но припопытке чтения выдает что фал не найден. Вот привожу код.

Вот привожу код для первого формирует файловую структуру

Код:
procedure TForm2.Button1Click(Sender: TObject);
var
i:integer;
begin
SetCurrentDir(MyDir);
TreeView1.LoadFromFile('math.txt');
if not(directoryexists('database')) then
begin
CreateDir('database');
Setcurrentdir('database');
end;
for i:= 0 to (TreeView1.Items.Count - 1) do
begin
SetCurrentDir('database');
if not(directoryexists(TreeView1.Items[i].Text)) then
begin
CreateDir(TreeView1.Items[i].Text);
Setcurrentdir(TreeView1.Items[i].Text);
FileCreate(TreeView1.items[i].text + '.txt');
end;
SetCurrentDir('..');
end;
end;
Автор: George_Lucky
Дата сообщения: 22.12.2008 06:31
Вопрос касаемый установок компонент на Д2009
После перегрузки ИДЕ начинает ругаться, что некоторые библиотеки не найдены
хотя они лежат именно в тех местах, на которые Д2009 ругается.
Затем в списке компонент, эти библиотеки не отмечены чеком.
Ручками их можно включить, но при следующей перезагрузке - опять.
Где искать причину этих сбоев? И как устранить ее?
Автор: delover
Дата сообщения: 22.12.2008 07:35
Maks150988
Мне очень понравилась Ваша идея мальеньких программ, только я в последней теме немного не понимаю. Дело в том что раньше для загрузки разных катинок с разными форматами типа PCX,PIC,RPT существовала специальная библиотека, которая умела с ними работать. Я вот тоже не понимаю почему бы Микрософту просто не купить все известные фирмы и делать всё в одиночку. Сори за флейм. Ближе к сути. Я так же смущён вопросами по поводу PNG, так как подозреваю что Интернет Экспорер показывает такие катинки без труда и значит ничего не мешает просто положить TWebBrowser на формочку. Кода ноль, а кодаки самые поддержаные получатся. Вот.

Добавлено:
Он веть и веть GIF показывает.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Глобальные переменные в разных формах с++ builder 'a.


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.