AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Unicode Compiler Option

Ein Thema von EWeiss · begonnen am 17. Jul 2008 · letzter Beitrag vom 18. Jul 2008
Antwort Antwort
Seite 4 von 4   « Erste     234   
EWeiss
(Gast)

n/a Beiträge
 
#31

Re: Unicode Compiler Option

  Alt 17. Jul 2008, 13:05
Zitat:
Vorraussetzungen. Da weiß ich gerade nicht was du im speziellen meinst. Ich muss aber gestehen, dass ich bei deinem Projekt nie so genau verstanden hatte was da woher kam und welche Teile von dir programmiert werden und welche schon von anderen programmiert wurden und von dir nur benutzt werden.
Na ja was da zu verstehen ist ..
Einmal was ich hier erarbeitet habe das ist ne menge schau dir doch die Threads an.
TextSuite natürlich nicht habe ich auch nie als meine Arbeit ausgegeben.
Genau so wenig wie die OpenGL Header.

Leute die einen beitrag geleistet haben stehen im About Dialog.
Und abschließend ja bin kein Profi so wie du .. muß man also nicht abwerten.

Zu allerletzt mache ich das für die öffenlichkeit das alle was davon haben.
Meistens sind es LEute wie ich die so etwas auf die Beine stellen.
Informatiker geben sich damit nicht ab.

Das war dann genug OffTopic.

Nehme es dir aber nicht übel ..

gruss Emil
  Mit Zitat antworten Zitat
Benutzerbild von Lossy eX
Lossy eX

Registriert seit: 7. Aug 2007
113 Beiträge
 
#32

Re: Unicode Compiler Option

  Alt 17. Jul 2008, 15:04
Ich glaube da gab es gerade ein Missverständniss. Ich wollte dich damit keineswegs in irgendeiner Art angreifen oder das Thema OffTopic werden lassen. Ich muss aber gestehen, dass ich mich, in dem von dir zitierten Teil, nicht wirklich gut ausgedrückt habe.

Ich habe lediglich versucht heraus zu finden
- woher die Texte kommen?
- welchen Weg sie durch die Anwendung/Plugins etc. nehmen?
- und auf welche Programmteile du Einfluss nehmen kannst?

Also insgesammt wie die Verarbeitung der Texte von statten geht? Denn ich für meinen Teil weiß nicht wie die Visualisierung und die VB Codes dort genau zusammen gehören und was die VB Codes zu den Texten beitragen. Und ich weiß auch nicht welche Rolle der Player dabei spielt. Und die Texte werden ja vermutlich über mehrere Programmteile gereicht. Und die müssen dann alle damit klar kommen.

Und das Ganze interessiert mich unter folgendem Hintergrund. Solltest du "nur" ein Visualisierungsplugin für einen bestehenden Player schreiben und wenn dieser dir nur ansi texte reicht, dann sehe ich so keine Möglichkeit da wirklich volle Unicode unterstützung zu ermöglichen. Denn woher solltest du die Informationen dann schon nehmen. Möchtest du aber auch den Player dazu schreiben, dann sieht das evtl. schon wieder ganz anders aus.
Ich habe ja keine Vorurteile gegenüber Autofahrern ... aber Fahrer von BMW und Mercedes bestätigen diese regelmäßig.
Außerdem neue technologische Errungenschaften: Serienmäßig eingebaute Rechtsfahrsperre und der stromsparende Blinker.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#33

Re: Unicode Compiler Option

  Alt 17. Jul 2008, 15:29
Zitat:
- woher die Texte kommen?
- welchen Weg sie durch die Anwendung/Plugins etc. nehmen?
- und auf welche Programmteile du Einfluss nehmen kannst?
Eine vom Developer geschriebene Anwendung VB, Net, Delphi, C++ oder was auch immer
verwendet den von mir entwickelten Wrapper welcher verschiedene Plugin Kinder verwaltet
Winamp, Sonique, WMP und BassBox.

Die Anwendung schickt die Texte und andere dinge an den Wrapper für das jeweilige Visualisations Plugin das er verwendet.
Der Wrapper schickt und holt Daten vom Plugin und gibt sie zurück an die Anwendung.
Das Plugin arbeitet nur mit dem Wrapper zusammen stört sich nicht an der Anwendung.
Alle Callbacks usw.. laufen also über den.

