Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.09.24;
Скачать: CL | DM;

Вниз

Параметр для потока   Найти похожие ветки 

 
Sam Stone ©   (2006-09-02 16:38) [0]

имеем такой код:
function Q(var p:pointer):dword;
var T:PSomeStruct;//указатель на запись
begin
 T:=p;
....
//делаем какую-то работу, юзая Т
end;

procedure TForm1.Button1Click(Sender: TObject);
var T:PSomeStruct;
    id:cardinal;
begin
 New(T);
 T.Field1:=SomeValue;
 BeginThread(nil,0,@Q,@T,0,id);
end;

Процедура Button1Click завершается до того как произойдет присваивание T:=p в функции Q и вываливается AV.
Какими методами можно дождаться этого присваивания (объявление глобальной переменной не рассматриваем)? Со Sleep(0) проходит, но корректно ли это?


 
Loginov Dmitry ©   (2006-09-02 16:44) [1]

> Со Sleep(0) проходит, но корректно ли это?


Не факт.

Жди, когда поток сам сообщит, что данные приняты.
Используй
SetEvent(),
WaitForSingleObject(), и т.п.


 
Sam Stone ©   (2006-09-02 16:56) [2]

Ясно. Спасибо.


 
isasa ©   (2006-09-02 19:18) [3]

А продлить время жизни переменной? Например, сделать ее глобальной, или полем формы приложения(TForm1)? И не делать себе трудностей.


 
DiamondShark ©   (2006-09-02 20:32) [4]


> ,@T

Собаку убрать.


 
DiamondShark ©   (2006-09-02 20:33) [5]


> function Q(var p:pointer):

и var тоже


 
Sam Stone ©   (2006-09-02 23:02) [6]


> isasa ©   (02.09.06 19:18) [3]
</I

> объявление глобальной переменной не рассматриваем

Потому что был интересен момент именно с локальной переменной
А еще лечилось с помощью [5] :)



Страницы: 1 вся ветка

Текущий архив: 2006.09.24;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.039 c
15-1156957163
Chort
2006-08-30 20:59
2006.09.24
Проблема с Рабочим столом!


3-1153731306
Barsky
2006-07-24 12:55
2006.09.24
Delphy и Access


4-1148375787
Stanislav
2006-05-23 13:16
2006.09.24
Запуск приложения от имени Администратора


1-1155201757
DelphiLexx
2006-08-10 13:22
2006.09.24
Проблемы с OnCalcFields


15-1157027349
Сергей М.
2006-08-31 16:29
2006.09.24
Кто-нть инсталлил MacOS x86 ? Ей чего надо - свободный раздел ?