Inifile, geht nicht, wenn ich den Input...
-
Hallo, kennt jemand das Problem, dass nur dann ein Text von einem Textfeld in das Inifile geschrieben wird, wenn er von Hand eingetragen wurde? Sobald ich z.B. über den Dialog "Öffnen" einen CString in das Textfeld schreibe und dann diesen in das Inifile schreiben möchte, passiert nichts!
UpdateData habe ich gemacht, in der Variablen steht auch der CString drinnen, nur wird dieser nicht in das Inifile geschrieben, es bleibt die alte Angabe stehen. Lese ich daraufhin wieder das Inifile, kann nicht mal mehr der alte Text geladen werden, nur nach einem Neustart des Programms!
Bestehet evtl. noch Zugriff auf die Datei??
-
zeig mal code
-
was für ein updatedata haste gemacht??
-
Den Code kann ich leider erst heute abend posten!
UpdateData/TRUE);
WritePrivateProfileString("Executables","Path",m_strPath,".\\Configuration\\config.ini");Das funktioniert ja auch soweit, nur eben nicht, wenn ich mit dem "Öffnen"-Dialog einen CString in die Variable m_strPath geschrieben habe.
m_strPath wird korrekt angezeigt und steht auch an der Stelle WritePri...
inn der Variablen m_strPath. Denn einen per Hand eingegeben Code wird korrekt gespeichert.O.K. heute abend poste ich den ganzen Code!
-
So sollte es aussehen:
CString m_strPath; CFileDialog m_ldFile (TRUE); CString szFilter; szFilter += "Text Files (*.txt)|*.txt|"; szFilter += "All Files (*.*)|*.*|"; LPTSTR pch = szFilter.GetBuffer(0); while ((pch = _tcschr(pch, '|')) != NULL) *pch++ = '\0'; m_ldFile.m_ofn.lpstrTitle = "Bitte wählen sie die Datei aus"; m_ldFile.m_ofn.lpstrInitialDir = "C:\\"; m_ldFile.m_ofn.lpstrDefExt = "*.*"; m_ldFile.m_ofn.lpstrFilter = szFilter; if (m_ldFile.DoModal() == IDOK) { m_strPath = m_ldFile.GetPathName(); UpdateData(FALSE); } WritePrivateProfileString("Executables","Path",m_strPath,".\\Configuration\\config.ini");
das funzt normalerweise...
VAR´s angepasst
[ Dieser Beitrag wurde am 15.01.2003 um 14:31 Uhr von C-O-M-M-A-N-D-E-R editiert. ]
-
Wow, da wird ja der Hund in der Pfanne verrückt, jetzt habe ich den Code von
C-O-M-M-A-N-D-E-R verwendet und siehe da, es ist wieder das selbe Verhalten und ich blicke nicht wo das PROBLEM ist.Der Witz ist, wenn ich einen über das Öffnen_Menü erhaltenen Text(Pfad) mit Strg+C kopiere und mit Strg+V wieder einfüge, dann klappts!!!!
Nur kann das ja von keinem Anwender verlangt werden!!
-
Also, wenn ich den Öffnen-Dialog nicht zum Datei suchen sondern zum Ordner suchen verwende, dann geht es!! Aber wo ist das Problem, ich speichere doch den Namen als CString in einer Menbervariablen??!?!?!?
-
Entweder du stellst dein Projekt mal Online und´jemand kann es sich anschauen oder du verwendest den Debugger um zu sehen ob CString == NOTNULL
-
Hi. also hier der Code
Bei der erste Variante(Ordner wählen) funktioniert es, das Inifile zu schreiben:
// Funktion zum öffnen eines Dateipfades in der Ordnerstruktur (keine Dateianzeige)
void CKameraDlg::OnBrowse()
{ UpdateData(TRUE);
UpdateData(TRUE);char strOrdner[_MAX_PATH] = "";
CString strFolderPath;BROWSEINFO browseInfo = {0 };
browseInfo.pszDisplayName = strOrdner;LPITEMIDLIST ret;
ret = SHBrowseForFolder(&browseInfo);if (ret)
{
// OK selektiert
if (SHGetPathFromIDList(ret, strOrdner))
{
m_strProgrammPfad = strOrdner; // Pfad in der Membervariablen speichern
}
}UpdateData(FALSE);
}Nun die Dateivariante, bei der es komischerweise nicht klappt:
UpdateData(TRUE);
CString m_strPath;
CFileDialog m_ldFile (TRUE);CString szFilter;
szFilter += "Exe Files (.exe)|.exe|";
szFilter += "All Files (.)|.|";
LPTSTR pch = szFilter.GetBuffer(0);
while ((pch = _tcschr(pch, '|')) != NULL)
*pch++ = '\0';m_ldFile.m_ofn.lpstrTitle = "Bitte wählen sie die Datei aus";
m_ldFile.m_ofn.lpstrInitialDir = "C:\";
m_ldFile.m_ofn.lpstrDefExt = ".";
m_ldFile.m_ofn.lpstrFilter = szFilter;if (m_ldFile.DoModal() == IDOK)
{
m_strProgrammPfad = m_ldFile.GetPathName(); //Dateipfad in die Membervariable schreibenUpdateData(FALSE);
}Mit dieser Funktion wird der Dateipfad übernommen
//------------------------------------------------------------------------------
// aktuellen Pfad in Inifile schreiben
//------------------------------------------------------------------------------void CKameraDlg::OnConfirm()
{
UpdateData(TRUE);LPSTR temp_string;
temp_string = (LPSTR)calloc(200, sizeof(LPSTR));
sprintf(temp_string,"%s",m_strProgrammPfad );
WritePrivateProfileString ( "config", "path" , temp_string , ".\\configuration\\config.ini");
free(temp_string);
UpdateData(FALSE);
}