file auslesen
-
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......
-
Dann setze doch mal bitte am ende der If - Verzweigung nachdem sie geschlossen worden ist ein DWORD error = GetLastError() hin. Dann guckst du was in error drin steht und gibst mir mal diese Zahl.
Hellsgore
-
es gibt nichts aus,
soll das als so eine art messagebox ausgegeben werden??
Es gibt aber wirklich nichts aus als fehler
-
Nein es kommt keine msgbox oder so.
Er schreibt einfach nur einen Fehlercode in die Variable error rein. Diese kann man dann nachguckne was sie bedeutet.
machs einfach so damit du das verstehst:DWORD error = GetLastError(); AfxMessageBox(error);
und sage mir dann was er angezeigt hat
Hellsgore
-
Debug assertion failed!!
Program:...
File: appui1.cpp
line: 143.....
hat er geschrieben
-
Oh sorry
Kinderfehler von mir.....DWORD error = GetLastError(); CString strTemp; strTemp.Format("%d",error); AfxMessageBox(strTemp);
machs sonst kann er das nicht *g*
Hellsgore
und dannach solltest du echt einmal ein wenig herumspielen wie man einen Quellcode durchdebugged und zwar schritt für schritt ich denke mal das hast du bisher noch nicht gemacht und von daher kannst du dann auch nicht wissen wo er hängen bleibt.
-
32
ich probier aus, aber anscheinent das falsche.....
-
So
also Fehler 32 =
32 The process cannot access the file because it is being used by another process. ERROR_SHARING_VIOLATIONDas bedeutet die Datei ist bereits vorher schonmal geöffnet worden und ist zu der Zeit immernoch offen. Schaue mal nach wo du diese Datei vielleicht noch öffnest oder welches Programm noch darauf zugreift oder ob du vielleicht Notepad noch mit dem File offen hast.
Hellsgore
So Fehler findest du am besten mit GetLastError() so wie ich dir das gezeigt habe. Dann gehst du in die Hilfe suchst nach GetLastError und dann nach System Error Codes
-
aha, danke
ich dachte eigentlcih das ich es schon überall geschlossen hätte, muss ich nochmal schauen.
danke
-
wie bekomme ich den raus was welche fehler nummer bedeutet???
Was heisst fehler 183 ????????