Die ganze sache geht also über drei verschiedene Kanäle
während es bei Winamp nur einer ist.

Ich kann auf alle Programmteile einfluss nehmen..
Habe für fast alle Sprachen die unterstützt werden ein Sample geschrieben
So das der User mit der Library vernünftig arbeiten kann.
VB, C#, Delphi, VB_Net für mehr hats nicht gereicht.

EDIT:
Das Plugin ist eigentlich für Winamp konzipiert.
Und der sollte mit Unicode eigentlich klar kommen.
Da mein Wrapper aber das VisInterface unterstützt habe ich nun das problem mit unicode
wenn eine andere Anwendung dieses verwenden will.

gruss Emil
  Mit Zitat antworten Zitat
Benutzerbild von Lossy eX
Lossy eX

Registriert seit: 7. Aug 2007
113 Beiträge
 
#34

Re: Unicode Compiler Option

  Alt 17. Jul 2008, 16:32
Wenn ich das richtig verstanden habe, dann hast du ein Pluginsystem geschrieben welches Plugins von verschiedenen Typen (winamp, sonique etc) ansteuern kann?

Benutzt du für deinen Wrapper eine eigene Schnittstelle oder eine die schon existiert? Also um deinen Wrapper im Winamp benutzen zu können. Dann wäre der Wrapper auch eine Winamp Visualisierung und könntest dann Visualisierungen aus anderen Programmen benutzen. Wenn du eine bestehende Schnittstelle benutzt wie sieht die denn aus? Bzw wie werden da die Daten übergeben?

Wobei ich gerade mal mit dem MediaMonkey und der Windows Zeichentabelle mal ein paar kyrillische Buchstaben zusammen geklickt habe und diese als Dateiname und als Titel eingefügt hatte. Und dort kam im Milkdrop der passende Text an (sofern das passende Fonts ausgewählt wurde). Milkdrop ist eigentlich ein Winamp plugin und MediaMonkey ein Delphi Program was Winamp Plugins benutzen kann. Ich weiß aber nicht wie das da intern geregelt wird. Und unter Vorbehalt dass ich dich richtig verstanden habe.
Ich habe ja keine Vorurteile gegenüber Autofahrern ... aber Fahrer von BMW und Mercedes bestätigen diese regelmäßig.
Außerdem neue technologische Errungenschaften: Serienmäßig eingebaute Rechtsfahrsperre und der stromsparende Blinker.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#35

Re: Unicode Compiler Option

  Alt 17. Jul 2008, 16:41
