![]() |
Zeilen in delphi
Hallo,
ich will ein Programm zur Erstellung einer Protokolldatei mit maximal 200 Zeilen, und Wenn 200-Zeilen erreicht sind, soll diese Datei umbenannt auf Datei(nummer).ext umbenannt werden aber ich weiß gar nicht was ich machen muss ich bin ja noch neu. wäre super wenn jemand mir helfen kann.
Code:
:cry:,
procedure TForm1.Button1Click(Sender: TObject);
begin close; end; procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin log('FormCloseQuery'); if MessageDlg ('Programm schließen?', mtConfirmation, [mbOk, mbCancel], 0) = mrCancel then CanClose:= False; end; procedure TForm1.Log(Text:string); var F : Textfile; Filename: String; DT: String; begin Filename := Extractfilepath(Application.ExeName) + 'Log.TXT'; Assignfile(f, filename); if FileExists(filename) then Append(f) else Rewrite(F); DT := formatDAteTime ('dd:mm:yyyy hh:mm:ss.zzz', now); WriteLn(f, DT,' : ', Text); CloseFile(f) |
AW: Zeilen in delphi
Hallo und Willkommen :love:
Zwei Fragen vorab:
Unabhängig von Frage 2 brauchst du in deiner TForm1 eine Variable die sich merkt wie viele Zeilen du schon geschrieben hast. Theoretisch könntest du bei jedem Aufruf von
Delphi-Quellcode:
durch die gesamte Datei spulen und die Zeilen zählen aber das wäre wirklich nicht das Richtige. Du brauchst eine Variable die du bei jedem Aufruf von
Log(Text:string)
Delphi-Quellcode:
hochzählst. Wenn der Wert bei 200 ist, dann weißt du dass es jetzt genug Zeilen sind und du eine neue Datei aufmachen musst.
Log(Text:string)
Das sähe ungefähr so aus:
Delphi-Quellcode:
Bis dahin verstanden?
type
TForm1 = class(TForm) (...) var numberOfLogLines: Integer; end; procedure TForm1.Log(Text: String); begin (...) numberOfLogLines := numberOfLogLines + 1; if(numberOfLogLines = 200) then begin (...) numberOfLogLines := 0; end; end; |
AW: Zeilen in delphi
Zitat:
Und wenn ich das hier sehe habe ich ein bisschen Angst, dass du in Python-Syntax schreibst.
Delphi-Quellcode:
und
Begin
Delphi-Quellcode:
sind sehr wichtig!
End
Drück mal in Delphi wenn du den Code vor dir hast STRG+D.
Delphi-Quellcode:
procedure TForm1.Log(Text:string);
var F : Textfile; Filename: String; DT: String; begin Filename := Extractfilepath(Application.ExeName) + 'Log.TXT'; Assignfile(f, filename); if FileExists(filename) then Append(f) else Rewrite(F); DT := formatDAteTime ('dd:mm:yyyy hh:mm:ss.zzz', now); WriteLn(f, DT,' : ', Text); CloseFile(f) |
AW: Zeilen in delphi
OK, 200 Zeilen ist NICHTS,
aber TStringList für ein großes Log, da würdest du dir keine Freude/Freunde mit machen. @Dolly Am Einfachsten ist natürlich eine Prüfung auf die Dateigröße, anstatt der Zeilenanzahl. Für die Zeilen mußt du dir entweder merken wieviele Zeilen drin sind, oder du mußt die Datei öffnen und die Zeilen zählen, also erstmal den Inhalt einlesen: * Zeilen einlesen und mitzählen (ReadLn, TStringList.Count, Length(TFile.ReadAllLines), ...) * oder als ein String/Stream und die Zeilenumbrüche zählen (z.B. Anzahl des Zeichens #10) ![]() AppendAllText AppendText + Write OpenText + Read ReadAllText ReadAllLines ... |
AW: Zeilen in delphi
Damit die Zahl der Logs nicht unendlich wächst, wäre vielleicht ein rollierendes Log auch ein weiter Schritt. Wenn du die Anwendung so kinfigurierst, dass Sie maximal X Logdateien verwaltet, dann fängst du wenn Datei X voll ist wieder an in Datei 1 zu schreiben.
|
AW: Zeilen in delphi
ich danke dir!!:|:thumb: @Der schöne Günther
ja nicht ganz aber durch den code wusste ich was du meintest. vielleicht habe ich auch nicht gut erklärt so: ich habe eine Logdatei erstellt und es gibt LogMessage die in der Logdatei sind ( z.b. form destroy....) und wenn die logMessage in die Logdatei die zahl 200 erreicht haben soll das Programm eine neue logfatei machen und die alte umbennen auf (Nummer). und das soll immer eine logdatei erstellen bis 5 stück ich hoffe das ist gut erklärt allerdings bin auch Azubi also neu hier und in der Programmierung :hi: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:07 Uhr. |
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