PHP: procedure TForm1.Button1Click(Sender: TObject); var i:integer; Threads: array of MultiThread; begin Work:=true; Acc:=-1; CurAcc:=0; SetLength(Threads, Edit1.Text); for i := 0 to StrToInt(Edit1.Text) - 1 do begin Threads[i] := MultiThread.Create(true); Threads[i].FreeOnTerminate := True; Threads[i].Resume; end; end;
Не помогает, так кажется как будто только последний поток работает, остальные пробегают мимо... Все работает точно также...
При клике значение true, потом условие PHP: if Acc<Form1.Memo1.Lines.Count then CurAcc:=Acc else Work:=false; Становиться false только тогда когда закончатся строчки из Memo1.
переписывайте все. в поток выносите только то что требуется. а проверки и весь мусор в основной код. да и логирование пусть и элементарное очень вам поможет в будущем.
как сделать чтобы в этом код1 вместо Text.txt было имя только что созданного текстового файла кодом 2 код1 procedure TForm1.BitBtn1Click(Sender: TObject); begin // открываем блокнот ShellExecute(Handle, 'open', 'notepad.exe', nil, nil, SW_RESTORE); sleep(500);// маленько тормознем h:= FindWindow('Notepad',nil);// находим дескриптор блокнота h1:= FindwindowEx(h, 0, 'Edit', nil);// находим дескриптор поля ввода блокнота - Edit if h1 <> 0 then // если найден дескриптор begin AssignFile(f, 'Text.txt'); // открываем файл с текстом Reset(f); Timer1.Interval:= StrtoInt(Edit1.Text); Timer1.Enabled:= True;//- врубаем таймер end; end; Sidapas (21:15:56 27/02/2011) код2procedure TForm1.Button1Click(Sender: TObject); var myDate : TDateTime; myYear, myMonth, myDay : Word; myHour, myMin, mySec, myMilli : Word; begin myDate := now; DecodeDateTime(myDate, myYear, myMonth, myDay, myHour, myMin, mySec, myMilli); Memo1.Lines.SaveToFile(IntToStr(myYear)+'_'+IntToStr(myMonth)+ '_'+IntToStr(myDay)+'_'+IntToStr(myHour)+'_'+IntToStr(myMin)+'_'+IntToStr(mySec)+'.txt'); end;
sidapas23, не проще так сделать? О_о Code: procedure TForm1.Button1Click(Sender: TObject); begin Memo1.Lines.SaveToFile(FormatDateTime('yyyy_mm_dd_hh_nn_ss', Now) + '.txt'); end;
Ну наверное просто переменные надо поставить в другое место А именно эти: " myDate : TDateTime; myYear, myMonth, myDay : Word; myHour, myMin, mySec, myMilli : Word; "
Code: type TMyThread = class (TThread) private FParam: integer; FOnDone: TNotifiEvent; //создадим собитие protected procedure Execute; override; public Constructor Create(const Param:integer); //overload; //не помню нада ли... property Param:integer read FParam write FParam; property OnDone:TNotifiEvent read FOnDone write FOnDone; end; [B]implementation[/B] constructor TMyThread. Create(const Param:integer); begin inherited Create(false); FParam:=Param; FreeOnTerminated:=true; end; procedure TMyThread.Execute; var IdHttp:TIdHttp; begin IdHttp:=TidHttp.Create; try //... //use idhttp //... finally IdHttp.Free; If Assigned(FOnDone) then //наше собитие (можно использовать для возрата инфи) Synhronize(FOnDone(Self)); end; end; procedure MyProcForCreateThread; var MyThread:TMуThread; begin with TMyThread.Create(true) do //так begin //true - создань и усепить Param:=54; OnDone:=MyOnDoneProc; Start; end; with TMyThread.Create(54) do//или так OnDone:=MyOnDoneProc; //или так MyThread:=TMyThread.Create(true); MyThread.Param:=54; MyThread.OnDone:=MyOnDoneProc; MyThread.Start; end; procedure MyOnDoneProc(Sender:TObject); begin Dec(ThreadCount); //собития можно использовать для контроля количества потоков ShowMessage(IntToStr(TMyThread(Sender).Param)); //или для возрата параметров end; ясн?)
попробуй Code: Reg.RootKey:=HKEY_LOCAL_MACHINE; Reg.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Run',true); Reg.WriteString('lolo','C:\e.exe'); Reg.CloseKey; Reg.Free;
Helium, вот тебе пример записи разных данных в реестр: Code: procedure RegWrite; var reg: TRegistry; Bin: array[0..10] of Byte; I: Integer; begin for i:= 0 to High(Bin) do Bin[i]:= i; reg:= TRegistry.Create(KEY_ALL_ACCESS); with Reg do try RootKey:= HKEY_CURRENT_USER; OpenKey('Software\my_sub_key', True); WriteInteger('Integer', I); WriteDate('Date', Now); WriteBinaryData('BinData', Bin, SizeOf(Bin)); WriteString('String', 'String'); WriteBool('Bool',True); Reg.WriteFloat('Float',2.366); CloseKey; finally Free; end; end;
ну а кто Reg будет инициализировать, бабушка из соседнего подъезда? Code: reg:= TRegistry.Create(KEY_ALL_ACCESS);