Pfadangabe in C++ durch Makro ersetzen



  • 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")

    {

    pfad = "C:\\Users\\Slobodan\\Documents\\Visual Studio 2010\\Projects \\soundtest\\Sounds\start.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. Also durch ein Makro ersetzen.
    Könnte mir jemand sagen wie das geht?



  • Das Programm ist mit Visual Studio erstellt.
    Das Makro lautet

    $(SolutionDir)

    aber ich weiss nicht wie ich es in dieses String einbinden muss.



  • so soll die pfadangabe aussehen:
    pfad = "$(SolutionDir)/Sounds/intro.wav";

    aber das funktioniert nicht



  • Was funktionieren könnte: Füge den Compileroptionen sowas wie
    `

    -DSOLUTION_PATH=$(SolutionDir)

    `
    hinzu, und benutze im Programm das Makro SOLUTION_PATH. Kommt drauf an, ob die IDE-Makros an der Stelle ausgewertet werden...

    (Ich nehme an, dir ist klar, dass das nicht das Problem, dass es auf jedem anderen Rechner funktionieren soll, löst.)



  • Bashar schrieb:

    Was funktionieren könnte: Füge den Compileroptionen sowas wie
    `

    -DSOLUTION_PATH=$(SolutionDir)

    `
    hinzu, und benutze im Programm das Makro SOLUTION_PATH. Kommt drauf an, ob die IDE-Makros an der Stelle ausgewertet werden...

    (Ich nehme an, dir ist klar, dass das nicht das Problem, dass es auf jedem anderen Rechner funktionieren soll, löst.)

    Wo finde ich denn die Compilerfunktionen?



  • gibt es vielleicht eine Möglichkeit mit relativer Pfadangabe zu arbeiten?

    Die exe ist hier
    C:\Users\Slobodan\Documents\Visual Studio 2010\Projects\soundtest\Release

    Die Sounddateien hier:

    C:\Users\Slobodan\Documents\Visual Studio 2010\Projects\soundtest\Sounds\intro.wav



  • $(SolutionDir) ist ein Makro der IDE und wird beim Compilen zugewiesen.
    Was du willst, ist eine Funktion, die unabhängig vom Speicherort auf die Datei zugreifen kann.
    Reative Pfade sind schon ganz richtig.

    Beide Dateien (die Exe und die Sounddatei) sind in Unterordnern von
    C:\Users\Slobodan\Documents\Visual Studio 2010\Projects\soundtest\.
    Um von Release\ auf Sounds\intro.wav zu kommen, musst du erst einen Ordner zurückgehen ( ..\ ) und dann "Sounds/intro.wav" öffnen, also ..\Sounds\intro.wav

    Das geht nur, wenn du die Workingdirectory nicht verändert hast.



  • Marthog schrieb:

    $(SolutionDir) ist ein Makro der IDE und wird beim Compilen zugewiesen.
    Was du willst, ist eine Funktion, die unabhängig vom Speicherort auf die Datei zugreifen kann.
    Reative Pfade sind schon ganz richtig.

    Beide Dateien (die Exe und die Sounddatei) sind in Unterordnern von
    C:\Users\Slobodan\Documents\Visual Studio 2010\Projects\soundtest\.
    Um von Release\ auf Sounds\intro.wav zu kommen, musst du erst einen Ordner zurückgehen ( ..\ ) und dann "Sounds/intro.wav" öffnen, also ..\Sounds\intro.wav

    Das geht nur, wenn du die Workingdirectory nicht verändert hast.

    Ja genau das möchte ich. Und diesen Pfad dann als string abspeichern damit die PlaySound Funktion darauf zugreifen kann. Aber ich weiss nicht wie.



  • hab es nun...

    pfad = "..\\Sounds\\intro.wav";

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


Anmelden zum Antworten