1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Initialisieren eine *.ini Datei fehlgeschlagen

Discussion in 'Programmieren' started by Don_Pazo, Oct 10, 2005.

Thread Status:
Not open for further replies.
  1. Don_Pazo

    Don_Pazo Byte

    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);
    }
     
  2. specialist7

    specialist7 Kbyte

    Hast du mal geprüft, ob der Pfad zur Ini-Datei korrekt ist? (Mit MessageBox o.Ä.) Wenn du die Anwendung aus MSVC++ heraus startest, erhälst du mir GetCurrentDirectory einen anderen Pfad zur Anwendung als beim Start z.B. aus dem Explorer heraus.

    Zum Codedurchschauen ist es jetzt schon zu spät und so ganz habe ich die Funktionsbeschreibung deines Programms nicht verstanden. Vielleicht kannst du noch mal ausführlich und deutlich Schreiben, was das Programm macht bzw. machen soll!?!
     
Thread Status:
Not open for further replies.

Share This Page