AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Anwendung unicodefähig machen?

Anwendung unicodefähig machen?

Ein Thema von AlexII · begonnen am 4. Apr 2014 · letzter Beitrag vom 19. Aug 2014
Antwort Antwort
Seite 2 von 2     12
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#11

AW: Anwendung unicodefähig machen?

  Alt 4. Apr 2014, 18:25
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.
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.169 Beiträge
 
Delphi 10.4 Sydney
 
#12

AW: Anwendung unicodefähig machen?

  Alt 4. Apr 2014, 18:47
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
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von wicht
wicht

Registriert seit: 15. Jan 2006
Ort: Das schöne Enger nahe Bielefeld
809 Beiträge
 
Delphi XE Professional
 
#13

AW: Anwendung unicodefähig machen?

  Alt 4. Apr 2014, 18:50
Moin!

Dein BASS_StreamCreateURL-Aufruf muss so aussehen:

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.
http://streamwriter.org

"I make hits. Not the public. I tell the DJ’s what to play. Understand?"
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#14

AW: Anwendung unicodefähig machen?

  Alt 4. Apr 2014, 19:21
Moin!

Dein BASS_StreamCreateURL-Aufruf muss so aussehen:

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:

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.
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
Benutzerbild von wicht
wicht

Registriert seit: 15. Jan 2006
Ort: Das schöne Enger nahe Bielefeld
809 Beiträge
 
Delphi XE Professional
 
#15

AW: Anwendung unicodefähig machen?

  Alt 4. Apr 2014, 20:06
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...
http://streamwriter.org

"I make hits. Not the public. I tell the DJ’s what to play. Understand?"
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#16

AW: Anwendung unicodefähig machen?

  Alt 4. Apr 2014, 20:51
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.
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
SonnyBoyPro

Registriert seit: 9. Mai 2007
68 Beiträge
 
#17

AW: Anwendung unicodefähig machen?

  Alt 19. Aug 2014, 17:18
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 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
 FWebRadioStream := BASS_StreamCreateURL(pWideChar(s), 0, BASS_UNICODE or BASS_STREAM_BLOCK or BASS_STREAM_STATUS or BASS_STREAM_AUTOFREE, @StatusProc, nil); bg
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:11 Uhr.
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