AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Für jeden Tag eine Datei erzeugen

Ein Thema von Mirco · begonnen am 7. Jun 2006 · letzter Beitrag vom 16. Jun 2006
Antwort Antwort
Seite 3 von 4     123 4      
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#21

Re: Für jeden Tag eine Datei erzeugen

  Alt 12. Jun 2006, 07:59
Gut, dass die Uhrzeit nicht Namensbestandteil ist.

Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#22

Re: Für jeden Tag eine Datei erzeugen

  Alt 12. Jun 2006, 16:26
Zitat von scp:
...dürfte bei Dateinamen schwierig werden (.
Hai scp,
wenn Du meinen Demo-Code ansiehst wirst Du erkennen das:

Zitat von marabu:
Gut, dass die Uhrzeit nicht Namensbestandteil ist.

Grüße vom marabu
Ich gehe zu das der Code nicht zu 100% optimal ist. Aber ich denke das ich die wichtigsten Sprachelemente benutzt habe um damit zu zeigen was man, wie, in bestimmten Situationen machen kann?
Stephan B.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.135 Beiträge
 
Delphi 12 Athens
 
#23

Re: Für jeden Tag eine Datei erzeugen

  Alt 12. Jun 2006, 16:49
Für die letzte ariante ist nur diese eine Prozedur nötig ... nichts weiter.
Delphi-Quellcode:
procedure AddToLog(S: String);
var T: TextFile;
  FileName: String;
begin
  FileName := 'FilePrefix_' + FormatDateTime('yyyy-mm-dd', Now) + '.txt';
  AssignFile(T, FileName);
  If FileExists(FileName) Then Append(T) Else Rewrite(T);
  WriteLn(T, S);
  CloseFile(T);
  Memo1.Lines.Add(S);
  While Memo1.Lines.Count > 100 Then Memo1.Lines.Delete(0);
end;
Du brauchst also nur AddToLog(...), statt Memo1.Lines.Add(...); aufzurufen und der Timer ist dan auch nicht mehr nötig.

Es iwrd in dieser Prozedure ja mit WriteLn(T, S); der Text in die Datei geschrieben und per Memo1.Lines.Add(S); in das Memo.


If FileExists(FileName) Then Append(T) Else Rewrite(T); Zu APPEND und REWRITE findest du was in der OH, da aber APPEND fehlschlägt, wenn die Datei nicht existiert, wird in diesem Fall REWRITE verwendet ... getestet per FILEEXISTS.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Mirco

Registriert seit: 6. Mai 2006
71 Beiträge
 
#24

Re: Für jeden Tag eine Datei erzeugen

  Alt 14. Jun 2006, 09:00
Ich möchte nur nochmal Danke sagen für die WAHNSINN'S Unterstützung.
Mirco
Mirco Hallenga
  Mit Zitat antworten Zitat
Mirco

Registriert seit: 6. Mai 2006
71 Beiträge
 
#25

Re: Für jeden Tag eine Datei erzeugen

  Alt 16. Jun 2006, 15:17
Hallo...
ich hab noch eine Bitte.
Kann mir jemand diesen Quelltext kommentieren.
Ich würde gerne verstehen was da genau passiert.
Zum Beispiel würde ich gerne alle doppelten Zeilen aus der Textdatei entfernen.
Verwende dafür folgenden Source:
Delphi-Quellcode:
function doppeltweg(datei:string):longword;
var m1,m2:longword;
sl:TStringlist;
begin
sl:=TStringlist.Create;
sl.loadfromfile(datei);
m1:=sl.count;
sl.sorted:=true;
sl.loadfromfile(datei);
m2:=sl.count;
result:=m1-m2;
sl.savetofile(datei);
sl.free;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
doppeltweg('c:\test.txt');
end;
Nun weiß ich nicht welchen Dateinamen ich dem Code unten eingeben muss.
Unten steht ja
WriteToLog('c:\logs\log_', Edit1.Text, LastLog, ListBox1.Items);
und um die doppelten Zeilen wegzubekommen muss ich ja folgendes machen:
doppeltweg('c:\test.txt');




Delphi-Quellcode:
uses
  Math;

const
  myDateFormat = 'yyyy-mm-dd';
  myTimeFormat = 'HH:mm';

function LogFileName(const ABaseName: string; ADateTime: TDateTime): string;
begin
  Result := ABaseName + '_' + FormatDateTime(myDateFormat, ADateTime) + '.txt';
end;

procedure WriteToLog(const aLogBase, aLogText: string; aLastLog: TDateTime;
  aStrings: TStrings = NIL);
var
  LogName: string;
  Mode: Cardinal;
  LogFile: TFileStream;
  LogLine: string;
  LogTime: TDateTime;
begin
  LogTime := now;
  LogLine := FormatDateTime(Format('%s %s', [myDateFormat, myTimeFormat]), LogTime) +
    ' ' + aLogText;
  LogName := LogFileName(aLogBase, LogTime);
  ForceDirectories(ExtractFilePath(LogName));
  Mode := IfThen(FileExists(LogName), fmOpenWrite, fmCreate);
  LogFile := TFileStream.Create(LogName, Mode);
  try
    LogFile.Position := LogFile.Size;
    LogFile.Write(LogLine[1], Length(LogLine));
    LogFile.Write(sLineBreak, 2);
  finally
    LogFile.Free;
  end;
  if Assigned(aStrings) then
  begin
    if Trunc(LogTime) > Trunc(aLastLog) then
    begin
      aStrings.Clear;
    end;
    aStrings.Add(LogLine);
  end;
  aLastLog := LogTime;
end;

// Demo Aufruf
procedure TDemoForm.btn_testClick(Sender: TObject);
var
  LastLog : TDateTime;
begin
  WriteToLog('c:\logs\log_', Edit1.Text, LastLog, ListBox1.Items);
end;
Mirco Hallenga
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#26

Re: Für jeden Tag eine Datei erzeugen

  Alt 16. Jun 2006, 15:36
isch hab jetzt nicht alles gelesen, aber möchte hinzufügen, dass es bei mir eine Funktion MakeDString gibt, die erzeugt für den aktuellen Tag einen Namen, der z.B. so aussieht:

2006 (06) 16.Juni - TWS1 -ErrorMsg.txt

Für Logfiles sehr gut geeignet und für einen Menschen sehr gut lesebar, hat aber den Vorteil, dass die Dateien sortiert im Verzeichnis vorliegen.
Vielleicht nützt Dir das ja was.

Gruß
stoxx



Delphi-Quellcode:
function makeDstring : string;
var Y, M, D : word;
   st : string;
begin
decodeDate(now, Y, M, D);
result := inttostr(Y) + ' (' + Formatfloat('00', M) + ') ' + Formatfloat('00', D) + '.' ;
case M of
   1: st := 'Januar';
   2: st := 'Februar';
   3: st := 'März';
   4: st := 'April';
   5: st := 'Mai';
   6: st := 'Juni';
   7: st := 'Juli';
   8: st := 'August';
   9: st := 'September';
  10: st := 'Oktober';
  11: st := 'November';
  12: st := 'Dezember';
end; {ende case iMonat}

result := result + st;


end; // von MakeDString
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
Mirco

Registriert seit: 6. Mai 2006
71 Beiträge
 
#27

Re: Für jeden Tag eine Datei erzeugen

  Alt 16. Jun 2006, 15:49
Hallo stoxx
JA vielen Dank, ich habs auch schon integrieren können und das BESTE, ich habs auch verstanden.
Viele Grüße
Mirco
Mirco Hallenga
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#28

Re: Für jeden Tag eine Datei erzeugen

  Alt 16. Jun 2006, 15:54
Hallo,

warum nutzt ihr nicht die VCL-Routinen?

Delphi-Quellcode:
function makeDstring: string;
begin
  Result := FormatDateTime('yyyy (mm) dd.mmmm', Date);
end;
Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#29

Re: Für jeden Tag eine Datei erzeugen

  Alt 16. Jun 2006, 15:58
Zitat:
warum nutzt ihr nicht die VCL-Routinen?
das nächste mal
die Routine ist schon etwas älter
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.135 Beiträge
 
Delphi 12 Athens
 
#30

Re: Für jeden Tag eine Datei erzeugen

  Alt 16. Jun 2006, 16:00
Wie wäre es mit LogFileName, welche ja schon in WriteToLog verwendet wird?

Also
doppeltweg(LogFileName('c:\logs\log_', Now));
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:59 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