Zitat:
Benutzt du für deinen Wrapper eine eigene Schnittstelle oder eine die schon existiert?
Eine eigene API
Zitat:
Also um deinen Wrapper im Winamp benutzen zu können.
Nein nur um di Plugins von Winamp nutzen zu können (vis_BassVis) als Beispiel
Zitat:
Dann wäre der Wrapper auch eine Winamp Visualisierung und könntest dann Visualisierungen aus anderen Programmen benutzen.
Keine Visualisierung eine schnittstelle zwischen Anwendung und Plugin Kind
Zitat:
Bzw wie werden da die Daten übergeben?
So..
Delphi-Quellcode:
{' UNIT BassVis.pas
'--------------------------- BassVis API Module -----------------------------
' BassVis ADD-ON for Bass Audio Library
' Copyright © 2006-2008 BrewIdeas@Emil Weiss, All Rights Reserved
'
' Author(s) of this Unit: Emil Weiss
'
' Code was written in and formatted for 10pt Courier New
'----------------------------------------------------------------------------}


unit BassVis;

interface

uses
  Windows;

type
  HVIS = DWORD;
  QWORD = Int64;

const

  dllfile = 'bass_vis.dll'; //filename of the DLL
  
  // BASS_SONIQUEVIS_CreateVis flags
  BASS_VIS_NOINIT = 1;

  // BASS_SONIQUEVIS_SetConfig flags
  BASS_SONIQUEVIS_CONFIG_FFTAMP = 1;
  BASS_SONIQUEVIS_CONFIG_FFT_SKIPCOUNT = 2; // Skip count range is from 0 to 3 (because of limited FFT request size)
  BASS_SONIQUEVIS_CONFIG_WAVE_SKIPCOUNT = 3; // Skip count range is from 0 to (...) try it out, whenever Bass crashes or does not return enough sample data
  BASS_SONIQUEVIS_CONFIG_SLOWFADE = 4; // Dim light colors to less than half, then slowly fade them out

  // BASS_WINAMP_SetConfig flags
  BASS_WINAMPVIS_CONFIG_FFTAMP = 1;

  // BASS_WMPVIS_SetConfig flags
  BASS_WMPVIS_CONFIG_FFTAMP = 1;

  // BASS_VIS_FindPlugin flags
  BASS_VIS_FIND_RECURSIVE = 4;

  //Plugin arten
  BASSVISKIND_NONE = 0; // keins aktiv
  BASSVISKIND_WINAMP = 1; // Winamp
  BASSVISKIND_SONIQUE = 2; // Sonique
  BASSVISKIND_WMP = 3; // WMP
  BASSVISKIND_BASSBOX = 4; // BassBox
  
type
  TBASSVIS_KIND_T = integer;

  PBASSVIS_PARAM = ^TBASSVIS_PARAM;
  TBASSVIS_PARAM = record
    VisHandle : HVIS; // VisHandle
    VisWinHandle : HWND; // Vis Window Handle W2
    VisGenWinHandle : HWND; // General Vis Window Handle W5
    Kind : TBASSVIS_KIND_T; // Aktive Plugin Art
  end;

  //Definition der Records für die variablen Parameter bei Create bzw. Execute
  //WMP: Handle des Fensters braucht nicht definiert werden, da es bereits beim init mitgegeben wird
  PBASSVIS_EXEC = ^TBASSVIS_EXEC;
  TBASSVIS_EXEC = record
    AMP_SON_BB_Pluginfile : PChar; // Dateiname des Plugins
                                    // für Sonique, Winamp, BassBox
    AMP_UseOwnW1 : DWORD; // Flag für Winamp (ownHDC)
    AMP_UseOwnW2 : DWORD; // Flag für Winamp (ownHDCW2)
    AMP_Moduleindex : DWORD; // Modul-index für Winamp
    SON_PaintHandle : HDC; // Painthandle für Sonique
    SON_ConfigFile : PChar; // Dateiname der Konfiguration für Sonique
    SON_Flags : DWORD; // Flags für Sonique
    WMP_PluginIndex : integer; // Pluginindex für WMP;
    WMP_PresetIndex : integer; // Presetindex für WMP;
    WMP_SrcVisHandle : HWND; // ContainerVisHandle für WMP;
    BB_ParentHandle : HWND; // Parent Windowhandle
    BB_Flags : DWORD; // Flags für BassBox selbe wie Sonique
    BB_ShowFPS : BOOL; // Frames pro Sekunde anzeigen
    BB_ShowPrgBar : BOOL; // Progressbar anzeigen
    Width, Height : integer; // Fensterhöhe und Breite
    Left, Top : integer; // Left und Top;
  end;

  PBASSVIS_INFO = ^TBASSVIS_INFO;
  TBASSVIS_INFO = record
    SongTitle : PChar; // Titel mit vorstehener TitelNr ('1. ')
    Songfile : PChar; // SongTitel incl. Pfad
    pos : DWORD; // 1000 * Aktuelle Position im Stream
    len : DWORD; // Stream länge
    PlaylistPos : DWORD; // Playlist Position
    Playlistlen : DWORD; // Playlist einträge
    SampleRate : integer; // SämpleRate
    BitRate : integer; // BitRate
    Duration : DWORD; // abgelaufen Zeit
    Channels : integer; // Kanäle default 2 (stereo)

  end;

  TPlayState = (psError = 99, psStop = 0, psPlay = 1,
                   psIsPlaying = 2, psPause= 3,
                   psPrevTitle = 4, psNextTitle = 5,
                   psSetPlaylistTitle = 6, psGetPlaylistTitlePos = 7,
                   psSetPlaylistPos = 8, psGetSelectedTitlePos = 9);


TBASSVIS_STATECALLBACK = procedure(NewState:TPlayState); stdcall;

function BASSVIS_Init(Kind: TBASSVIS_KIND_T;
    AppHandle: HWND;
    WinHandle: HWND
): BOOL; stdcall; external dllfile;


function BASSVIS_FindPlugins(Kind: TBASSVIS_KIND_T;
    PluginPath: PChar;
    Searchflags: DWORD;
    delimiter : char = ','
): PChar; stdcall; external dllfile;


function BASSVIS_GetPluginHandle(Kind: TBASSVIS_KIND_T;
    Pluginfile: PChar
): DWORD; stdcall; external dllfile;


procedure BASSVIS_ExecutePlugin(Param: PBASSVIS_EXEC;
    var Base: TBASSVIS_PARAM
); stdcall; external dllfile;


function BASSVIS_RenderChannel(Param: PBASSVIS_PARAM;
    channel: DWORD
): BOOL; stdcall; external dllfile;


function BASSVIS_StartRecord(Param: PBASSVIS_PARAM;
    SampleRate: integer = 44100;
    Channels: integer = 2
): BOOL; stdcall; external dllfile;


function BASSVIS_Config(Param: PBASSVIS_PARAM;
    Entry: integer = 0
): BOOL; stdcall; external dllfile;


function BASSVIS_SetInfo(Param: PBASSVIS_PARAM;
    Infos: PBASSVIS_INFO
): BOOL; stdcall; external dllfile;


function BASSVIS_Resize(Param: PBASSVIS_PARAM;
    Left,Top,Width,
    Height: DWORD
): BOOL; stdcall; external dllfile;


function BASSVIS_SetFullscreen(Param: PBASSVIS_PARAM;
    SourceHandle, DestHandle: HWND;
    SourceLeft, SourceTop,
    SourceWidth, SourceHeight: DWORD;
    FullScreenFlag: Boolean;
    FullScreeWidth, FullScreenHeight: DWORD
): BOOL; stdcall; external dllfile;


function BASSVIS_GetModulePresetCount(Param: PBASSVIS_PARAM;
    PluginName: PChar
): integer; stdcall; external dllfile;


function BASSVIS_GetModulePresetName(Param: PBASSVIS_PARAM;
    index: integer;
    PluginName: PChar = nil
): PChar; stdcall; external dllfile;


function BASSVIS_GetModulePresetNameList(param: PBASSVIS_PARAM;
   Pluginname:Pchar = NIL
):Pchar;stdcall; external dllfile;


function BASSVIS_GetOption(Param: PBASSVIS_PARAM;
    option: integer
): integer; stdcall; external dllfile;


function BASSVIS_SetOption(Param: PBASSVIS_PARAM;
    option: integer;
    Value: integer
): BOOL; stdcall; external dllfile;


function BASSVIS_SetPlayState(Param: PBASSVIS_PARAM;
    State: TPlayState;
    Value: integer = -1;
    Title: PChar = nil
): integer; stdcall; external dllfile;


procedure BASSVIS_SetVisPort(Param: PBASSVIS_PARAM;
    WindowHandle: HWND;
    ContainerHandle: HWND;
    x, y, Width, Height: integer
); stdcall;external dllfile;


function BASSVIS_GetPluginName(Param: PBASSVIS_PARAM): PChar; stdcall; external dllfile;
function BASSVIS_IsFree(Param: PBASSVIS_PARAM): BOOL; stdcall; external dllfile;
function BASSVIS_Free(Param: PBASSVIS_PARAM): BOOL; stdcall; external dllfile;
function BASSVIS_GetVersion: pchar; stdcall; external dllfile;
procedure BASSVIS_Quit(Param: PBASSVIS_PARAM);stdcall; external dllfile;

//Spezial für Winamp
procedure BASSVIS_WINAMP_SetStateCallback(callback:TBASSVIS_STATECALLBACK);stdcall;external dllfile;
procedure BASSVIS_WINAMP_RemoveCallback;stdcall;external dllfile;

//Spezial für Sonique
function BASSVIS_SONIQUEVIS_Clicked(handle: HVIS; x, y: DWORD): boolean; stdcall;external dllfile;
function BASSVIS_SONIQUEVIS_RenderToDC(Kind: TBASSVIS_KIND_T; handle: HVIS; channel: DWORD; canvas: HDC): boolean; stdcall; external dllfile;
function BASSVIS_SONIQUEVIS_RenderToDC2(Kind: TBASSVIS_KIND_T; handle: HVIS; Data, fft: Pointer; canvas: DWORD; flags, pos: DWORD): boolean; stdcall; external dllfile;

//Spezial für WMP
function BASSVIS_SetModulePreset(Param: PBASSVIS_PARAM;index: integer): BOOL; stdcall; external dllfile;

implementation

end.
Also die API ist Delphi und mein Hauptsample ist auch in Delphi

gruss Emil
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#36

Re: Unicode Compiler Option

  Alt 17. Jul 2008, 16:46
Moin!

Ich sehe da überall PChar und somit 1-Byte Zeichensätze und kein Widestring. Somit wird da intern von Delphi konvertiert und es kommt immer was anderes raus, wenn Widestrings übergeben werden.

MfG
Muetze1
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#37

Re: Unicode Compiler Option

  Alt 17. Jul 2008, 16:59
Zitat von Muetze1:
Moin!

Ich sehe da überall PChar und somit 1-Byte Zeichensätze und kein Widestring. Somit wird da intern von Delphi konvertiert und es kommt immer was anderes raus, wenn Widestrings übergeben werden.

MfG
Muetze1
Ja korrekt wenn ich es für Unicode ändern muss wäre das kein Problem.
Damit wäre es aber nicht erledigt denn wie lossy sagt wäre das nächste FindNext und FindFirst in der DLL

überlege.....
Wenn die Schnittstelle und BassVis nicht korrekt auf Unicode umgestellt werden gehts auch mit anderen
Plugins nicht welche UC unterstützen.

gruss Emil
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#38

Re: Unicode Compiler Option

  Alt 17. Jul 2008, 17:02
Moin!

Zitat von EWeiss:
Damit wäre es aber nicht erledigt denn wie lossy sagt wäre das nächste FindNext und FindFirst in der DLL
Es beschränkt sich nicht darauf sondern auf alle WinAPI Funktionen - entweder direkt oder indirekt (RTL/VCL) aufgerufen.

MfG
Muetze1
  Mit Zitat antworten Zitat
Benutzerbild von Lossy eX
Lossy eX

Registriert seit: 7. Aug 2007
113 Beiträge
 
#39

Re: Unicode Compiler Option

  Alt 17. Jul 2008, 19:30
Also ich denke auch das du das ändern solltest. Dann wäre es in jedem Fall ein solider Stand. In der TextSuite habe ich es ähnlich wie die Windows API gehalten. Also von den Methoden mit Text gibt es 2 Varianten. Die Ansi Methoden haben ein A am Ende und die für WideString ein W. Und intern arbeite ich überwiegend nur mit WideStrings. Die Ansi Varianten konvertieren den Text vorher in einen WideString. Außnahme sind Dateinamen, da ich nicht weiß wie das Gegenstück in Linux heißt.

Windows API (FindFirst/FindNext): In der Windows API haben alle Methoden mit Strings 2 Varianten. Allerdings dürfte für dich wahrscheinlich nur ein paar wirklich von interesse sein. FindFirstW/FindNextW und CreateFileW werfe ich mal so in den Raum. Und eventuell eine GUI. Denn so extrem viele wirklich abhängigen Sachen wirst du vermutlich gar nicht nutzen. Für solche Dinge wie "Private" Einstellungen in der Registry gibts zwar auch Unicode Varianten aber die werden nicht nötig sein.
Ich habe ja keine Vorurteile gegenüber Autofahrern ... aber Fahrer von BMW und Mercedes bestätigen diese regelmäßig.
Außerdem neue technologische Errungenschaften: Serienmäßig eingebaute Rechtsfahrsperre und der stromsparende Blinker.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#40

Re: Unicode Compiler Option

  Alt 18. Jul 2008, 04:27
Danke an alle für ihre Teilnahme
Werde dann erst mal meine API nach dem Vorschlag von @mkinzler nach PWideChar umstellen.
Schaden kann das nicht.

gruss Emil
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 4   « Erste     234   


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 00:17 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