Pfad angeben in c++ (Visual Studio)



  • Hallo,

    ich würde gerne wissen wie man einen Pfad in c++ angibt. Ich habe eine Funktion geschrieben die einen Sound ausgeben kann:

    int main()

    {

    string name, pfad;

    while ( name != "exit")

    {

    cin >> name;

    pfad = "C:\\Users\\Slobodan\\Documents\\Visual Studio 2010\\Projects \\soundtest\\Sounds\" + name + ".wav";

    PlaySoundA(pfad.c_str(), NULL, SND_FILENAME);

    }

    return 0;

    }

    Ich würde aber gerne dieses "C:\\Users\\Slobodan\\Documents\\Visual Studio 2010\\Projects \\soundtest\\Sounds\" so umschreiben das dieser Sound auch von einem anderen Rechner abgespielt werden kann.
    Könnte mir jemand sagen wie das geht?



  • Dann musst du die .wav Datei in dein Installationssetup einbinden.



  • Gibts denn kein Makro was

    C:\\Users\\Slobodan\\Documents\\Visual Studio 2010\\Projects \\soundtest\\

    ersetzt?

    So das ich da nur noch "XXXXXXX\\Sounds" stehen hab?



  • Du kannst auch einfach relative Pfade benutzen:

    pfad = name + ".wav";
    

    Und der User könnte dann selbständig den Pfad dazu eingeben, z.B. "..\Sounds\TollerSound".
    Die Pfade sind dann relativ zu deiner Anwendung (EXE) bzw. genauer gesagt relativ zu dem aktuellen Arbeitsverzeichnis (z.B. wenn man eine Verknüpfung zu deiner Anwendung erstellt hat und dann dort das Arbeitsverzeichnis geändert hat).
    Oder der User gibt dann einfach einen absoluten Pfad ein: "C:\Music\TollerSound".

    P.S: Du bist hier im falschen Sub-Forum.



  • Ja kann man:

    TCHAR name [UNLEN + 1];
    DWORD size = UNLEN + 1;
    
    if (GetUserName( (TCHAR*)name, &size ))
    cout << "Hello, " << name << "!\n";
    else
    cout << "Error\n";
    

    string name2 = name;
    Du musst das dann so schreiben:

    "C:\\Users\\"name2"\\Documents\\Visual Studio 2010\\Projects \\soundtest\\Sounds\\" + name + ".wav"
    

    Du brauchst dann noch :

    #include <string>
    #include <Lmcons.h>
    #include <Windows.h>
    

    Anscheinend wissen die Kollegen nicht was du meinst.



  • Dieses Hello, ...
    und Error kannst du natürlich auch weglassen



  • Und hier muss ich mich noch verbessern:

    "C:\\Users\\"+name2+"\\Documents\\Visual Studio 2010\\Projects \\soundtest\\Sounds\\" + name + ".wav"
    

    Da müssen halt noch diese 2 plusse hinzugefügt werden



  • Da fehlt aber einiges damit das was wird. Hast du auch den namespace System::Media eingebunden? Sonst fummelst du dir eh nen Wolf und kannst erst gar nicht auf den SoundPlayer zugreifen.

    Also in deiner .h Datei

    using namespace System::Media;
    

    eintragen

    Dann vereinbarst du ein paar Variable in der Haupt Klasse:

    //für den Pfad wo sich deine Sounddateien befinden
    String ^soundPfad;
    //Variable für den Sound der gespielt werden soll bei einem bestimmten Ereignis vom Typ SoundPlayer
    SoundPlayer ^fehlersound;
    

    Im Konstruktor füllst du dann die Variablen:

    //speichert den Start Pfad des Programms im String soundPfad
    soundPfad = Application::StartupPath;
    //Soundplayer initialisieren
    fehlersound = gcnew SoundPlayer();
    //den Pfad der Sound-Datei zuweisen
    fehlersound->SoundLocation = soundPfad + "\\fehler.wav";
    

    Um die Sound-Datei dann abzuspielen proggst du dann halt dein Ereignis :

    if (dasunddas >= diesunddas)
    fehlersound->Play;
    

    Mit Application::StartupPath brauchst du nur noch dafür sorgen, dass der Anwender die Sounddateien dort liegen hat, wo auch die exe ist.
    Wenn du die Dateien lieber in einem separaten Ordner packen möchtest, brauchst du lediglich den Pfad um den Ordner zu erweitern. Denk aber daran das du den Backslash 2x setzen musst.


Anmelden zum Antworten