Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi zeit vor den log (https://www.delphipraxis.net/29252-zeit-vor-den-log.html)

glkgereon 6. Sep 2004 16:59


zeit vor den log
 
hi

ich will mir einen log basteln, hier erst ma mein code:

Delphi-Quellcode:
procedure TForm1.memo_LogChange(Sender: TObject);
var a:integer;
begin
a:=memo_log.Lines.Count-1;
memo_log.Lines[a]:=datetimetostr(now)+':  '+memo_log.Lines[a];
end;
also einfach ne memo, wo ich im onchange-ereignis die zeit davor tue

nun wird aber gechanget, er setzt datum davor, und dann isses ja wieder anders und er machts nochmal und so weiter bis zu nem stack overflow (also ne endlosschleife: ändern -> onchange -> ändern -> onchange...)

kann man das verhindern?

fkerber 6. Sep 2004 17:01

Re: zeit vor den log
 
Hi!

Nimm dir eine globale Variable, meinetwegen aender. Dann prüfst du ob aender=true, wenn ja, dann machst du es, dann setzt du aender grad auf false.
Und dann gehst du in nem Timer hin (z.b. alle 5 Sekunden) und setzt aender wieder auf true.

Ciao Frederic

MrKnogge 6. Sep 2004 17:03

Re: zeit vor den log
 
setz doch schon beim reinschreiben ins memo die zeit davor, so mach ichs auch.

gruss

glkgereon 6. Sep 2004 17:07

Re: zeit vor den log
 
ich hab aber keinen bock jetzt an 10 verschiedenen stellen das zu machen

ausserdem fänd ichs einfach besser und man könnt mal ne compo drauss machen....

himitsu 6. Sep 2004 17:29

Re: zeit vor den log
 
du könntest zwar 'ne Globale Variable verwenden
Delphi-Quellcode:
var LogChange: Boolean = False;

procedure TForm1.memo_LogChange(Sender: TObject);
var a:integer;
begin
  If LogChange Then Exit;
  LogChange := True;
  a:=memo_log.Lines.Count-1;
  memo_log.Lines[a]:=datetimetostr(now)+':  '+memo_log.Lines[a];
  LogChange := False;
end;
, oder etwas vom Memo misshandeln
Delphi-Quellcode:
procedure TForm1.memo_LogChange(Sender: TObject);
var a:integer;
begin
  If memo_log.Tag <> 0 Then Exit;
  memo_log.Tag := 1;
  a:=memo_log.Lines.Count-1;
  memo_log.Lines[a]:=datetimetostr(now)+':  '+memo_log.Lines[a];
  memo_log.Tag := 0;
end;
und somit dieses verhindern, oder du machst 'ne Prozedure
Delphi-Quellcode:
Procedure AddLog(S: String);
  Begin
    memo_log.Lines.Add(datetimetostr(now) + ':  ' + S;
  End;
und verwendest diese überall, wo ein Ereignis eingetragen wird.

glkgereon 6. Sep 2004 17:39

Re: zeit vor den log
 
danke, funzt

wozu is denn dieses tag?

himitsu 6. Sep 2004 17:58

Re: zeit vor den log
 
aus der OH

Zitat:

Zitat von Die OH
Die Eigenschaft Tag speichert eine Ganzzahl als Teil der Komponente.

Delphi-Syntax:

property Tag: Longint;

C++ Syntax:

__property int Tag = {read=FTag, write=FTag, default=0};

Beschreibung

Tag hat keine vordefinierte Bedeutung. Die Eigenschaft Tag steht zur freien Benutzung durch Entwickler zur Verfügung. Sie können in dieser Eigenschaft zusätzliche Informationen über die Komponente in Form einer Ganzzahl speichern oder die Eigenschaft in einen 32-Bit-Wert, wie z.B. in eine Komponentenreferenz oder einen Zeiger, umgewandelt werden.


Sharky 7. Sep 2004 06:37

Re: zeit vor den log
 
Zitat:

Zitat von glkbkk
...nun wird aber gechanget,....

Warum nicht einfach das .OnChange während der Änderung abschalten?
Delphi-Quellcode:
procedure TForm1.memo_logChange(Sender: TObject);
var
  onchange : TNotifyEvent;
  a : Integer;
begin
  onChange := (Sender As TMemo).OnChange; // "Merken" der Onchange-Procedure
  (Sender As TMemo).OnChange := nil; // OnChange abschalten
  a:=memo_log.Lines.Count-1;
  memo_log.Lines[a]:=datetimetostr(now)+':  '+memo_log.Lines[a];
  (Sender As TMemo).OnChange := onChange; // OnChange-Procedure wieder zuweisen.
end;

glkgereon 7. Sep 2004 19:55

Re: zeit vor den log
 
ginge auch..

bin aber froh dasses mit tag funzt :mrgreen:

trotzdem danke für die idee


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:20 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz