Ini nur mit komplettem Pfad?



  • Hi

    ich schreib grad nen prog, was eine tastenbelegugn aus einer ini ausliest.
    das is die ini:

    *ini*
    [TASTEN]
    Bass=B
    Snare=S
    Tom1=E
    Tom2=R
    Tom3=T
    Ride=I
    Crash=O
    HiHat_F=Y
    Hihat_H=A
    *ini ende*
    

    Ich les das ganze so aus:

    GetPrivateProfileString("Tasten", "Bass",  NULL, &Returned_Bass, 2,"G:/Proggen/Drums/Tasten.ini" );
    

    so, das ganze hat ein problem: ich kann das prog ja so net verschicken, da liegen die inis ja an andern pfaden. wei mach ich das jetzt? wenn ich einfach nur "Tasten.ini" angebe, geht das auslesen net.
    gibt es da andere möglichkeiten?

    Mfg
    Eldarion



  • Wenn du weißt, wo die Datei liegt, kannst du ja den Dateinamen erstellen, während das Programm läuft. Und/oder du kannst relative Pfade angeben.



  • wenn ich relative pfade angebe gehts ja eben net.
    ich hab ma folgendes versucht;:

    GetPrivateProfileString("Tasten", "Bass",  NULL, &Returned_Bass, 2,"Tasten.ini" );
    

    dann geht der sound net, auf der tasten. wenn cih allerdings den pfad von oben nehem, dann gehts. 😕



  • Poste doch mal die Ordnerstruktur von der Ini und deiner Exe.

    Beispiel:

    - IrgendeinOrdner
    - DeineExe
    - DeineIni

    => Dateiname "Tasten.ini"

    - IrgendeinOrdner
    - DeineExe
    - Ordner
    - DeineIni

    => Dateiname "Ordner/Tasten.ini"



  • das ganze seith so aus:

    -IrgendeinOrdner
    --Exe
    --Ini

    also beides im selber ordner. wenn ich auf header zugreife geht das auch so, oder wenn ich das über:

    fz = fopen("Tasten.ini", "rb");
    

    öffne gehts auch, bloß ich wills halt als ini datei.



  • Müsste eigentlich gehen. Aber um es eindeutig zu machen, ein Vorschlag:
    Hol dir den Dateinamen von deiner Exe mit GetModuleFileName.
    Geh von hinten zurück bis zum Backslash und schneide "Tasten.ini" dran.
    Dann hast den absoluten Pfad, egal wo die Exe liegt.



  • sry, das ich mich jetz sodoof anstelle, aber ich kenne nur die funktionen für replace mit der string klasse, aber die kann ich in winapi irgenwie net nutzen 😞
    könntet ihr mir eifnach ma nen bsp geben?

    Edit: rofl, ich hab eifnahc ma nen unterordner erstellt und dann "Ordner/Tasten.ini" geschreiben udn schon gings 😃



  • Nanana, kannst doch nicht das Problem umgehen, indem du die Ini in einen Unterordner packst ⚠
    Du musst dich Problemen stellen!

    Also, wenn Exe und Ini im selben Ordner sind:

    char Path[MAX_PATH+1];
    GetModuleFileName( NULL, Path, MAX_PATH+1 );
    
    for ( long i=strlen(Path); i>=0 && Path[i]!='\\'; i-- )
        ;
    if ( i > 0 )
    {
        strcat( Path+i, "Datei.ini" );
        ...
    }
    

    Evtl. auch strcat( Path+i+1, "Datei.ini" );


Anmelden zum Antworten