Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

DLL и поток


Страницы:   1 2

Бакук ©   (2007-12-18 10:24:00) 

Поток и ДЛЛ

TT = class(TThread)
 protected
AMessage: PChar;
   procedure Execute; override;
end;

procedure TT.Execute;
var
 FResult: integer;
begin
 ShowInformation('Старт');
 ShowInformation('Запускл DLL');

 // Func — функция из DLL. Статика
 FResult := Func(…);

 ShowInformation('Запуск DLL завершен');
 ShowInformation('Результат функции: ' + IntToStr(FResult));
 ShowInformation('Все, поток отработал');
end;

procedure ShowInformation(AMessage: string);
begin
 frmMain.LogMemo.Lines.Append(DateTimeToStr(Now) + '. ' + AMessage);
end;


На одном компьютере выводятся сообщения:
18.12.2007 17:20:44. Старт
18.12.2007 17:20:44. Запуск DLL
18.12.2007 17:20:46. Запуск DLL завершен
18.12.2007 17:20:46. Результат функции: 22
18.12.2007 17:20:46. Все, поток отработал


На другом же

18.12.2007 17:10:46. Старт
18.12.2007 17:10:46.
18.12.2007 17:10:46. Запуск DLL


И все. Притом что функция в DLL отрабатывает максимум за минуту. Компьютер удаленный, debug произвести не могу

Какие могут быть причины?


oldman   (2007-12-18 10:53:00) [21]


> Сергей М. ©   (18.12.07 10:51) [11]


Но на его-то компе работает :)))


Сергей М.   (2007-12-18 10:51:00) [22]


> Бакук ©   (18.12.07 10:45) [7]


Так что dll тут пока ни причем, хотя не исключено, что и в ее коде ты допустил ошибки.


Сергей М.   (2007-12-18 10:49:00) [23]


> Бакук ©   (18.12.07 10:45) [7]


Обращение к визуальным VCL-контролам в доп.потоке недопустимо.


oldman   (2007-12-18 10:49:00) [24]

Хотя бы две:
"Я процедура, я вызвалась, начала работу"
"Я закончила работу, результат такой-то, передаю его в программу"


oldman   (2007-12-18 10:48:00) [25]


> DLL найдена, процедура найдена. Не здесь ошибка.


Для проверки вставь еще сигнальные мессы в тело процедуры.
Виснет-то либо прога во время вызова/получения результата,
либо сама процедура.


Бакук   (2007-12-18 10:45:00) [26]

> [6] oldman ©   (18.12.07 10:44)
>
> > Так я и интересуюсь, какие такие настройки могут повлиять
>
> > на запуск программы?
>
>
> Не на запуск программы, а на вызов функции из DLL.
> Например, путь к этой DLL :)))


DLL найдена, процедура найдена. Не здесь ошибка.


oldman   (2007-12-18 10:44:00) [27]


> Так я и интересуюсь, какие такие настройки могут повлиять
> на запуск программы?


Не на запуск программы, а на вызов функции из DLL.
Например, путь к этой DLL :)))


Бакук   (2007-12-18 10:42:00) [28]

> [3] Skyle ©   (18.12.07 10:36)
> Всё же добавь код, проверяющий правильность определения
> Func. И её исполнения. Вдруг где-то в строке
> FResult := Func(…)
> исключение

Разве при статическом методе программа не вывалится с ошибкой при запуске?
Вставил
try
ShowInformation('Запускл DLL');

// Func — функция из DLL. Статика
FResult := Func(…);


То же самое. Сообщение Запуск DLLи замер


> Делаем однозначный вывод:
> Если программа одна, DLL одна, значит либо ошибка в настройках,
> либо в 17-й строке…

Так я и интересуюсь, какие такие настройки могут повлиять на запуск программы?


oldman   (2007-12-18 10:37:00) [29]

Делаем однозначный вывод:
Если программа одна, DLL одна, значит либо ошибка в настройках, либо в 17-й строке...


Skyle   (2007-12-18 10:36:00) [30]

Всё же добавь код, проверяющий правильность определения Func. И её исполнения. Вдруг где-то в строке
FResult := Func(...)
исключение


Бакук   (2007-12-18 10:28:00) [31]

Нет, DLL лежит в папке с программой


oldman   (2007-12-18 10:26:00) [32]


> Компьютер удаленный


А DLL на нем есть, или он с твоего по сетке тянет?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо