file auslesen
-
Hallo,
ich möchte ein vorhandenes File öffnen
CString name = "kopien\\pfad.txt";
und den inhalt des files auslesen. Der inhalt besteht aus einem pfad mit dem dann weiter gearbeitet werden soll, also müsste ich den in einer variablen abspeichern oder??
char buf[1024]; // öffnen von namen zum lesen if (out_file.Open(name, CFile::modeRead)); { MessageBox("Hallo"); DWORD haha = out_file.GetLength(); out_file.Read(buf,haha); CString gaga; gaga = buf; MessageBox(gaga); }
leider öffnet er nicht name zum lesen,
ich habe mit einer messagebox getestet ob er in die schleife springt, macht er aber nicht.......
könnt ihr mir helfen das er den pfad ausliest und die schleife springt???
DAnke
-
Sicher, dass die Datei dort ist, wo du sie vermutest?
Mit relativen Pfadangaben wäre ich vorsichtig. Versuch es einfach mal mi einer totalen Pfadangabe, dann kannst du sicher sein, dass dein Code okay ist.
-
er ist sicher dort da ich ihn ja ausserhalb des progs öffnen kann.
Wie sieht den, zur errinerung, eine totale pfadangabe aus??
-
Servus,
tot. Pfad: C:\Test\FrissdieKatze\test.txt
Hellsgore
oh Sorry ich vergass in c natürlich:
C:\\Test\\FrissdieKatze\\test.txt
-
ähm da fällt mir nich was ein.
öffne doch mal die Datei bitte so:
CFileException cfeException; char buf[1024]; // öffnen von namen zum lesen if (out_file.Open(name, CFile::modeRead, &cfeException)); { MessageBox("Hallo"); DWORD haha = out_file.GetLength(); out_file.Read(buf,haha); CString gaga; gaga = buf; MessageBox(gaga); } //Debugge mal durch und schaue dir hier an der Stelle mal //cfeException an welchen Fehler er bringt. Dann guckste //in der MSDN unter GetLastError() -> Systemerrorcodes nach //welchen Fehler er liefert dann weisst du bescheid
mfg
Hellsgore
-
geht nicht,
passiert gar nichts
er springt ja erst gar nicht die anweisung....
-
ei marie dann machs mal so:
out_file.Open(name, CFile::modeRead, &cfeException); DWORD error = GetLastError(); //guck dir nun mal cfeException oder error an
mfg
Hellsgore
-
Welcher Befehl wird jetzt weggelassen? Im Moment scheint es die Open-Anweisung zu sein.
Zur Not debugge doch mal ganz geduldig mit F11. Das ist zwar nervig, aber in manchen Fällen hilfreich.
-
Hallo,
er springt nicht in diese anweisung, warum weis ich nicht, aber sie ist einfach nicht da für ihn....
die anweisung sieht jetzt so aus:
if (out_file.Open(name, CFile::modeRead, &cfeException)) { DWORD error = GetLastError(); MessageBox("Hallo"); DWORD haha = out_file.GetLength(); out_file.ReadString(buf,haha); CString gaga; gaga =buf; MessageBox(gaga); }
-
Jung mach doch sowas nicht:
if (out_file.Open(name, CFile::modeRead, &cfeException)) { DWORD error = GetLastError(); MessageBox("Hallo"); DWORD haha = out_file.GetLength(); out_file.ReadString(buf,haha); CString gaga; gaga =buf; MessageBox(gaga); }
machs so:
if (out_file.Open(name, CFile::modeRead, &cfeException)) { MessageBox("Hallo"); DWORD haha = out_file.GetLength(); out_file.ReadString(buf,haha); CString gaga; gaga =buf; MessageBox(gaga); } DWORD error = GetLastError();
oder einfach so:
out_file.Open(name, CFile::modeRead, &cfeException); DWORD error = GetLastError();
er springt doch nicht in die Verzweigung rein deswegen musst du ja den Fehler nachdem abfangen...
Hellsgore
-
Mach mal Folgendes:
ALLE Optimierungen ausschalten.
Auf Debugmodus umstellen.
Projekt->Erstellen->Alles neu erstellenDas sollte bei eventuellen Kompilierfehlern helfen.
-
ja er öffnet nicht,
das mit dem debuggen ist auch nicht er springt fast nur in afx dateien rum.
-
Japp
estartu hat recht mache mal ein Rebuild dann passiert vielleicht wieder wasHellsgore
-
auch nichts.....
-
Und? Was sagt dir GetLastError zu dem Thema?
Sicher, dass du die Datei nicht schon mit einem anderen Programm geöffnet hast?
Lass sie dir doch mal zu Testzwecken direkt davor anlegen. Dann bist du ganz sicher, dass sie da ist, wo sie sein soll, und das kein anderer den Daumen drauf hat.
Zum F11 Debug: War echt kein Grund zu erkennen, warum die Datei nicht geöffnet werden kann?
-
So jetzt mal:
- Setze einen Breakpoint auf die Verzweigung
- Kompiliere starte dein Prog
- Lasse ihn bis zu dem Punkt hinlaufen
- Gehe dann Schritt für Schritt weiter
- gucke dir an was in der Variablen error oder cfeExcpetion steht
- Steht da null drin dann hats nix mit dem Aufruf zu tun dann ist es
was andersansonsten
reinige mal dein Projekt (Clean Project/Solution)
lasse es mal neu compilieren usw.Hellsgore
-
danke,
ich hatte das file schon mal geöffnet, ich hoffe das ich es jetzt zu ende bekomme. Danke soweit hatte ich wirklich noch nicht gedacht.
-
hallo,
ich habe wieder probleme mit einer if- anweisung.
hab schon kontolliert, sie wird geschlossen.
leider lässt sie sich nicht öffnen:if (out_file.Open(gaga, CFile::modeReadWrite, &cfeException)) { UpdateData(true); DWORD haha = out_file.GetLength(); // MessageBox(haha); DWORD dwActual = out_file.SeekToEnd(); . . . }
könnt ihr mal drüber schauen was es sein könnte??
-
Was passiert denn?
Er geht nachdem er einmal in die Verzweigung reingegangen ist nicht mehr darein? Dann könnte es daran liegen das du die Datei nachdem du sie beschrieben oder gelesen hast wieder schließen solltest bevor du diese neu öffnest.Hellsgore
-
ich lese doch den pfad des files aus der anweisung, mit der ich vorhin probleme hatte.:
if (in_file.Open(name, CFile::modeRead, &cfeException)) { DWORD haha = in_file.GetLength(); in_file.ReadString(buf,haha+2); gaga = buf; MessageBox(gaga); in_file.Close();
jetzt möchte ich dieses gaga öffnen:
if (out_file.Open(gaga, CFile::modeReadWrite)) { UpdateData(true); DWORD haha = out_file.GetLength(); // MessageBox(haha); DWORD dwActual = out_file.SeekToEnd(); // ende des files suchen MessageBox(gaga); // deklaration output file . . . .
und da hängt es schon wieder, er öffnet mal wieder nicht das file......