Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » seltsames Serialize Problem

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
26.08.2003, 16:50 Uhr
AlfameisterT



Hallo,
also mein Problem ist etwas schwierig zu beschreiben.

Ich habe eine eigene Klasse und die wird von CObArray verwaltet. Speichern klappt mit Serialize auch wunderbar.

ABER, ich habe eine Funktion die mal einen CFileDialog zum Lesen öffnet.
Wenn diese ausgeführt wird dann funktioniert später die Serialize nicht mehr.
Die Fehlermeldung zeigt auf "m_hFile != INVALID_HANDLE_VALUE" von der Close-Funktion der CFile. Nehme mal an das die Datei garnicht geöffnet wurde?.

Ausnahme:
Wenn ich bei der CFileDialog Funktion ein Datei aus dem Projekt-Ordner wähle, dann passiert dieser Fehler beim Serialize nicht.

Wer kann mir da weiterhelfen???

Schon mal Danke...

Dieser Post wurde am 26.08.2003 um 16:52 Uhr von AlfameisterT editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
27.08.2003, 15:44 Uhr
AlfameisterT



Nachtrag:
wenn ich bei der Serialize den kompletten Pfad zu der Datei angebe dann funktioniert alles.

Kann es sein das nach dem CFileDialog das Prog sich den Pfad merkt,
und dann nicht mehr im Standartpfad nach der Datei sucht?

Ich dachte bei dieser Angabe wird standartmässig im Pfad gesucht wo das Programm gestartet wurde?

if(file->Open("daten.dat",CFile::modeWrite))
try
{
...

Dieser Post wurde am 27.08.2003 um 15:45 Uhr von AlfameisterT editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
27.08.2003, 19:06 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


hallo, für was hast du einen FileDialog wenn du diesen dann nicht benutzt?!?
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
27.08.2003, 19:54 Uhr
AlfameisterT



hab mich wohl missverständlich ausgedrückt

Programm-Daten werden immer im selben File gespeichert (Serialize).
Das FileDialog wird FÜR und VON andere Funktionen im Programm verwendet.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
27.08.2003, 20:11 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


benutze halt immer absolute pfade, hol dir den programmpfad mit "rummurksen" von GetModuleFileName...
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
27.08.2003, 23:00 Uhr
AlfameisterT



rummurksen

Also GetModuleFileName hat mir weitergeholfen, danke
Ich habs mal so gelöst.


C++:

char Pfad[200];
char Programm[17]("meinProgramm.exe");
char DatenFile[10]("daten.dat");

HINSTANCE hInstance = GetModuleHandle(NULL);
GetModuleFileName(hInstance, Pfad, 200);
CString arbeitsPfad=Pfad;
int pos=arbeitsPfad.Find(Programm);
arbeitsPfad.Insert(pos,DatenFile);
arbeitsPfad.Insert(pos+9,'\0');
    
CFile* file = new CFile();
if(file->Open(arbeitsPfad,CFile::modeWrite))



Dieser Post wurde am 27.08.2003 um 23:00 Uhr von AlfameisterT editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
28.08.2003, 09:51 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


elegantere Lösung ist folgende:


C++:
char ch_filename[_MAX_PATH], ch_pathname[_MAX_PATH];
GetModuleFileName(NULL, ch_filename, _MAX_PATH);
lstrcpy(ch_pathname, ch_filename);
*_tcsrchr(ch_pathname, __TEXT('\\')) = 0; // Exe-Dateinamen wegschneiden
CString strPfad;
strPfad.Format("%s\\daten.dat",ch_pathname); // hier ist dein pfad


--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: