Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Anwendung unicodefähig machen? (https://www.delphipraxis.net/179822-anwendung-unicodefaehig-machen.html)

AlexII 4. Apr 2014 18:25

AW: Anwendung unicodefähig machen?
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1254688)
Zitat:

Zitat von AlexII (Beitrag 1254683)
Zitat:

Zitat von hoika (Beitrag 1254678)
Hallo,

Du brauchst eine Unicodefähige Schnittstellenbeschreibung.

bass.dll ist eigentlich schon Unicodefähig... hm...

Die API ist AnsiString. Mit gesetzten Flag werden die Strings UTF8-Codiert erwartet.

Das heißt ich kann alles so lassen wie oben im Beispiel? Bin jetzt noch mehr verwirrt.

Bernhard Geyer 4. Apr 2014 18:47

AW: Anwendung unicodefähig machen?
 
Zitat:

Zitat von AlexII (Beitrag 1254690)
Zitat:

Zitat von Bernhard Geyer (Beitrag 1254688)
Zitat:

Zitat von AlexII (Beitrag 1254683)
Zitat:

Zitat von hoika (Beitrag 1254678)
Hallo,

Du brauchst eine Unicodefähige Schnittstellenbeschreibung.

bass.dll ist eigentlich schon Unicodefähig... hm...

Die API ist AnsiString. Mit gesetzten Flag werden die Strings UTF8-Codiert erwartet.

Das heißt ich kann alles so lassen wie oben im Beispiel? Bin jetzt noch mehr verwirrt.

AFAIK nein. Du musst dafür sorgen das alle Strings UTF8 Codiert werden. Delphi (ab D2009) verwendet standardmäßig UTF-16 (String) bzw. AnsiStrings (AnsiString). Evtl. reicht es die Schnittstellendefinition von (Ansi-)String auf UTF8-String zu ändern. Evtl. sorgt die Compiler-Magic hier für eine automatische Codierung

wicht 4. Apr 2014 18:50

AW: Anwendung unicodefähig machen?
 
Moin!

Dein BASS_StreamCreateURL-Aufruf muss so aussehen:

Delphi-Quellcode:
chan := BASS_StreamCreateURL(url, 0, BASS_STREAM_BLOCK or BASS_STREAM_STATUS or BASS_STREAM_AUTOFREE or BASS_UNICODE, @StatusProc, nil);


Man beachte dabei das Flag BASS_UNICODE. "url" muss dann natürlich PChar werden, oder PWideChar, aber nicht PAnsiChar. Das steht alles in der Hilfe, die mit BASS ausgeliefert wird.

AlexII 4. Apr 2014 19:21

AW: Anwendung unicodefähig machen?
 
Zitat:

Zitat von wicht (Beitrag 1254694)
Moin!

Dein BASS_StreamCreateURL-Aufruf muss so aussehen:

Delphi-Quellcode:
chan := BASS_StreamCreateURL(url, 0, BASS_STREAM_BLOCK or BASS_STREAM_STATUS or BASS_STREAM_AUTOFREE or BASS_UNICODE, @StatusProc, nil);
Man beachte dabei das Flag BASS_UNICODE. "url" muss dann natürlich PChar werden, oder PWideChar, aber nicht PAnsiChar. Das steht alles in der Hilfe, die mit BASS ausgeliefert wird.

In der bass.pas steht aber folgendes:

Delphi-Quellcode:
function BASS_StreamCreateURL(url: PAnsiChar; offset: DWORD; flags: DWORD; proc: DOWNLOADPROC; user: Pointer):HSTREAM; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll;
url ist also vom Datentyp PAnsiChar. Darf ist den Datentyp an dieser Stelle ändern? Habe es auch gemacht, bekomme aber einen Fehler.

wicht 4. Apr 2014 20:06

AW: Anwendung unicodefähig machen?
 
Tatsache. Änder die Funktion mal zum Testen auf "Pointer". Ich nutze die Funktion BASSStreamCreateFile, die nimmt einen Pointer entgegen, und laut Hilfe ist das BASS_UNICODE Flag für beide Funktionen gültig. Das könnte mit etwas Glück funktionieren...

AlexII 4. Apr 2014 20:51

AW: Anwendung unicodefähig machen?
 
Zitat:

Zitat von wicht (Beitrag 1254700)
Tatsache. Änder die Funktion mal zum Testen auf "Pointer". Ich nutze die Funktion BASSStreamCreateFile, die nimmt einen Pointer entgegen, und laut Hilfe ist das BASS_UNICODE Flag für beide Funktionen gültig. Das könnte mit etwas Glück funktionieren...

Ne da habe ich leider kein Glück, es funktioniert nicht.

SonnyBoyPro 19. Aug 2014 17:18

AW: Anwendung unicodefähig machen?
 
Hallo Alex II,

falls das Problem noch nicht gelöst wurde:

Definition in BASS.h
Code:
static inline HSTREAM BASS_StreamCreateURL(const WCHAR *url, DWORD offset, DWORD flags, DOWNLOADPROC *proc, void *user)
{
   return BASS_StreamCreateURL((const char*)url, offset, flags|BASS_UNICODE, proc, user);
}
daher
in BASS.pas
Delphi-Quellcode:
function BASS_StreamCreateURL(url: PWideChar; offset: DWORD; flags: DWORD; proc: DOWNLOADPROC; user: Pointer):HSTREAM; {$IFDEF MSWINDOWS}stdcall{$ELSE}cdecl{$ENDIF}; external bassdll;
ändern und
schon klappt der Aufruf
Delphi-Quellcode:
 FWebRadioStream := BASS_StreamCreateURL(pWideChar(s), 0, BASS_UNICODE or BASS_STREAM_BLOCK or BASS_STREAM_STATUS or BASS_STREAM_AUTOFREE, @StatusProc, nil);
bg


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:19 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz