GetPrivateProfileString



  • Ich löse es immer so das ich ich in die FAQ schaue und mir den Source dort hole den ich mal dort gepostet habe.



  • 😉 So geht's natürlich auch 😃

    Happosai



  • Es funktioniert endlich.
    Also erstmal tausend Dank für eure Hilfe. Ohne euch wäre ich nie weitergekommen. Ich habe die ganze Zeit den Fehler bei dem GetPrivateProfileString gesucht. In Wirklichkeit lag es aber daran, dass ich das ganze in einer if-Schleife hatte

    if(m_file.Open(m_strProfileName, CFile::modeRead))
    {
          //Das funktioniert,aber nur ohne if
          char pBuf[25];
          GetPrivateProfileString("Perf Programm", "Datenbank", pBuf, pBuf, 80, m_strProfileName //Hier steht mein Pfad drinn);
            theApp.m_strdatenbank=pBuf;
          //Das funktioniert,aber nur ohne if
    }
    

    Ich wollte aber das if, denn ich wollte meinem Programm sagen, wenn keine ini.vorhandne ist, gebe eine Meldung aus, dass man eine ini erstellen solte. Was geht an diesem if nicht?

    [ Dieser Beitrag wurde am 18.02.2003 um 12:13 Uhr von wutzi editiert. ]



  • Die if-Verzweigung müsste funzen. Meiner Meinung nach liegt der Fehler noch weiter oben.

    Happosai



  • Aber das Programm funzt ohne if. Dann kann ich doch keinen Fehler davor haben, oder?
    Das steht auf jedenfall davor:

    BOOL CPerfApp::InitInstance()
    {
        CStdioFile file;
        CFile m_file;
        CString filename, txt, m_strini, m_strProfileName, m_strget, m_strsection, m_strkey;
        char buffer[1000];
        filename="\\test.ini";
        static char strBuffer[_MAX_PATH + 1];
        m_strget=_getcwd(strBuffer, _MAX_PATH);
        strcat(strBuffer, "\\perf.ini");
        TCHAR * pszBuffer = (TCHAR*)malloc( (_MAX_PATH+1)*sizeof(TCHAR) );
        m_strProfileName= m_strget+ filename;
     //und dann kommt if....
    

    Die if Funktion hat auch funktioniert ohne den GetPrivateProfileString, d.h. wenn die Datei vorhandne war ging es in den if-Zweig und wenn nicht dann in else, warum klappt das so wie ich es machen will jetzt nicht mehr????



  • wenn du - was ich glaube - den Pfad der exe ermitteln willst und an diesen einfach nur "\\test.ini" anhängen will, würde ICH das ganze so schreiben:

    BOOL CPerfApp::InitInstance()
    {
        CString sAppPath = GetCommandLine();
        sAppPath         = sAppPath.Mid(1, sAppPath.ReverseFind('\\') - 1);
    
        sAppPath += "\\test.ini";
    
        //und dann kommt if....
    }
    

    Happosai



  • Das man das anders schreiben kann ist mir schon klar, aber wenn ich es so mach wie du kommt der Debug Ordner raus und den wollt ich eigentlich nicht. Aber das ist mir eigentlich egal, dass man das besser schreiben kann. Ich brauch erst mal die Grundfunktion.

    if(m_file.Open(m_strProfileName, CFile::modeRead))
    {
          //Das funktioniert,aber nur ohne if
          char pBuf[25];
          GetPrivateProfileString("Perf Programm", "Datenbank", pBuf, pBuf, 80, m_strProfileName //Hier steht mein Pfad drinn);
            theApp.m_strdatenbank=pBuf;
          //Das funktioniert,aber nur ohne if
    }
    

    Also warum funkioniert das GetPrivateProfileString nicht in dieser if Funktion. Kann mir da niemand helfen?



  • Bist du dir auch sicher, dass der Pfad am Ende vor der if-Anweisung auch RICHTIG ist? Lass' ihn dir doch per AfxMessageBox anzeigen. Ist der Pfad korrekt, können wir den Fehler bei CFIle suchen ... 🙄

    Happosai



  • Ja de Pfad ist korrekt!!!
    Woran könnte bei CFile der Fehler liegen?



  • Hab mein Problem gelöst. Mit if(... .Open) öffne ich die Datei. Das GEtPrivatProfile möchte auch die Datei öffnen, da diese dann schon geöffnet ist geht das so nicht. Deswegenen muss ich mit access prüfen ob sie vorhandne ist, dabei öffnet er die Datei nicht.
    Trotzdem danke für deine Hilfe



  • ist es auch möglich einen rel. pfad anzugeben?
    normal liegt die ini datei immer in dem selben ordner mit der exe datei.
    wenn ich einen pfad mit c:\... angebe funktioniert es, gebe ich aber nur den dateinamen an leider nicht 😞


Anmelden zum Antworten