Probleme mit Einlesen bei Datei/Öffnen

Wechselrichter

Grünschnabel
Morgen an alle Spezialisten,

habe folgendes Problem: Ich bastel schon eine Weile an einem kleinen Softwareprogramm, mit dem man digitale Schaltungen erstellen und simulieren kann. Das läuft mittlerweile auch ganz gut. Nun möchte ich ein erstelltes Projekt auch gerne speichern können. Über eine Ressource und den nötigen "ofn" - Code gelange ich auch zu dem berühmten Windows Fenster "Öffnen". Speichern unter habe ich auch schon drin, ist ja fast der selbe Code. Zum Test speichere ich nur den Pfad, unter dem die gespeicherte Datei zu finden ist. Reingeschrieben wird mit WritePrivateProfileStringA(...).


Code von ID_OPEN:

------------------------------------------------------

//ÖFFNEN
case ID_OPEN:

/* wurde bereits ganz oben deklariert:
OPENFILENAME ofn; // common dialog box structure
TCHAR szFile[260]; // buffer for file name char
HANDLE hf; // file handle
DWORD ru; // für WriteFile
*/


// Initialize OPENFILENAME
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(ofn);
ofn.hwndOwner = hwnd; // nwnd
ofn.lpstrFile = szFile;

//
// Set lpstrFile[0] to '\0' so that GetOpenFileName does not
// use the contents of szFile to initialize itself.
//
ofn.lpstrFile[0] = '\0';
ofn.nMaxFile = sizeof(szFile); //Problemstelle
ofn.lpstrFilter = TEXT("Digital Baukasten (.dig)\0*.dig\0Alle (*.*)\0*.*\0");
ofn.nFilterIndex = 1;
ofn.lpstrFileTitle = NULL;
ofn.nMaxFileTitle = 0;
ofn.lpstrInitialDir = NULL;
ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST | OFN_ENABLESIZING;

//opens the dialog box
if (GetOpenFileName(&ofn)==TRUE) {
hf = CreateFile(ofn.lpstrFile, GENERIC_READ, 0, (LPSECURITY_ATTRIBUTES) NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,(HANDLE) NULL);
}

//Bis hier hin läufts auch ganz gut, aber jetzt:

// INI File einlesen:

strcpy(Address, ofn.lpstrFile); //Pfad in extrea String kopieren

PathValidator(Address); //Pfad aufpeppen mit zweitem Backslash
//Hierbei handelt es sich um ein selbst geschriebenes Programm, dass
//beim Pfad einen zweiten Backslash einfügt, damit er die Datei auch findet.

MessageBoxA(hwnd, ofn.lpstrFile, "Pfad", MB_OK); //Pfad wird ausgege...

//Nun möchte ich den vorher eingespeicherten Pfad wieder auslesen:
GetPrivateProfileStringA("Header", "Filename", defaul, String, sizeof(String), "H:\\My Documents\\Der Digital Baukasten 1.1_tev\\testsave.dig");
//Der String "H:\\My..." wurde fest eingegeben zum Testen


MessageBoxA(hwnd, String, "INI File", MB_OK);
//Ausgabe: (es wird nichts ausgegeben!)


InvalidateRect(hwnd, &rect, TRUE);


break;

-----------------------------------------------------------------------------------------------

ändere ich bei ofn.nMaxFile die Zuweisung sizeof(szFile) auf eine kleine Zahl, dann
beinhaltet ofn.lpstrFile nur einen ";"

Beim Auslesen des INI Files wird aber nun der String ausgelesen. Dafür erscheint aber kein Öffnen Fenster. :mad:


Also, warum funktioniert der GetPrivateProfileStringA Befehl nicht, obwohl der Pfad eindeutig ist? Was passiert da genau im Windows Universum?


Wer so etwas Ähnliches schon mal gemacht hat, wird hierzu sicherlich eine Lösung wissen.

Vielen Dank schon mal im voraus.


mfg
Der Wechselrichter
 
Zurück