Delphi-PRAXiS
Seite 3 von 4     123 4      

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)

DeddyH 20. Jul 2009 14:06

Re: Zeilenanzahl bei name.log Datei begrenzen
 
Wieso Fehlermeldungen? An der Methodensignatur ändert sich ja nichts.

aaaaaaaaaa_10 20. Jul 2009 14:10

Re: Zeilenanzahl bei name.log Datei begrenzen
 
Ich steh voll aufm Schlauch. Weiß net so richtig was ihr meint.. :pale:

DeddyH 20. Jul 2009 14:15

Re: Zeilenanzahl bei name.log Datei begrenzen
 
Es kann den anderen Programmen doch Wurscht sein, wie die Klasse intern arbeitet. Solange die Methoden aufrufkompatibel bleiben, sollte es auch keine Fehlermeldungen geben.

Luckie 20. Jul 2009 14:15

Re: Zeilenanzahl bei name.log Datei begrenzen
 
Delphi-Quellcode:
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;
Daraus sollst du machen:
Delphi-Quellcode:
procedure TLogFile.AddLine(Line: string);
var
  sl: TStringList;
begin
  sl := TStringList.Create;
  ...;
  ...;
  ...;
end;
Die anderen programme, die die Klasse benutzen bekommen doch gar nicht mit, dass sich innerhalb der Methode was am Quellcode geändert hat.

pertzschc 20. Jul 2009 14:16

Re: Zeilenanzahl bei name.log Datei begrenzen
 
Delphi-Quellcode:
procedure TLogFile.AddLine(Line: string);
var
  LogFileList : TStringList;
  Zeile: String;
begin
  LogFileList := TStringList.Create;
  try
    LogFileList.LoadFromFile(FFileName);
    // hier eine while-schleife, solange LogFileList.Count > 999
    // innerhalb der schleife immer LogFileList.Delete(0); damit wird oberstes zeile gelöscht.
    // danach hat das file im speicher 999 zeilen und die 1000. zeile kann hinzugefügt werden
    Zeile := FormatDateTime('c.zzz - ', Now)+Line;
    LogFileList.Append(Zeile);
    LogFileList.SaveToFile(FFileName);
  finally
    LogFileList.Free;
  end;
end;

aaaaaaaaaa_10 20. Jul 2009 14:27

Re: Zeilenanzahl bei name.log Datei begrenzen
 
Das Problem ist auf das TLogFile greifen verschiedene Programm zu, das eine darf 1000 zeilen haben und das andere nur 300.

DeddyH 20. Jul 2009 14:27

Re: Zeilenanzahl bei name.log Datei begrenzen
 
Dann führ doch eine Property "MaxLines" oder so ein.

Aphton 20. Jul 2009 14:30

Re: Zeilenanzahl bei name.log Datei begrenzen
 
Ich bin mal so großzügig ...

Delphi-Quellcode:
type
  TLogFile = class
  private
  // ...
    FMaxLines: Cardinal; // diese variable dann irgendwo im Code setzen - bsp 1000 ... in deinem Fall ...
  public
  // ...
    property MaxLines: Cardinal Read FMaxLines Write FMaxLines;
  end;


procedure TLogFile.AddLine( Line: String );
begin
  with TStringList.Create do
  begin
    try
      LoadFromFile( FFileName );
      while Count > (MaxLines-1) do
        Delete(0);
      Add( FormatDateTime('c.zzz - ', Now)+Line );
      SaveToFile( FFileName );
    finally
      Free;
    end;
  end;
end;

aaaaaaaaaa_10 20. Jul 2009 14:41

Re: Zeilenanzahl bei name.log Datei begrenzen
 
Setze ich sie in meinem Programm, das nur 1000 zeilen haben soll auf
Delphi-Quellcode:
logFile.FMaxLines := 1000;
Sagt er mir undefinierter Bezeichner FMaxLines

Irgendwie klappt heute gar nix.. Zum glück habt ihr geduld

hoika 20. Jul 2009 14:44

Re: Zeilenanzahl bei name.log Datei begrenzen
 
Hallo,

public ist MaxLines, nicht FMaxLines.


Heiko


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:11 Uhr.
Seite 3 von 4     123 4      

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