Einzelnen Beitrag anzeigen

Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.336 Beiträge
 
Delphi 11 Alexandria
 
#25

AW: Probleme mit Enter/LeaveCriticalSection

  Alt 21. Sep 2016, 20:15
Ich habe das nochmal ein wenig umgebaut.

Hier wird ProcessMessages 20 mal ausgeführt und dann 20 mal nicht mehr.
Dann wird der Timer ausgeschaltet und dadurch die ersten 20 Logs "nachgeholt".

(Anbei Projekt für XE3 + Exe)




EDIT:

Noch eine kleine Änderung:
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
var
  I: Integer;
  S: string;
begin
  if (Memo1.Lines.Count > 40) then
    Timer1.Enabled := False;
  inc(FCount);
  Memo1.Lines.Add(IntToStr(FCount) + ' ' + FormatDateTime('zzz', Now) + ': ');
  for I := 0 to 20 do
  begin
    Sleep(100);
    if Timer1.Enabled then
      S := '+'
    else
      S := '-';
    Memo1.Lines[Memo1.Lines.Count - 1] := Memo1.Lines[Memo1.Lines.Count - 1] + ' ' + IntToStr(Memo1.Lines.Count) + S +
      IntToStr(I);

    if (Memo1.Lines.Count < 20) then
      Application.ProcessMessages;

  end;
  dec(FCount);
end;
So sieht man, dass der Rest noch abgearbeitet wird, während der Timer schon deaktiviert ist.
Miniaturansicht angehängter Grafiken
testtimer.jpg  
Angehängte Dateien
Dateityp: zip TestTimer.zip (3,03 MB, 0x aufgerufen)
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)

Geändert von stahli (21. Sep 2016 um 20:25 Uhr)
  Mit Zitat antworten Zitat