Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Zeilenanzahl bei name.log Datei begrenzen (https://www.delphipraxis.net/137265-zeilenanzahl-bei-name-log-datei-begrenzen.html)

himitsu 17. Jul 2009 10:58

Re: Zeilenanzahl bei name.log Datei begrenzen
 
Wenn die Delphiversion Class-Helper unterstützt, dann ginge sowas, für alle Nachfahren von TStrings:
Delphi-Quellcode:
Type TStringsAddHelper = Class Helper for TStrings
    Function TruncedAdd(Const S: String; MaxLines: Integer): Integer;
  End;

Function TStringsAddHelper.TruncedAdd(Const S: String; MaxLines: Integer): Integer;
  Begin
    If MaxLines > 0 Then
      While Count >= MaxLines do Delete(0);
    Result := Add(S);
  End;
z.B. maximal 1000 Zeilen:
Delphi-Quellcode:
SL := TStringList.Create;
SL.TruncedAdd('string', 1000);

// oder
Memo1.Lines.TruncedAdd('string', 1000);

aaaaaaaaaa_10 20. Jul 2009 13:51

Re: Zeilenanzahl bei name.log Datei begrenzen
 
Also LogFile ist vorgegeben als TLogFile. Da hab ich auch nicht die Wahl daraus ne StringList zu machen.
Wie lösche ich also eine Zeile aus nem TLogFile?

DeddyH 20. Jul 2009 13:54

Re: Zeilenanzahl bei name.log Datei begrenzen
 
Was ist denn TLogFile für eine Klasse? Mein D2007 kennt die zummindest nicht.

aaaaaaaaaa_10 20. Jul 2009 13:55

Re: Zeilenanzahl bei name.log Datei begrenzen
 
Was von meinem Vorgänger

Delphi-Quellcode:
type
  TLogFile = class(TObject)
  private
     FFileName: String;
    FLogSize: Integer;
    FAppLog: Boolean;
  public
      constructor Create(FileName: string; LogSize: integer; AppLog: boolean);
    destructor Destroy; override;
      procedure AddLine(Line: string);
      property FileName: string read FFileName;
  end;

Aphton 20. Jul 2009 13:57

Re: Zeilenanzahl bei name.log Datei begrenzen
 
Wo werden die Lines denn gespeichert ? Also ich kann kein Array / keine Liste / oder sonstiges im Private Bereich sehen...

MfG

DeddyH 20. Jul 2009 13:58

Re: Zeilenanzahl bei name.log Datei begrenzen
 
Das sind aber etwas zu wenig Infos, als dass man nun einen gescheiten Rat geben könnte. Vermutlich werden in der Klasse die Strings ja auch in einer Liste verwaltet, in dem Stück Code ist davon aber nichts zu sehen.

aaaaaaaaaa_10 20. Jul 2009 14:00

Re: Zeilenanzahl bei name.log Datei begrenzen
 
Delphi-Quellcode:
constructor TLogFile.Create(FileName: string; LogSize: integer;
  AppLog: boolean);
begin
   FFileName := FileName;
  FLogSize := LogSize;
  FAppLog := AppLog;
end;

procedure TLogFile.AddLine(Line: string);
var
   F: TextFile;
  Zeile: String;
begin
   FileMode := fmOpenReadWrite;
   AssignFile(F, FFileName);
  try
      Append(F);
  except
     Rewrite(F);
  end;
  Zeile := FormatDateTime('c.zzz - ', Now)+Line;
  WriteLn(F, Zeile);
  CloseFile(F);
end;

DeddyH 20. Jul 2009 14:03

Re: Zeilenanzahl bei name.log Datei begrenzen
 
Ahja, es wird also direkt in die Datei geschrieben. Aber Du könntest die AddLine-Methode ja dahingehend ändern, dass diese eine TStringlist verwendet.

aaaaaaaaaa_10 20. Jul 2009 14:03

Re: Zeilenanzahl bei name.log Datei begrenzen
 
Und dann? Hab ich überall Fehlermeldungen, weil die Uni Logfile.pas von vielen anderen Units benutzt wird..

pertzschc 20. Jul 2009 14:05

Re: Zeilenanzahl bei name.log Datei begrenzen
 
Zitat:

Zitat von aaaaaaaaaa_10
Und dann?

Zitat:

Zitat von pertzschc
Wenn es eine Zeilenbasierte Datei mit Stringinhalten ist, könntest Du StringList verwenden.
Einlesen, Count prüfen, jeweils erste Zeilen [0,1,..] löschen bis Count <=1000, dann wieder in die Datei speichern.

Du liest nicht so richtig, was wir Dir schreiben - oder?

Gruß,
Christoph


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:48 Uhr.
Seite 2 von 4     12 34      

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