Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.171 Beiträge
 
Delphi 12 Athens
 
#6

AW: TThread.synchronize atomar?

  Alt 18. Aug 2022, 17:20
Dort, wo du jetzt auf den Button klicken kannst, da könnte auch ein Synchronize rein kommen.

Text kopieren und im FormDesigner einer neuen VCL-Form ein beherztes Strg+V
Code:
object Timer1: TTimer
  OnTimer = Timer1Timer
  Left = 56
  Top = 24
end
object Button1: TButton
  Left = 40
  Top = 88
  Caption = 'Button1'
  TabOrder = 0
  OnClick = Button1Click
end
object Button2: TButton
  Left = 40
  Top = 128
  Caption = 'Button2'
  OnClick = Button2Click
end
object Memo1: TMemo
  Left = 160
  Top = 40
  Width = 345
  Height = 297
  ScrollBars = ssVertical
end
Timer und Buttons doppelt anklicken (oder den unteren Quellcode vorher in die PAS einfügen)
und die Funktionen mit folgendem ersetzen
Delphi-Quellcode:
var gutesC: Integer; // oder als Private in die Form

procedure TForm1.Button1Click(Sender: TObject);
begin
  Inc(gutesC);
  var C := gutesC;
  Memo1.Lines.Add('Button1-Start ' + C.ToString);
  for var i := 0 to 15 do begin
    Memo1.Lines.Add('Button ' + C.ToString + ' ' + i.ToString);
    Sleep(333);
    Application.ProcessMessages;
  end;
  Memo1.Lines.Add('Button1-Ende ' + C.ToString);
end;

var bösesI: Integer; // oder als Private in die Form
procedure TForm1.Button2Click(Sender: TObject);
begin
  Inc(gutesC);
  var C := gutesC;
  Memo1.Lines.Add('Button2-Start ' + C.ToString);
  repeat
    Inc(bösesI);
    Memo1.Lines.Add('Button ' + C.ToString + ' ' + bösesI.ToString);
    Sleep(333);
    Application.ProcessMessages;
  until bösesI mod 15 = 0;
  Memo1.Lines.Add('Button2-Ende ' + C.ToString);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Memo1.Lines.Add('Timer');
end;

Codes ab Delphi 10.irgendwas
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat