Вопрос № 83964: Как корректно выгрузить DLLку, в которой находятся мои формы? я делаю для загрузки так: LibHandle := LoadLibrary('DLL2.DLL'); try if LibHandle = 0 then begin messagebox(0,'бла-бла-бла!!', 'Ошибка!!!', Mb_OK+Mb_TaskM...Вопрос № 83968: Уважаемые эксперты.
У меня такой вопрос как в
Shellexecute(0, 'open', 'readerstandreader.exe', '.pdf', NIL, SW_SHOW);
сделать чтобы .pdf файлы открывались не по конкретному названию указанному в пути н-р '0000001.pdf', а по выб...Вопрос № 83997: Есть вопрос.Написал на Delphi KeyLogger.Решил опробовать.Работает везде, кроме LineageII.Программа написано 100% верное.В чем проблемма?...Вопрос № 84027: Добрый день! Помогите плиз!
Есть N кол-во Editов, в них вводятся параметры для
расчётов. Проблема в том, что необходимо ввести
параметры во все Editы, иначе программа ругается.
Бывает необходимость заполнить только несколько editов....Вопрос № 84032: Здравствуйте уважаемые эксперты.
Не могли бы вы объяснить следующий момент: рсобытие Application.onIdle
Просто когда я пишу обработчик этого события то какое-то время оно нормально функцианирует, а вот потом через секунд 10-15 событие не...
Вопрос № 83.964
Как корректно выгрузить DLLку, в которой находятся мои формы?
я делаю для загрузки так: LibHandle := LoadLibrary('DLL2.DLL'); try if LibHandle = 0 then begin messagebox(0,'бла-бла-бла!!', 'Ошибка!!!', Mb_OK+Mb_TaskModal); end;
@ShowForm := GetProcAddress(LibHandle, 'ShowForm'); if not (@ShowForm = nil) then ShowForm(Application.Handle, Caption) else RaiseLastWin32Error; FINALLY FreeLibrary(LibHandle); // Unload the DLL. end; ну так вот:
доходит он знач до FINALLY, выполняет FreeLibrary, и всё ..... вызывающее приложение виснет, и говорит слишком много EXCEPTIONS и бла-бла-бла!
народ подскажите пожалуйста как корректно выгрузить из памяти вызванную, отработавшую и затем закрытую форму находящуюся в DLL, а точнее как выгрузить саму ету DLL! у-у-у-уф, вроде всё, закончил!
Отправлен: 24.04.2007, 15:00
Вопрос задал: Men (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 9)
Отвечает: monah
Здравствуйте, Men!
Маловато информации. Я полагаю, что Вы не уничтожаете форму перед закрытием DLL. Во всяком случае в приведенном коде этого нету. В самой DLL необходимо обявить функцию аналогичную вашей 'ShowForm', но выполняющую разрушение формы и очищающими память.
--------- festina lente
Ответ отправил: monah (статус: Студент)
Ответ отправлен: 24.04.2007, 21:44
Просто запишите что-то наподобие PChar('AnyDisk:AnyFolder'+CellValue[+'.pdf']) вместо имени файла.
AnyDisk и AnyFolder, естесственно, необязательно, т.е. путь задаётся по правилам MS-DOS, CellValue - значение ячейки Вашей таблицы, квадратных скобках указано необязательно добавление расширения (не нужно, если в значении ячейки таблицы оно уже присутствует).
Ответ отправил: DimonSoft (статус: 1-ый класс)
Ответ отправлен: 24.04.2007, 16:13 Оценка за ответ: 4
Отвечает: Вадим Витомский
Здравствуйте, Kakenov Daulet!
А если попробовать использовать OpenDialog и имя соответствующего файла уже подставлять в вызов функции?
Приложение:
Ответ отправил: Вадим Витомский (статус: 6-ой класс)
Ответ отправлен: 24.04.2007, 17:47
Отвечает: Esi
Здравствуйте, Kakenov Daulet!
Вопрос решить очень просто, ведь имя файла имеет символьный тип.
Shellexecute(0, 'open', 'readerstandreader.exe', table.fieldbyname('pole').asstring+'.pdf', NIL, SW_SHOW); // если в поле (pole) таблицы (table) не содержится расширение файла .pdf или
Shellexecute(0, 'open', 'readerstandreader.exe', table.fieldbyname('pole').asstring, NIL, SW_SHOW); // если в поле содержится расширение файла .pdf.
Ответ отправил: Esi (статус: 1-ый класс)
Ответ отправлен: 24.04.2007, 19:54
Вопрос № 83.997
Есть вопрос.Написал на Delphi KeyLogger.Решил опробовать.Работает везде, кроме LineageII.Программа написано 100% верное.В чем проблемма?
Ответ отправил: FishMD (статус: 1-ый класс)
Ответ отправлен: 24.04.2007, 20:32
Вопрос № 84.027
Добрый день! Помогите плиз!
Есть N кол-во Editов, в них вводятся параметры для
расчётов. Проблема в том, что необходимо ввести
параметры во все Editы, иначе программа ругается.
Бывает необходимость заполнить только несколько editов.
Как сделать что бы программа не ругалась, а выполняла расчёт
при заполнение только нескольких Editов?
Отправлен: 24.04.2007, 21:58
Вопрос задал: SIR (статус: Посетитель)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 5)
Отвечает: DimonSoft
Здравствуйте, SIR!
Проблема Вами описана расплывчато, поэтому буду пользоваться своим "телепатором"...
Для того, чтобы определить, есть ли что-нибудь в TEdit достаточно сранить значение Edit1.Text с '' (если контрол имеет имя Edit1).
Скрее всего, под "программа ругается" Вы понимаете сообщение о какой-либо ошибке, которые Вы не программировали. Возникает оно из-за особенностей Вашего кода.
Проверка того, заполнены ли некоторые TEdit'ы сводится к последовательной проверке условий равенства их свойства Text и пустой строки.
Всё. Боюсь, больше ничего нельзя сказать ввиду отсутствия кода, который "ругается".
Ответ отправил: DimonSoft (статус: 1-ый класс)
Ответ отправлен: 24.04.2007, 22:16
Отвечает: FishMD
Здравствуйте, SIR!
Перед началом рассчета:
if trim(edit1.text) = '' then edit1.text=0; - грубая ошибка!!! [Edited by Gh0stik ]
Недостаточно вразумительно задан вопрос... Потому и ответ такой...
Ответ отправил: FishMD (статус: 1-ый класс)
Ответ отправлен: 25.04.2007, 11:04
Отвечает: Diman Soldatov / DES
Здравствуйте, SIR!
Попробуй перед расчетами и внесением данных через Edit, обнулить Editы то есть присовить значению Edit1.text:='0'; тогда программа не будет ругаться на пустое поле.
Ответ отправил: Diman Soldatov / DES (статус: 1-ый класс)
Ответ отправлен: 25.04.2007, 12:46
Отвечает: Esi
Здравствуйте, SIR!
Перед тем как производить расчёт, нужно сделать проверку на заполняемость editов.
Если в расчете суммирование, то пустым editам присвоить 0. Если умножение, то присвоить 1.
Ответ отправил: Esi (статус: 1-ый класс)
Ответ отправлен: 25.04.2007, 22:00
Вопрос № 84.032
Здравствуйте уважаемые эксперты.
Не могли бы вы объяснить следующий момент: рсобытие Application.onIdle
Просто когда я пишу обработчик этого события то какое-то время оно нормально функцианирует, а вот потом через секунд 10-15 событие не генерируется... до тех пор пока не произойдёт какое-нить событие (движение мыши и т.к.).
в приложении код в процедуре обработчика.
токо не надо писать как мне реализовать этот код при помощи других средств (Timer например) проблема не в коде а в обработке этого события, я как-то не понимаю суть его работы.
Вот что по этому поводу говорит Валерий Фаронов.
Событие OnIdle возникает всякий раз, когда программа обнаруживает, что ее очередь пуста. Обработчик этого события может незаметно для пользователя выполнить вспомогательную работу, например, проверить орфографическую правильность только что введенного слова или собрать и обработать статические данные. Важно помнить, что выполняемая в обработчике работа не может занимать много времени, иначе программа перестанет реагировать на запросы пользователя. Если фоновая работа отнимает много времени, то ее следует
разбить на сравнительно не большие фрагменты или периодически вызывать в ней метод HandleMessage. Обработчик в параметре Done сообщает о необходимости продолжить фоновую работу (Done = False) или о ее завершении (Done = True). В первом случае программа просмотрит очередь сообщений и после ее очистки вернет управление обработчику OnIdle. Во втором случае программ будет ожидать поступления новых сообщений.
В приложении возможный вариант использования.
Good Luck!!!
Приложение:
--------- Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.
Ответ отправил: Gh0stik (статус: Профессионал) Украина, Славянск Организация: Славянский государственный педагогический университет (Кафедра алгебры) ICQ: 289363162 ---- Ответ отправлен: 24.04.2007, 22:53