Problem beim Text einlesen. LoadFromFile



  • Joe_M. schrieb:

    Ungetestet und ohne Fehlerbehandlung:

    AnsiString asDatei = "cPlusplus.log";
    TMemoryStream* msDatei = new TMemoryStream(); // Stream erzeugen
    msDatei->LoadFromFile(asDatei);  // Datei in Stream lesen
    char* cBuffer = new char[msDatei->Size + 1]; // Puffer erzeugen
    setmem(cBuffer, msDatei->Size + 1, NULL); // Puffer initialisieren
    msDatei->Seek(0, soFromBeginning); // Stream auf Anfang setzen
    msDatei->Read(cBuffer, msDatei->Size);	// Stream in Puffer kopieren
    for (int i = 0; i < msDatei->Size; i++) // Alle NULLen durch Leerzeichen ersetzen
    	if (cBuffer[i] == 0x00)
    		cBuffer[i] = 0x20;
    Memo1->Text = AnsiString(cBuffer); // Puffer dem Memo zuweisen
    delete[] cBuffer; // Puffer freigeben
    delete msDatei;
    

    // Stream freigeben

    SUPER. 1A -Klasse - Vielen Dank es funktioniert! Alleine wäre ich darauf nie gekommen.
    Ich danke jeden hier!

    Ich liebe dieses Forum (L) 😃

    Und Warum ging das jetzt nicht direkt mit LoadFromFile? Wegen den Sonderzeichen?



  • inek68 schrieb:

    Und Warum ging das jetzt nicht direkt mit LoadFromFile? Wegen den Sonderzeichen?

    Ja, insbesondere wegen der NULL-Bytes in der Datei (und auch nur diese habe ich maskiert).



  • Diese paar Zeilen zaubern mir wieder mein lächerln ins Gesicht.

    Nur noch eine Frage, besteht die Möglichkeit, jetzt eventuell wo es eingeladen ist, die Datei vom MemoFeld1 in eine Stringliste zu laden.

    Möchte gerne mit String-Verarbeitungsmethoden arbeiten, deshalb.



  • Memo1->Lines ist vom Typ TStringList, also lassen sich auch alle Operationen darauf anwenden.
    Ansonsten einfach nur in der Zeile 'Memo1->Text = AnsiString(cBuffer);' das Memo1 durch den Namen der StringList ersetzen.



  • Ich kann nicht mehr! Das ist Super Genial, ich finde kein beschreibendes Wort für meine Gefühlslage.

    Nochmals VIELEN Dank an das Board und seine Mitglieder!



  • Kurze Frage habe ich noch!

    Gibt es eine ähnliche Funktion wie .eof(),nur für meine Stringlist, möchte eine Datei Filtern und solange noch Text vorhanden ist, soll die Schleife ihre Schleifen machen!



  • Zeilenweise lesen:

    for(int i=0; i<pStringList->Count; i++)
    {
      AnsiString str = pStringList->Strings[i];
      // ...
    }
    


  • es kommt eine Fehlermeldung:

    pStringList: undefiniertes Symbol.

    :S



  • Das ist jetzt nicht dein Ernst?!?



  • Killer-Kobold schrieb:

    Das ist jetzt nicht dein Ernst?!?

    Doch!



  • Dann lerne lieber erst einmal die C++-Grundlagen...



  • Killer-Kobold schrieb:

    Dann lerne lieber erst einmal die C++-Grundlagen...

    Wenn du es sagst!



  • Immer schön sachlich bleiben, und don't feed the trolls.

    inek: ein bisschen Eigeninitiative darf schon erwartet werden; was könnte "undefiniertes Symbol" wohl bedeuten!?



  • @Jansen: Sorry für das Mißverständnis, aber ich meine das definitiv ernst. Lies dir mal den ganzen Thread durch... Ich bin zu dem Schluß gekommen, dass er nicht mal in der Lage ist, einen simplen Variablennamen im Source anzupassen. Mir sagt das, dass die C++-Kenntnisse gegen NULL tendieren. Und ohne die Grundlagen zumindest ansatzweise zu kennen, sollte man sich nicht an der VCL versuchen, oder siehst Du das anders.

    Gruß KK



  • Ich denke eher, dass inek bei uns etwas verwöhnt wurde und inzwischen innerlich auf Komplettlösungen eingestellt ist, zum Nachteil eigener Denkprozesse. 😉

    Allerdings macht der Ton die Musik, und gerade in reiner Textform kann ein "nicht dein Ernst", ohne jede konkrete Bezugnahme auf eventuelle Fehler o.ä., leicht missverstanden werden.
    Also ruhig Kritik üben, aber möglichst mit zumindest einem Ansatz zur konkreten Problembehebung.



  • Jansen schrieb:

    Ich denke eher, dass inek bei uns etwas verwöhnt wurde und inzwischen innerlich auf Komplettlösungen eingestellt ist, zum Nachteil eigener Denkprozesse. 😉

    Nun gut, ich werde mich diesem wohlwollenden Fazit anschließen, in der Hoffnung, dass du recht hast.

    Und ja, du hast recht, der Ton war ein wenig schroff.

    Also auch ein sorry an inek68.
    Aber mir will einfach keine konstruktive Kritik einfallen, die nicht bereits die Lösung enthällt... Wirf bitte noch mal einen Blick auf deinen Code, rund um den Bereich, in dem du Th69s Code eingefügt hast. Eingentlich müsste dir etwas auffallen.

    Gruß KK



  • Killer-Kobold schrieb:

    Jansen schrieb:

    Ich denke eher, dass inek bei uns etwas verwöhnt wurde und inzwischen innerlich auf Komplettlösungen eingestellt ist, zum Nachteil eigener Denkprozesse. 😉

    Nun gut, ich werde mich diesem wohlwollenden Fazit anschließen, in der Hoffnung, dass du recht hast.

    Und ja, du hast recht, der Ton war ein wenig schroff.

    Also auch ein sorry an inek68.
    Aber mir will einfach keine konstruktive Kritik einfallen, die nicht bereits die Lösung enthällt... Wirf bitte noch mal einen Blick auf deinen Code, rund um den Bereich, in dem du Th69s Code eingefügt hast. Eingentlich müsste dir etwas auffallen.

    Gruß KK

    Was Jansen so weit geschrieben hat stimmt schon.
    Das war auch ein Fehler von mir, dass ich direkt ohne groß nachzudenken, das Problem gepostet habe.
    KK ich hab jetzt mein Grips etwas angestrengt und siehe da:

    TStringList* stlData = new TStringList;
    
    AnsiString slDataFile=C:\\...Pfaf halt.txt;
    stlData -> LoadFromFile(slDataFile);
    
    for(int i=0; i<stlData->Count; i++)
    {
      AnsiString str = stlData->Strings[i];
      // ...
    }
    

    funktioniert wunderbar.

    Nochmals vielen großen Dank an alle!



  • ^^ aber nicht vergessen die StringList wieder zu löschen 😉


Anmelden zum Antworten