CString wird nicht angenommen



  • Hallo Zusammen,

    ich habe ein Problem, bei dem ich einfach nicht weiterkomme.
    Ich versuche gerade mit der bass.dll ein wenig zu spielen.
    Dort gibt es eine Funktion, in der ich einen Dateinamen übergeben kann.
    Mein Problem ist, dass ich wenn ich einen CString übergebe immer eine Fehlermeldung (ErrorCode) bekomme: File Not Found.

    Der Aufruf der Funtkion ist einfach:

    BASS_StreamCreateFile(FALSE, "C:\\MUSIC\\irgendwas.mp3", 0, 0, 0))
    

    wenn ich das Ganze so übergebe klappts. Kein errorcode und ich höre halt das mp3-file.

    Wenn ich aber folgendes versuche:

    CString str("C:\\MUSIC\\irgendwas.mp3");
    //oder
    CString str;
    str.SetString(_T("C:\\MUSIC\\irgendwas.mp3"));
    
    BASS_StreamCreateFile(FALSE, str, 0, 0, 0))
    

    klappts nicht und ich weiß nicht woran es liegt.
    Ich habe auch schon versucht das ganze in einen char[] zu packen, allerdings das selbe ergebnis.

    Hat einer eine Ahnung warum es nicht geht oder wie ich das ganze gescheit umwandeln kann?
    Hab schon folgendes Versucht:

    char *buffer = new char[511];
    buffer = (char*)str.GetBufferSetLength( (str.GetLength()+1)*sizeof(TCHAR) );
    

    Der Hintergrund ist, dass ich die Datei später aus einem FileDialog auswählen will.

    Danke



  • Hast du Unicode aktiviert?



  • Wie aktiviert? in der bass.dll oder im Projekt?
    Ich hab das Projekt mit Unicode erstellt.



  • Das könnte das Problem sein.
    Ich kenne mich nicht sehr gut aus, denke aber CString wird nicht automatisch in ein ASCII umgewandelt. Du könntest das ganze mal mit einem neuen Projekt testen. Mit deaktiviertem Unicode.



  • Hmmm... unschön, wenn ich wegen sowas banalen wieder aud ANSI gehen muss.
    Habs erstmal mit WideCharToMultiByte() hinbekommen und nun läufts auch.

    Trotzdem danke für die Hilfe.



  • na deine Bass.dll kann nix mit Unicode anfangen, also entweder dein Projekt Umstellen oder vor der Übergabe Konvertieren.



  • So Problem gelöst.

    Man kann in der Bass.dll Unicode einschalten. War leider etwas versteckt in der Dokumentation. Jetzt klappts und ich muss nichts mehr umwandeln.

    Vielen Dank nochmals



  • Ansonsten CStringA verwenden.


Anmelden zum Antworten