8.3 Dos Konformität



  • ein weiteres problem ist , dass wenn ich auf diese weise ordner anlege, nur halt cFileDir + cFileFName gespeichert werden. also
    ich gehe in pfad C:\Test erstelle dort den ordner "Mike"

    dann wird mir in meinem pfad nur C:\Test angegeben und nicht C:\Test\Mike
    da ich ja den kompletten pfad inkl dem neu erstellten ordner überprüfen muss.

    danke euch !!



  • So, nun hab ich den Überblick verloren?
    Welche Variablen hast du, was steht drin?

    Poste mal den aktuellen Code und was laut Debugger jeweils in den Variablen steht.



  • void CBingenDlg::OnFileNewproject() 
    {
     m_show_main = "";
    
        CFileDialog fd(FALSE,"sdat", NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, 
    
       "Project Files (*.lu)|*.lu|||");
    
    CString csLastDir;
    csLastDir = AfxGetApp()->GetProfileString( "LastSavedFile", "Directory", "");
    
    if(csLastDir.GetLength())
    {
    fd.m_ofn.lpstrInitialDir = csLastDir;
    ::SetCurrentDirectory(csLastDir);
    }
    if(fd.DoModal()==IDOK)
    {
    
    CString PathName = fd.GetPathName();
    char cFileDrive[_MAX_DRIVE];
    char cFileDir[_MAX_DIR];
    char cFileFname[_MAX_FNAME];
    char cFileExt[_MAX_EXT];
    _splitpath(PathName, cFileDrive, cFileDir, cFileFname, cFileExt);
    char cPathName[_MAX_PATH];
    sprintf(cPathName,"%s%s\0",cFileDrive, cFileDir);
    AfxGetApp()->WriteProfileString( "LastSavedFile", "Directory", cPathName);
    
    MessageBox("Bitte fügen Sie nach dem Erstellen des Projekts die Source-Dateien in den dafür vorgesehenen Ordner.","Source Files");
    
    CString Pfad_drive = cFileDrive;
    CString Pfad_dir = cFileDir;
    
    CString f_Path = Pfad_drive+Pfad_dir;
    
    CString strKurzpfad;
    GetShortPathName(f_Path, strKurzpfad.GetBuffer(), MAX_PATH);
    if (f_Path != strKurzpfad)
    {
        AfxMessageBox(_T("Das ist kein DOS Pfad!"));
    }
    
    CreateDirectory(projektname,NULL);
    
    CString bin = projektname + "\\BIN";
    CString link = projektname + "\\LINK";
    CString obj = projektname + "\\OBJ";
    CString source = projektname + "\\SOURCE";
    
    CreateDirectory(bin,NULL);
    CreateDirectory(link,NULL);
    CreateDirectory(obj,NULL);
    CreateDirectory(source,NULL);
    
    }		
    }
    

    so sieht der code aus. er kommt mit dem buffer aber nicht klar.

    fehler :: lg.cpp(726) : error C2660: 'GetBuffer' : Funktion akzeptiert keine 0 Parameter



  • eig ist ja nur dieser abschnitt wichtig:

    in f_Path steht z.B. "C:\Test\hans\bin\

    CString strKurzpfad;
    GetShortPathName(f_Path, strKurzpfad.GetBuffer(), MAX_PATH);
    if (f_Path != strKurzpfad)
    {
        AfxMessageBox(_T("Das ist kein DOS Pfad!"));
    }
    

    und der getbuffer macht probleme.



  • Komisch, ich habe den Code so aus meinem Projekt rauskopiert, nichtmal die Variablennamen geändert. 😕
    Keine Ahnung, wieso das nicht geht, sorry. 😞



  • hm.. wie könnte ich dem denn auf die schliche kommen ? was will getbuffer denn von mir ? und wieso bei dir nichts ?hast du das ganze irgendwie in einer schleife laufen ? oder sieht dein pfad anders aus ??

    danke



  • geht es mit

    strKurzpfad.GetBuffer(strKurzpfad.Getlength())
    

    auch nicht?

    Tester2



  • neee... geht leider auch nicht. fehlermeldung:

    error C2039: 'Getlength' : Ist kein Element von 'CString'
    c:\programme\microsoft visual studio\vc98\mfc\include\afx.h(368) : Siehe Deklaration von 'CString'



  • habs so jetzt hinbekommen... es funktioniert.
    danke euch !!

    CString strKurzpfad;
    
    GetShortPathName(f_Path, strKurzpfad.GetBufferSetLength(0), MAX_PATH);
    if (f_Path != strKurzpfad)
    {
        AfxMessageBox(_T("Das ist kein DOS Pfad!"));
    }
    


  • error C2039: 'Getlength' : Ist kein Element von 'CString'
    

    Sorry, Schreibfehler, muss heißen:

    GetLength()
    

    Tester2


Anmelden zum Antworten