![]() |
Unicode Compiler Option
Kleine Frage
Muss man in den Optionen vom Copiler etwas einstellen oder irgendwelche Define im code eintragen damit Unicode auch auf verschiedenen Systemen(Sprachen) funktioniert ? Hab da jemand in Korea sitzen wenn ich ihm meine DLL schicke funktioniert Unicode nicht. Nur dann wenn er es selbst compiliert aud seinen System. gruss Emil |
Re: Unicode Compiler Option
Delphi wird erst mit der demnächst erscheinenden Delphi-Version ohne Fremdkomponenten unicodefähig
|
Re: Unicode Compiler Option
Zitat:
Danke schön. gruss Emil |
Re: Unicode Compiler Option
Die letzte OpenSource-Version der TNT-Unicode-Komponentensammlung lässt sich noch finden
![]() |
Re: Unicode Compiler Option
Zitat:
Delphi-Quellcode:
Das funktioniert ohne problem
function EncodeUTF8(const Source: WideString): string;
var Index, SourceLength, CChar: Cardinal; begin { Convert unicode to UTF-8 } Result := ''; Index := 0; SourceLength := Length(Source); while Index < SourceLength do begin Inc(Index); CChar := Cardinal(Source[Index]); if CChar <= $7F then Result := Result + Source[Index] else if CChar > $7FF then begin Result := Result + Char($E0 or (CChar shr 12)); Result := Result + Char($80 or ((CChar shr 6) and $3F)); Result := Result + Char($80 or (CChar and $3F)); end else begin Result := Result + Char($C0 or (CChar shr 6)); Result := Result + Char($80 or (CChar and $3F)); end; end; end; function ToUnicodeString(s: pchar): WideString; var pw1 : array[0..1024] of WideChar; nLen1, nLen2, nLen3 : integer; begin nLen1 := Length(s); nLen2 := length(pw1); nLen3 := MultiByteToWideChar(CP_OEMCP, MB_PRECOMPOSED, s, nLen1, @pw1[0], nLen2); if nLen3 > 0 then begin pw1[nLen3] := chr(0); // *** We should put chr(0) at the end of string Result := WideString(pw1); end else Result := ''; end; function StrToUTF8(s: pchar): string; var w_str : WideString; begin w_str := ToUnicodeString(s); if w_str <> '' then result := EncodeUTF8(w_str) else result := ''; end; Aber nur wenn es auf dem jeweiligen System compiliert wird. Was ist an der Komponente anders ? gruss Emil |
Re: Unicode Compiler Option
Es ist keine einzelne Komponente sondern eine Sammlung von vielen Standardkomponenten.
|
Re: Unicode Compiler Option
Zitat:
Soweit gehe ich dann doch nicht. trotzdem Danke für den Hinweis. Gruss Emil |
Re: Unicode Compiler Option
Warum, diese Version ist doch frei
|
Re: Unicode Compiler Option
Zitat:
Zitat:
|
Re: Unicode Compiler Option
Ja, aber bis zur Version 2.3.0 war die Sammlung OpenSource
![]() |
Re: Unicode Compiler Option
Zitat:
gruss Emil |
Re: Unicode Compiler Option
Also wir haben das mal getestet
Compiliert in D2006 für Unicode funktioniert nicht auf einen Koreanischen System Compiliert mit D7 Enterprise funktioniert hier und auch auf einen koreanischen System also irgendwas ist da faul.. Weiß da jemand etwas genaueres drüber ? packt der Compiler von D2006 das nicht ? gruss Emil |
Re: Unicode Compiler Option
Zitat:
Zitat:
|
Re: Unicode Compiler Option
Zitat:
mit dem ich mich rumschlage. Zitat:
Nur das eine das die Schriftzeichen wenn in D7 compiliert 100% in Ordnung sind und mit dem Compiler von D2006 nicht. Beide haben den gleichen Source von der visualisierung aber unterschiedliche Exe-Dateien. Also an der EXE kann es nicht liegen. Kompiliert er auf seinen Koreanischen System mit D7 dann werden bei mir die Umlaute korrekt angezeigt Mache ich es hier mit D2006 fehlen bei ihm einige zeichen. Mit D7 ist alles in Ordnung das wundert mich ja. EDIT: Habe es mit meiner version siehe oben und mit dem "TMS Unicode Component Pack" getestet beides bleibt gleich und funktioniert genau so gut kann mir diese also sparen Es ist ein reines compiler problem. gruss Emil |
Re: Unicode Compiler Option
Wie werden denn die Text im Sourcecode angegeben?
Und wieso arbeitest du mit PChars als übergabe wenn du eigentlich Unicode-Zeichen hast? |
Re: Unicode Compiler Option
Zitat:
Die Texte werden aus der Anwendung als String übergeben bzw.. auch wieder als PChar oder WideString. Ist abhängig von dem was die Leute über ihre Anwendung an BassVis schicken und dann innerhalb der vis_BassVis verarbeitet wird. VB kennt kein WideString usw.. Ich kann also keinen reinen WideString innerhalb vis_BassVis verwenden sondern das was ankommt und das kann viel sein. Deshalb meine Funktion die dafür sorgt das der ankommende Text ins Unicode Format konvertiert wird. Aber wie gesagt alles spekulativ da es in D2006 mit dem Compiler einfach nicht richtig gebunden wird warum auch immer. Anders sehe ich das nicht denn wie schon gesagt in D7 gehts. Wüßte auch nicht warum der in Korea mir da was erzählen sollte was nicht stimmt. (Überprüfen kann ich allerdings nicht!) gruss Emil |
Re: Unicode Compiler Option
Versuchs es mal mit PWideChar
|
Re: Unicode Compiler Option
Zitat:
Wenn die Applikation einen string schickt dann ist der Unicode Part innerhalb des strings schon gebrochen was bedeutet das er nicht mehr UniCode fähig ist. Also muss ihn auf jedenfall selbst wieder ins Unicodeformat konvertieren Das funktioniert ja auch ohne probleme. Denke kann das problem so nicht lösen Werd die DLL dann mit D7 kompilieren wenn ich sie fertig ist. gruss Emil |
Re: Unicode Compiler Option
Interessant ist nur, dass der Compiler eigentlich seit D8 unicodefähig ist.
|
Re: Unicode Compiler Option
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Wenn Du mir die beiden Exen mal zukommen lassen kannst, zeig ich Dir im Detail wo es klemmt :) Zitat:
|
Re: Unicode Compiler Option
Zitat:
Schick dir gern den Quelltext zum testen zu. Seltsam ist das schon das ganze. gruss Emil |
Re: Unicode Compiler Option
Zitat:
Zitat:
Nur die EXE laufen nicht ohne Bass.dll und BassVis Zitat:
Es gibt eine auswahlmöglichkeit. Zusätzlich noch eine andere den BitmapFont zu verwenden. gruss Emil |
Re: Unicode Compiler Option
Zitat:
Da ich noch nicht einen vollständigen Test mit D2007 erledigt habe vermute ich eher ein internen Handlingfehler mit PChar/PWideChar/String/AnsiString. |
Re: Unicode Compiler Option
Zitat:
Mit internas von Delphi, mit der CodePage funktion der TextSuite selbst und mit der von mir zusammengeschusterten version. hmmm......... gruss Emil |
Re: Unicode Compiler Option
Und letzter großes Problem war das wird per API-Funktion mit der CP1252-Codepage einen UTF8-Text welcher in einem Widestring gelegen ist in einen Ansi-String kopieren mussten. Da manche Russische Rechner "optimiert" wurden das bei CP1252 die Russische Codepage verwendet wurde hat das unser UTF8-String nicht überlebt. Mußten dann die Codepagewandlung mit Delphi-Mitteln erledigen.
Kannst du das Problem mit einer VM-Ware-Installation nachvollziehen? |
Re: Unicode Compiler Option
Zitat:
Habe jetzt nochmal die bassplay und vis_BassVis mit D2006 compiliert aber es wird nicht richtig bei ihm angezeigt .. weiß da keinen rat mehr. Mal gehts mal nicht. Kann das wohl so nicht lösen. EDIT: Ist ja kein geheimnis wenn da wirklich jemand interesse hat bei dem problem zu helfen lade ich den Quelltext hoch das wäre das kleinste problem. das andere ist alles nur ein Ratespiel(zumindest für mich) gruss Emil |
Re: Unicode Compiler Option
Du musst für die Unicode Unterstützung auch wirklich komplett Unicode verwenden. Wenn du auch nur eine einzige Stelle hast an denen du kein Unicode benutzt, dann bringt das nix.
Zitat:
Alternativ zu WideStrings würden auch UTF8 kodierte Strings gehen. Die würden beim Zuweisen auf Strings nicht beschädigt werden. Aber das Kodieren und Dekodieren ist aufwändiger. Bzw die Wide Funktionen der Win API arbeiten normal über WideStrings. Wenn die Zeichen nie vorgelegen haben, dann werden sie auch nie wieder reingerechnet werden können. Und dann ist es egal ob du das selber machst oder nicht. Das geht nicht. Du darfst wirklich strikt nur mit WideStrings arbeiten. Ansonst hast du evtl. ein paar Unicodezeichen. Aber auch nur die die sich innerhalb der Codepage befinden. Da String und WideString Zuweisungskompatibel sind geht es leider sehr sehr schnell, dass man sich vorhandene WideStrings zerschießt. |
Re: Unicode Compiler Option
Zitat:
Dann könnte es an einer verhunzten ("Optimierten") Installation liegen Zitat:
|
Re: Unicode Compiler Option
Zitat:
EDIT: @Lossy Zitat:
Habe da keinen einfluss drauf. Kann das ganze nochmal ganz pingelig genau überprüfen. Aber auch dann würde wenn die Anwendung einen string anstelle eines widestring schickt es auch nicht funktionieren Frage mich nur wie andere das machen.. wenn sie die gleichen vorraussetzungen vorfinden. gruss Emil |
Re: Unicode Compiler Option
Also für Oberflächeelemente darfst du dann natürlich keine VCL Komponenten mehr benutzen. Sondern dann auf die TNTs oder ähnliche umstellen. Wenn dann ein Text eingegeben würde, dann würdest du einen passenden WideString bekommen.
String und WideString: Wenn "die Anwendung" nur einen Ansi String schickt, dann kann niemand verlangen, dass Unicode richtig unterstützt wird. Genau so gut könnte man verlangen, dass ein Ottomotor mit Wasser läuft. Das geht nicht. ;) 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. |
Re: Unicode Compiler Option
Zitat:
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 |
Re: Unicode Compiler Option
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. :roll:
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. |
Re: Unicode Compiler Option
Zitat:
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 |
Re: Unicode Compiler Option
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. |
Re: Unicode Compiler Option
Zitat:
Zitat:
Zitat:
Zitat:
Delphi-Quellcode:
Also die API ist Delphi und mein Hauptsample ist auch in Delphi
{' 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. gruss Emil |
Re: Unicode Compiler Option
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 |
Re: Unicode Compiler Option
Zitat:
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 |
Re: Unicode Compiler Option
Moin!
Zitat:
MfG Muetze1 |
Re: Unicode Compiler Option
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. |
Re: Unicode Compiler Option
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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz