![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
DLL и поток
Бакук © (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 на нем есть, или он с твоего по сетке тянет?