Форум: "Начинающим";
Текущий архив: 2008.09.14;
Скачать: [xml.tar.bz2];
Внизbeginthread Найти похожие ветки
← →
Res (2008-08-02 04:29) [0]Здравствуйте. Проблема в том что при создании потока в Label появляется всякая белебурда, вместо посылаемого значения.. подскажите в чем проблема
procedure thread(param:pointer);
var
command:^string;
smail:string;
begin
command:=param;
smail:=command^;
form1.Label1.Caption:=smail;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
smail:string;
id:LongWord;
begin
smail:="aaaa";
BeginThread(nil,0,Addr(thread),Addr(smail),0,id);
end;
Заранее благодарен.
← →
Riply © (2008-08-02 09:13) [1]Потому что ты не чукча-читатель :)
P.S.
1. На любом форуме есть статьи по работе с нитями.
2. У тебя есть исходники TThread
3. В Demos есть хороший пример по работе с нитями
4. И наконец существует MSDN
5. Про гугл уж я помалкиваю :)
Не... ты не удосужился никуда заглянуть хоть одним глазком, хотя бы ради интереса.
← →
Anatoly Podgoretsky © (2008-08-02 11:03) [2]До пунктов 1-5 еще рано, он не умеет работать с Паскалем, базовой теории не знает, что толку искать в статьях, если он в них ничего не поймет.
← →
Loginov Dmitry © (2008-08-02 12:50) [3]> подскажите в чем проблема
основная в том, что ты не понимаешь, что этот код делает.
1) Ты передаешь в BeginThread() адрес локальной переменной с ограниченным временем жизни. Это глупо, хотя возможно и прокатить в случае, когда строке присвоена константа (но в общем случае работать не будет).
2) Общащаешься к VCL из дополнительного потока. Этого делать НЕЛЬЗЯ!!! Используй для обращения к VCL SendMessage() либо TThread.Syncronize() ( http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1370 )
3) Что за танцы с бубном:command:=param;
smail:=command^;
?
4) Не мучай фукнцию BeginThread(). Изучи наконец класс TThread, примеров работы с ним - море. Заведи строковое поле, ему свою строку присваивай.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.09.14;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.059 c