Initialisieren eine *.ini Datei fehlgeschlagen

Don_Pazo

Erfahrenes Mitglied
Ich habe eine MCF Programm (SDI) mit Visual C++. Das ist eine HTML-Anwendeng. Zusetzlich kann man eine Dialogfenster öffnen mit verschiedenene Drop-Down Felder.
Und genau hier kommt das Problemm. Beim erstes mal als man diese zusetzliche Optionfenster öffnet ist alles in Ordnung. Die Drop-Down laden sich von der *.ini Datei. Man wählt seine Optionen klickt OK, so weit so gut.
Abchengig von der gewählte Optionen in dieser Dialogfenster wird man mit einer Webseite verbunden und es zeigt sich eine Tabele. Wenn ich aber die Tabele speichere und dann das Dialogfenster noch mal öffne, wird er mit keinen Datensetze von der *.ini Datei geladen.

Das ist meine Code in *.cpp Datei von der Dialogfenster,ich weiss es nicht was da falsch ist, dass sich die Datensetze nicht beim zweiten abruf laden.
Woran kann es liegen


Code:
BOOL CVerbindung::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Zusätzliche Initialisierung hier einfügen
	CString strServer;
	CString strOption;
	CString strVerschl;	// Verbindung Verschlüsselung
	// gelesene Zeile  (laufwariable in CString)
	CString strServerZeile;						
	CString strOptionZeile;
	CString strVerschlZeile;
	// gelesene Zeile  (laufwariable)
	int iServerZeile = 1;					
	int iOptionZeile = 1;
	int iVerschlZeile = 1;
	// "pPfad" wird dinamisch erzeugt
	char *pPfad = new char[1024];	

	// casteing (laufwariable in CString)
	strServerZeile.Format(_T("%d"),iServerZeile);		
	strOptionZeile.Format(_T("%d"),iOptionZeile);
	strVerschlZeile.Format(_T("%d"),iVerschlZeile);

	// **** Pfad bis zum Datei zusammensetzen **** //
	GetCurrentDirectory(1024,pPfad);
	strcat(pPfad,"\\Settings.ini");		

	/**** Kontrollkästchen ausschalten ****/
	m_bServer = FALSE;
	m_bHttps = FALSE;
	// Eingabefeld 'Server eingeben' nur zum lesen 
	GetDlgItem(IDC_SERVER_COMBO)->EnableWindow(FALSE);
	// Eingabefeld 'Verbindung verschlüsseln' nur zum lesen 
	GetDlgItem(IDC_HTTPS_COMBO)->EnableWindow(FALSE);

	/***** VERBINDUNG VERSCHLÜSSELN ComboBox von INI-Datei einlesen ****/	
	while(strVerschl !="ENDE")			// lauf bis "ENDE"
	{	
		// INI-Datei wird eingelesen
		GetPrivateProfileString("VERBINDUNG",strVerschlZeile,"ENDE",strVerschl.GetBuffer(1001),1000,pPfad); 
		
		// FELER-MELDUNG 
		if (!GetPrivateProfileString("VERBINDUNG",strVerschlZeile,"ENDE",strVerschl.GetBuffer(1001),1000,pPfad) )
		{
			MessageBox("Das INI-Datei kann nicht gelesen werden","Hinweis");
		} 
		// das Rückgabewert wird  strServer übergeben
		strVerschl.ReleaseBuffer(); 
		// falls das ENDE noch nicht ereicht wird das Ergebnis ComboBox übergeben
		if(strVerschl != "ENDE")
		{
			m_cHttpsCombo.AddString(strVerschl);
			if(strVerschlZeile == "1")
			{
				// Das erste Wert in der INI-Datei wird vorgemerkt 
				int index = 0;
				m_cHttpsCombo.SelectString(index, strVerschl);   					
			}
		}
		iVerschlZeile++;
		strVerschlZeile.Format(_T("%d"),iVerschlZeile);
	}

		
	// dinamisch erzeugte "pPfad" wird freigegeben
	delete [] pPfad;						
	// Dialogfeld mit den Werten aktualisieren
	UpdateData(FALSE);
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX-Eigenschaftenseiten sollten FALSE zurückgeben
}

Oder vieleicht liegt es am Speichern, aber mit scheint da alles in Ordnung. Ich poste auf jeden Fall auch diese Funktion

Code:
void CE_LearnView::OnFileSaveAs() 
{
	// TODO: Code für Befehlsbehandlungsroutine hier einfügen
	CString m_strDateiname;

    // Objekt der Klasse CFileDialog erstellen
    CFileDialog m_File(FALSE, "", NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "Textdateien  (*.csv, *.prn*, .txt)|*.csv;*.prn;*.txt| Alle Dateien|*.*||");

    // Dialogfeld öffnen und Ergebnis auffangen
    if(m_File.DoModal()==IDOK)
    {
      // Gewählten Dateinamen ermitteln
      m_strDateiname = m_File.GetFileName();

      // Datei speichern
	  CStdioFile file;
      file.Open(m_strDateiname, CFile::modeCreate | CFile::modeWrite);
      file.WriteString(m_strHtmlDaten);
      file.Close();
    }
	UpdateData(FALSE);
}
 
Könnte es sein, daß du beim Speichern das Directory veränderst? Dann kann die Funktion "GetCurrentDirectory" beim zweiten Mal den richtigen Pfad nicht finden, da CurrentDirectory jetzt auf einen anderen Ordner zeigt.

Mfg

langer
 
Ich tippe auch auf ein Problem mit dem aktuelle Verzeichnis, das mit "GetCurrentDirectory()" geholt wird. Das solltest du dir mal im Debugger anschauen. Wenn die "Settings.ini" im Verzeichnis der Applikation liegt, solltest du den entsprechenden Pfad besser mit "GetModuleFileName()" ermitteln.
 
Zurück