MFC in Datei schreiben, Phaenomaen

sssssrichter

Grünschnabel
Hi,

Ich habe hier ein Phaenomaen, was ich nicht versteh.
Nachfolgender Code mit VC++ compiliert fuehrt dazu, dass sich ein
DateiAuswahl Dialog oeffnet, ich eine auswaehl, und der dazugehoerige
Pfad in eine Datei geschrieben wird, welche ich jedes Mal neu erstell.
Funktioniert beim ersten Mal wunderbar. Klicke ich aber ein zweites
Mal auf den Button, dann wird der neue Pfad nicht in die Datei
geschrieben, sondern wieder der alte.
Starte ich das Programm neu, dann funktioniert es wieder beim ersten
Mal und beim 2. Mal nicht.

betreffender Codeausschnitt:
void CKassensetupDlg::OnPfad()
{
CString strPfad;
CStdioFile filConfig;

CFileDialog dlg(true);

filConfig.Open("kassen.conf",CFile::modeCreate | CFile::modeWrite);

if(dlg.DoModal() == IDOK)
{

filConfig.WriteString("[Miktex Pfad]\n");
strPfad = dlg.GetPathName();
strPfad.Replace("\\","\\\\");
strPfad += "\n";
filConfig.WriteString(strPfad);

// Aus Testzwecken, nicht zwingend notwendig
filConfig.Flush();

// Zur Ueberpruefung des zu schreibenden Strings [1]
MessageBox(strPfad);
}
filConfig.Close();
}
----
Code Ende

[1] Interessanterweise steht in dem String, welchen ich mir mittels
einer Messagebox anzeigen lasse, der richtige Pfad, auch beim 2. Mal.

Ich hab ueberhaupt keine Ahnung woran das liegt, und schon viel
ausprobiert, komm aber auf keine Loesung.

MfG
Sven Richter
 
Also der Fehler liegt mit Sicherheit nicht in dem Code, den Du hier gepostet hast...der funktioniert ohne Probleme (bei mir).
 
Hi,

danke fuer dein Feedback, nach noch einer Stunde ueberlegen ist mir dann auch aufgefallen warum dieses Verhalten auftritt.

Wenn ich einmal eine Datei ausgewaehlt habe, und es ein zweites mal tue, dann schreibt er die Datei kassen.conf in das Verzeichnis, in welchem die ausgewaehlte Datei war.
Ich moechte die Datei aber ins Arbeitsverzeichnis schreiben, weiss jemand wie man dieses Verhalten aendern kann?


MfG
Sven Richter
 
Ich moechte die Datei aber ins Arbeitsverzeichnis schreiben, weiss jemand wie man dieses Verhalten aendern kann?
Einfach das Arbeitsverzeichnis holen. Ich weiß leider nicht wie es unter MFC geht, aber mir einer Standard C-Funktion geht es wunderbar:

Code:
char cwd[MAX_PATH];
getcwd(cwd, MAX_PATH);
dafür must du die "direct.h" includieren.

Gruss Homer
 
Zurück