Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 795
от 30.04.2007, 00:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 464, Экспертов: 90
В номере:Вопросов: 5, Ответов: 10


Вопрос № 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


Вопрос № 83.968
Уважаемые эксперты.
У меня такой вопрос как в

Shellexecute(0, 'open', 'readerstandreader.exe', '.pdf', NIL, SW_SHOW);

сделать чтобы .pdf файлы открывались не по конкретному названию указанному в пути н-р '0000001.pdf', а по выбору из поля таблицы.

вопрос м.б. некоректный но что можете посоветуйте пожалуйста.
спасибо!
Отправлен: 24.04.2007, 15:18
Вопрос задал: Kakenov Daulet (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: DimonSoft
Здравствуйте, Kakenov Daulet!

Просто запишите что-то наподобие 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% верное.В чем проблемма?
Отправлен: 24.04.2007, 18:27
Вопрос задал: Квагин Василий Петрович (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: FishMD
Здравствуйте, Квагин Василий Петрович!

Ответ удален, по одной из указанных причин:
- пустой;
- неверный;
- вредный;
- не соответствует вопросу
и помещен для обсуждения в ветку форума "О деятельности экспертов и работе портала/Удаленные ответы для обсуждения".

-~= Gh0stik =~-
Ответ отправил: 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 например) проблема не в коде а в обработке этого события, я как-то не понимаю суть его работы.

Приложение:

Отправлен: 24.04.2007, 22:18
Вопрос задал: Spiteful imp (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Gh0stik
Здравствуйте, Spiteful imp!

Вот что по этому поводу говорит Валерий Фаронов.
Событие OnIdle возникает всякий раз, когда программа обнаруживает, что ее очередь пуста. Обработчик этого события может незаметно для пользователя выполнить вспомогательную работу, например, проверить орфографическую правильность только что введенного слова или собрать и обработать статические данные. Важно помнить, что выполняемая в обработчике работа не может занимать много времени, иначе программа перестанет реагировать на запросы пользователя. Если фоновая работа отнимает много времени, то ее следует разбить на сравнительно не большие фрагменты или периодически вызывать в ней метод HandleMessage. Обработчик в параметре Done сообщает о необходимости продолжить фоновую работу (Done = False) или о ее завершении (Done = True). В первом случае программа просмотрит очередь сообщений и после ее очистки вернет управление обработчику OnIdle. Во втором случае программ будет ожидать поступления новых сообщений.

В приложении возможный вариант использования.

Good Luck!!!

Приложение:

---------
Господь Бог - это всего лишь сверхмощный генератор случайных чисел, в соответствии с которыми сочетаются события на Земле. Генератор случайных чисел - и только.

Ответ отправил: Gh0stik (статус: Профессионал)
Украина, Славянск
Организация: Славянский государственный педагогический университет (Кафедра алгебры)
ICQ: 289363162
----
Ответ отправлен: 24.04.2007, 22:53


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.51 (beta) от 27.04.2007
Яндекс Rambler's Top100

В избранное