Textdatei rückwärts in String einlesen
-
geht sowas?
Ich bin bis jetzt kläglich gescheitert ...
Hier mein Versuch:FILE *in = fopen((Ordner+MyMessages[i].ICQ+".log").c_str(), "rb"); char buf; long j = -1; while (!feof(in)) // macht keinen Sinn aber egal { fseek(in, j--, SEEK_END); fread(&buf, 1, 1, in); Text = AnsiString(buf) + Text; } fclose(in);
Vielen Dank!
-
Abgesehen davon das es kein C++ ist , erst recht kein C++/CLI dürfte es effektiver sein, die Datei einzulesen und im Speicher dann umzudrehen als den Dateizeiger ständig zu bewegen.
-
Das Problem ist ja, dass die Textdatei theoretisch unendlich lang ist und ich nur die letzten 100 Zeichen brauche. Aber die Gesammte Textdatei einzulesen dauert zu lange und die Funktion fgetc() funktioniert nur "vorwärts".
Die andere Variante, die ich sah, war halt das mit fseek() zu machen. Das Problem ist nur, dass die Textdatei im Textformat vorliegt und da die Funktion fseek() binär arbeitet Probleme bei Sonderzeichen oder Umlauten entstehen.Vielen Dank!
-
ein ü ist genauso 8 bit groß wie ein u
Du k annst ja auch 2oo Zeichen vor Ende der Datei einlesen, diese umdrehen und dann analysieren.
-
und wie mach ich das?
Den gedanken hatte ich ja schon ... habs aber leider nicht hinbekommen....
-
ohje mit C kenn ich mich nicht mehr richtig aus.
Du hast ja den Parameter der die Bytes angibt und der zweite Parameter ist ja die Reltion zur Positoin.
In Pseudocode schaut das so aus:
fseek(fh,100,end);
und dann normal einlesen. (Möge es mal jemand ins ANSI C verschieben, da wird sicherlich kompetenter geholfen.)
-
Knuddlbaer schrieb:
(Möge es mal jemand ins ANSI C verschieben, da wird sicherlich kompetenter geholfen.)
hmm... ich weiß zwar auch nicht so recht, was es ist -- aber c ist es definitiv nicht.
Thomas_ schrieb:
(Ordner+MyMessages[i].ICQ+".log").c_str()
ist es vielleicht code von einem c-programmierer, der kein c++ kann und c++/cli (deshalb hier gepostet, AnsiString deutet evtl. auch darauf hin) benutzen will? auf jeden fall übelst.
-
fopen etc deutet auf C hin und AnsiString dürfte zum Borland Compiler gehören.
-
Ich denke schon, dass ich nach 3 Jahren Infounterricht etwas vom programmieren verstehe.
Es handelt sich hir tatsächlich um ein Codeausschnit aus einem mit dem Borland C++ Builder geschriebenen Programm.
Da ich aber davon ausging, dass dieses Problem nichts mit dem Borland Builder zu tun hat, habe ich meine Frage hier in dem C++/CLI Forum gepostet ... wenn das die falsche Anlaufstelle sein möge, so sei mir verziehen ...
Ewtl. wäre es besser, diese Frage ins Borland c++ Forum zu stellen ...
Vielen Dank!
-
Thomas_ schrieb:
Ich denke schon, dass ich nach 3 Jahren Infounterricht etwas vom programmieren verstehe.
na dann wirst du diese anfänger-aufgabe ja problemlos lösen können.
Da ich aber davon ausging, dass dieses Problem nichts mit dem Borland Builder zu tun hat, habe ich meine Frage hier in dem C++/CLI Forum gepostet ...
dein code ist c++ mit c vermischt und obendrauf dann noch irgendwelchen borland-spezifischen kram (oder anders gesagt: der quatsch, der einem heutzutage in der schule von inkompetenten lehrern als c++ verkauft wird). er hätte in die jeweiligen foren mehr oder weniger reingepasst, aber ausgerechnet hier passt er wirklich gar nicht hin.
-
Danke für deine destruktive Antwort ... bis auf die Beleidigung, hast du nichts geschrieben, was bekannt war!