Überpfüfen, ob Pfad schon vorhanden.



  • Würd'st jetzt bitte endlich sagen ob C++/CLI oder C++!?

    #include <string>
    #include <iostream>
    
    #include <windows.h>
    
    bool DirectoryExists( std::string const &path )
    {
    	DWORD dwAttrib = GetFileAttributesA( path.c_str() );
    	return (dwAttrib != INVALID_FILE_ATTRIBUTES && ( dwAttrib & FILE_ATTRIBUTE_DIRECTORY ) );
    }
    
    int main()
    {
    	std::string path = "C:\\somwhere\\over\\the\\rainbow";
    
    	std::cout << "\"" << path << "\" " << ( DirectoryExists( path ) ? "exists" : "does not exist or is not accessible" ) << ".\n";
    }
    


  • Der Code

    if(System::IO::Directory::Exists(folderkon) == true)
    				{
    					cout<<"Der Pfadexistiert bereits.";
    				}
    				else
    				{
    					cout<<"Der Pfad existiert nicht.";
    				}
    

    würde funktionieren.

    Wie konvertiere ich jedoch meinen String in einen "String ^"? Geht das überhaupt?



  • Wofür?

    #include <iostream>
    
    using namespace System;
    
    int main(array<System::String ^> ^args)
    {
    	String ^path = "C:\\somwhere\\over\\the\\rainbow";
    
    	if( System::IO::Directory::Exists( path ) ) {
    
    		std::cout << "Der Pfadexistiert bereits.";
    
    	} else {
    
    		std::cout << "Der Pfad existiert nicht.";
    	}
    
    	std::cin.get();
    }
    


  • Du bist offensichtlich noch ein Anfänger. Ich kann dir nur von ganzem Herzen raten: Lass die Finger von C++/CLI. C++/CLI ist nicht was du denkst oder was du vielleicht denken gemacht wurdest. Insbesondere ist es nicht C++. Wenn du C++ lernen willst, lern C++ und mach dabei einen gaaaaanz weiten Bogen um C++/CLI.



  • Eigentlich wollte ich es auch ohne cli machen aber es geht nicht mit c++. Deswegen brauch ich nur den einen code. Den rest konnte ich bisher mit c++ mitteln lösen.



  • Crysis_02 schrieb:

    [..] aber es geht nicht mit c++.[...]

    Ist in den meisten Fällen eine unhaltbare Aussage. 😉
    Was genau willst Du?

    Wenn du herausfinden willst, ob ein Verzeichnis existiert bzw. du darauf zugreifen kannst steht der Code weiter oben.



  • Swordfish schrieb:

    Würd'st jetzt bitte endlich sagen ob C++/CLI oder C++!?

    #include <string>
    #include <iostream>
    
    #include <windows.h>
    
    bool DirectoryExists( std::string const &path )
    {
    	DWORD dwAttrib = GetFileAttributesA( path.c_str() );
    	return (dwAttrib != INVALID_FILE_ATTRIBUTES && ( dwAttrib & FILE_ATTRIBUTE_DIRECTORY ) );
    }
    
    int main()
    {
    	std::string path = "C:\\somwhere\\over\\the\\rainbow";
    
    	std::cout << "\"" << path << "\" " << ( DirectoryExists( path ) ? "exists" : "does not exist or is not accessible" ) << ".\n";
    }
    

    Meinst du den code?
    Aber was ist ein DWORD?



  • DWORD ist ein

    typedef long unsigned DWORD;
    

    Bekommst du gratis durch windows.h .

    Was geht jetzt nicht mit C++?



  • Crysis_02 schrieb:

    [...] aber es geht nicht mit c++.

    Also das nimmst du dir aber doch hoffentlich selbst nicht ab!? Oder glaubst du tatsächlich, dass es keinen Weg gibt, um in C++ herauszufinden, ob eine Datei bzw. ein Ordner existiert; noch dazu auf einem OS, das selbst in C++ geschrieben ist?



  • Glaub mir: Es ist besser für DIch, wenn es nur mit C# geht!



  • if (bool DirectoryExists(string const folder)==false)
    				{
    					foldererst = _mkdir (folder.c_str());
    					if (foldererst!=0)
    					{
    						cerr<<"Der Ordner konnte nicht erstellt werden. Bitte geben Sie einen vorhandenen Pfad an: ";
    						cin>>folder;
    						for(unsigned z = 0; z < folder.size(); ++z)
    						if(folder[z] == '/') folder.replace(z++,1, "\\");
    					}
    					else
    					{
    						cout<<"Ein neuer Ordner wurde erstellt."<<endl;
    					}
    				}
    

    diesen code habe ich jetzt.
    jedeoch ist mein problem, dass der compiler sagt:
    "1>rechner3.cpp(178): error C2143: Syntaxfehler: Es fehlt ',' vor '=='
    1>rechner3.cpp(179): error C2143: Syntaxfehler: Es fehlt ';' vor '{'"

    das wäre beides nun hier in zeile 1. was ist falsch?



  • Ähm, was genau soll das in Zeile 1 deiner Meinung nach sein!?

    Versteh mich nicht falsch, aber ich denk, du wärst wirklich am besten damit beraten, das hier erstmal bleiben zu lassen, dir ein ordentliches C++ Buch zu besorgen und es zu lesen. Falls du schon eines hast, dann spul zurück und schau dir die Dinge nochmal in Ruhe an. Obiger Code demonstriert klar und deutlich, dass die Grundlagen bei dir nicht wirklich sitzen und dir einfach nur bei deinem Problem zu helfen, würde dir vermutlich mehr schaden als nutzen...



  • der compiler mekert halt rum. ich versteh auch net was falsch sein soll -.-



  • Crysis_02 schrieb:

    ich versteh auch net was falsch sein soll -.-

    Und genau da liegt das Problem und genau darum solltest du dich erstmal sorgfältig mit den Grundlagen befassen. Was genau denkst du denn, dass diese Zeile Nr. 1 tun soll?



  • die zeile soll überpfüfen, ob der pfad "folder" vorhanden ist. dies wird in ein bool geschrieben. wenn der pfan nicht vorhanden ist, also false ausgegeben wird soll er halt die if-Anweisung ausführen.



  • Und hier was du hingeschrieben hast:

    if (bool DirectoryExists(string const folder)==false) 
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^   ^^^^^
                           |                         |
             Deklaration einer Funktion              |
                                                     |
                              +----------------------+
                              |
            Vergleich der Deklaration mit false (völlig sinnlos)
    


  • wie deklariere ich denn dann die variable?
    denn so funktioniert es nicht

    bool folderex.DirectoryExists(string const folder);
    

    genauso wenig wie

    bool folderex (DirectoryExists(folder));
    

    Welche headerdatei brauch ich für DirectoryExists nochmal?



  • Ganz ehrlich, lern erstmal C++, das hat so einfach keinen Sinn.



  • dot schrieb:

    Ganz ehrlich, lern erstmal C++, das hat so einfach keinen Sinn.

    Ganz ehrlich kannst du mir bitte sagen, wie es richtig geht. Bitte.

    Wie würdest du sowas machen?



  • bool exists(const char* path)
    {
      return GetFileAttributesA(path) != INVALID_FILE_ATTRIBUTES;
    }
    

    Funktioniert unter Windows für Verzeichnisse und Dateien gleichermaßen...


Anmelden zum Antworten