Protokoll in Textdatei schreiben mit StringListe.



  • ach ja ne Frage an alle ist das So ok. ?

    const AnsiString FileName = "test.log";
    TStringList *TestListe = new TStringList;
    AnsiString t=DateTimeToStr(Now());
    
    TestListe->LoadFromFile(FileName);
    
    TestListe->Add(t+ "\t" +LbProg->Caption+ "\t" +"Prüfergebnis:"+" "+g_ipCS_StoC.dMean+"\t"+"Grenzwert MIN:"+" "+g_sDataSet.sNominals.dMin+"\t"+"Grenzwert MAX:"+" "+g_sDataSet.sNominals.dMax);
    
    TestListe->SaveToFile(FileName);
    


  • Musst das nicht du wissen? 🙂

    Abgesehen vom fehlenden delete, den fehlenden Klammern bei der StringListdeklaration, dem relativen Dateipfad und dem miesen Variablennamen sollte es schon passen...



  • Plemplem schrieb:

    Musst das nicht du wissen? 🙂

    Da man das ziemlich fies interpretieren kann: Ich wollte nur darauf hinweisen, dass du ja wohl am ehesten weißt, wie der Text in die Datei kommt.



  • Plemplem schrieb:

    Plemplem schrieb:

    Musst das nicht du wissen? 🙂

    Da man das ziemlich fies interpretieren kann: Ich wollte nur darauf hinweisen, dass du ja wohl am ehesten weißt, wie der Text in die Datei kommt.

    nene du hast ja schon Recht eigentlich wollte ich ja nur das hören:

    Abgesehen vom fehlenden delete, den fehlenden Klammern bei der StringListdeklaration, dem relativen Dateipfad und dem miesen Variablennamen sollte es schon passen...

    hmmm das delete hast recht.. vergessen ist jetzt auch da aber welche Klammer bei der StringList deklaration.. ???

    ach ja und hast du ne idee wie ich das mache das das logfile in einem ordner Lodfiles gespeichert wird ? // da wo die Exe datei ist antürlich...

    const AnsiString FileName = "\\LogFiles\\test.log"; // Falsch
    


  • TStringList *Wieauchimmer = new TStringList();
    

    Nur weils auch ohne die Klammern geht, heißt es nicht, dass es richtig ist. (Stand hier irgend wo mal im Forum.)

    Nach delete und Klammer ließ wohl die Konzentration nach, oder? 😉 Speziell die Sache mit dem relativen Dateipfad... hättest du einen.. äh... bestimmten(blöd - Namen vergessen. Wollte doch nur einmal klug sein... 😃 ) stattdessen genommen, wäre das mit dem Ordner auch leichter. Sofern er schon existiert. Automatisch erstellt wird der soweit ich weiß nicht. Aber dafür gibts ja auch nen Befehl.

    Und das mit dem blöden Variablennamen lassen wir mal unter den Tisch fallen. 🙂

    Das Problem mit den großen Dateien hast du doch jetzt immer noch... macht das dir jetzt nichts mehr aus?



  • Nein Nein da hast du shcon Recht das Problem ist immer noch da ich überlege das so zu lösen, dass er jeden Tag ein neues Logfile schreibt schreibt ne idee wie ich sowas machen kann oder besser noch irgend eine andere Lösung.



  • |23| schrieb:

    ach ja und hast du ne idee wie ich das mache das das logfile in einem ordner Lodfiles gespeichert wird ? // da wo die Exe datei ist antürlich...

    const AnsiString FileName = "\\LogFiles\\test.log"; // Falsch
    

    versuchs mal mit

    const AnsiString FileName = ExtractFilePath(Application->ExeName) + "\\LogFiles\\test.log";
    

    wenn du jeden Tag eine neue Datei machen willst solltest du jeden Tag einen neuen Dateinamen festlegen, z.B. wie Joe_M. als Beispiel schrieb: 20040914.log (JahrMonatTag.log)

    die Frage ist natürlich erstmal:
    Startest du das Programm jeden Tag neu oder läuft das dauerhaft?

    im ersten Fall kannst du einfach beim Starten eine neu Log-Date erstellen
    im zweiten Fall könnte man das mit nem Timer machen, aber dazu gabs schon nen ähnlichen Thread

    Grüße
    Linnea



  • Ich habe es bei mir so gemacht, dass ich vor dem Schreiben die Größe der Zieldatei auslese. Wenn die Datei größer als 500KB ist, benenne ich sie um. Wenn das Programm dann zum Schreiben kommt, erstellt er dann eine neue Datei.



  • wie kann ich die Ziel größe ermitteln ?



  • Zielgröße? Ach so.

    Du hast es ja leicht: Du kannst ja einfach die Länge vom StringListentext vom Einlesen nehmen. Ansonsten gibts ja noch die Suchfunktion... 🙂



  • gibt es ne möglichkeit wenn die Datei nicht da ist das er Sie einfach erstellt ?

    den :

    AnsiString FileName = ExtractFilePath(Application->ExeName) + "\\LogFiles\\test4.log";
    

    geht nur wenn die Datei in dem Ordner ist.



  • Bei SaveToFile() erstellt er die Datei neu, wenn sie nicht da ist... Sollte mich doch sehr wundern, wenn es bei dir anders wäre.



  • Plemplem schrieb:

    Zielgröße? Ach so.

    Du hast es ja leicht: Du kannst ja einfach die Länge vom StringListentext vom Einlesen nehmen. Ansonsten gibts ja noch die Suchfunktion... 🙂

    das hört sich im ersten Moment gut an hab es umgesetzt und hab das problem nun wenn die 2 datei da ist wird die ja ned mehr getestet ob sie voll ist es wird immer auf die erste geguckt...

    ggrrrrr



  • Deswegen solltest du ja die große Datei umbenennen...



  • Wie kann ich den Dateinamen das Aktuelle Datum zuweißen ?



  • Now() gibt einen TDateTime-Wert zurück. Mit FormatDateTime oder so kannste dann die Werte in nen String packen, aus dem du dann nen Dateinamen machen kannst.


Anmelden zum Antworten