Хочу заменить в программе класс TThread на стандартные фунции BeginThread и EndThread. Вот так кусок кода выглядел на TThread : Code: ... for i:=1 to thr do begin for j:=0 to source.Count -1 do begin a[i]:=TNewThread.Create(true); a[i].FreeOnTerminate:=true; a[i].Priority:=tpLOWEst; a[i].LoginTH:=copyLogin(Source.Strings[j]); a[i].passTH:=copyPass(Source.Strings[j]); a[i].Resume; application.ProcessMessages; if Application.Terminated then break; if stop then begin ... end; end; ... end; Пробовал различными способами, никак. Если один поток, то это будет выглядеть так : Code: ... type PInfo=TInfo TInfo=record login, pass: string; end; ... function xz(info:PInfo); begin try ... finally Dispose(Info); end; procedure execute; var Info: PInfo; hThread: integer; Dummy: DWORD: begin New(Info); Info.Login:='login'; Info.Pass:='pass'; hThread:=BeginThread(nil, 0, @xz, Info, 0, Dummy); ... end; И всё работает отлично. Но как организовать работу в несколько потоков, незнаю.
дык думать то надо надо организовать массив делай так Code: function xz(info:PInfo); begin try ... finally Dispose(Info); ExitThread(0); END; //!!!!!!!!!! end; var Info: PInfo; thID,i : DWORD; Threads : Array [1..n] of DWORD; begin for i := 1 to n do begin New(Info); Info.Login:='login'; Info.Pass:='pass'; Threads[i] := CreateThread(nil, 0, @xz, Info, 0, thID); end; end; а вообще если для себя пишешь то можно не влезать в этот гемор, а пользоваться уже готовыми классами, если ты конечно не извращенец который ради того чтобы убрать из кода лишнюю переменную извратить код по самое не могу.
Спасибо, про ошибки в коде сори, на коленке писал. И там ещё должна быть не ф-я xz, а процедура). Ты про TThread? Гумно это, хоть там и всё проще гораздо. Теперь нужно организовать двойной цикл типа : Code: for i:=1 to thr do begin for j:=0 to source.Count -1 do begin При TThread это легко, а c beginthread что-то никак. Напиши, пожалуйста,, если знаешь, как.