TDateTime in .txt schreiben



  • Hallo zusammen!👋

    Wenn ich String verwende bekomme ich als Ergebnis?:

    Stelle:1	915f58c
    

    Wenn ich AnsiString wie im unten stehenden Code verwende bekomme ich:

    Stelle:1	11:51:45
    

    ... wenn &versuch[0] verwende bekomme ich eine Exception ohne Inhalt🤔Warum?

    try
    {
        int aktuelleStelle = 1;
        TDateTime zeitStempel;
        //String versuch = zeitStempel.CurrentTime();
        AnsiString versuch = zeitStempel.CurrentTime();
        ofstream logMyFile;
       if(logMyFile.is_open())
       {
        	logMyFile.close();
       }
       logMyFile.open("scout.txt");
       if(logMyFile.is_open())
       {
       	logMyFile<<"Stelle:"<<aktuelleStelle<<"\t"<<&versuch[1]<<std::endl;
       }
       if(logMyFile.is_open())
       {
       	logMyFile.close();
       }
    }
    catch(Exception &e)
    {
       Application->ShowException(&e);
    }
    


  • AnsiString hat die .c_str() Funktion, die einen nullterminierten char const* auf den Inhalt zurückgibt. Damit sollte

    logMyFile << versuch.c_str();
    

    gehen.



  • @DocShoe sagte in TDateTime in .txt schreiben:

    AnsiString hat die .c_str() Funktion, die einen nullterminierten char const* auf den Inhalt zurückgibt. Damit sollte

    logMyFile << versuch.c_str();
    

    gehen.

    yupp👍 sieht definitiv besser aus, dankeschön🙂
    zur ergänzung für Zeile 12:

    logMyFile.open("scout.txt",std::ios::app);
    


  • @1C0r3 sagte in TDateTime in .txt schreiben:

    ... wenn &versuch[0] verwende bekomme ich eine Exception ohne Inhalt🤔Warum?

    In Delphi ist die Indizierung von Strings 1-basiert, d.h. das erste Zeichen steht in versuch[1] und nicht inversuch[0]. Der Zugriff auf Index 0 ist damit ungültig und erzeugt einen Fehler. Das ist wohl eine Hinterlassenschaft von sehr viel früher, in Pascal stand an Index 0 die Länge des strings, der Inhalt folgt ab Index 1.



  • @DocShoe sagte in TDateTime in .txt schreiben:

    @1C0r3 sagte in TDateTime in .txt schreiben:

    ... wenn &versuch[0] verwende bekomme ich eine Exception ohne Inhalt🤔Warum?

    In Delphi ist die Indizierung von Strings 1-basiert, d.h. das erste Zeichen steht in versuch[1] und nicht inversuch[0]. Der Zugriff auf Index 0 ist damit ungültig und erzeugt einen Fehler. Das ist wohl eine Hinterlassenschaft von sehr viel früher, in Pascal stand an Index 0 die Länge des strings, der Inhalt folgt ab Index 1.

    Oh danke für die Info👍


Anmelden zum Antworten