AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Ist wahres Unicode mit Delphi überhaupt möglich?
Thema durchsuchen
Ansicht
Themen-Optionen

Ist wahres Unicode mit Delphi überhaupt möglich?

Ein Thema von blackdrake · begonnen am 7. Aug 2008 · letzter Beitrag vom 23. Aug 2008
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#11

Re: Ist wahres Unicode mit Delphi überhaupt möglich?

  Alt 7. Aug 2008, 14:01
http://www.yunqa.de/delphi/doku.php/...controls/index
http://www.mh-nexus.de/tntunicodecontrols.htm
Markus Kinzler
  Mit Zitat antworten Zitat
christian_u

Registriert seit: 13. Nov 2006
126 Beiträge
 
#12

Re: Ist wahres Unicode mit Delphi überhaupt möglich?

  Alt 7. Aug 2008, 14:14
Zitat:
Vielen Dank für den Hinweis. Ich werd es mir mal anschauen. Ich befürchte aber, dass man seine Projekte nicht einfach reinschieben und sofort wieder nutzen kann (jedoch unter der Annahme, dass man nur Standard-VCLs sowie die Indy's nutzt). Ich werde das Programm trotzdem mal genauer testen.
Die LCL (Lazarus Component Library) ist weitestgehend kompatibel zur VCL. Es kommt immer drauf an was du nutzt, und wie komplex deine projekte sind. Es ist etwas aufwand Projekte anzupassen und einige dinge werden auch nicht funktionieren. Solang man Standart VCL Komponenten nutzt wird die erfolgsquote bei ca 90% liegen. Bei Winapi vieleicht noch bei 30%. Kommt auch aufs Betriebsystem und Widgetset an Lazarus unterstützt ja auch MacOS und Linux. Auf Windows läuft der WinAPI kram natürlich 100%. Indy ist sone Sache. Das ding ist an sich schon so verbuggt das die paar bugs die durchs Lazarus hinzukommen das eigentlich unbenutzbar machen. Da würd ich ernsthaft darüber nachdenken was saubereres zu nehmen. Synapse z.b. das läuft unter Delphi wie Lazarus 1:1 oder LNet da weiss ich allerdings nicht obs ein Delphi package gibt.
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#13

Re: Ist wahres Unicode mit Delphi überhaupt möglich?

  Alt 7. Aug 2008, 20:00
Zitat von blackdrake:
1. Das Programm bekommt einen Unicodenamen über die Befehlszeile.
> Geht nicht. ParamStr() gibt nur einen String von sich, keinen Widestring!
Das liegt daran, dass dich die Funktion paramStr(0) derzeit auf die WinAPI "GetModuleFileNameA" schickt. Dabei steht das A für Ansi. Es gibt aber auch die Funktion "GetModuleFileNameW" Wie du sieht, eine kleine Änderung mit großen Wirkungen
Delphi ist ja soweit gegangen, dass es die Funktion "GetModuleFileName" implementiert und gleich auf GetModuleFileNameW umleitet. Schau mal in die Unit Windows!

Mit allen weiteren Funktionen verhält es sich ähnlich. Wenn man String plötzlich als WideString und die Funktionen der WinAPI anders lenkt ist schon ein großer Teil geschafft (zumindest für Windows-like-UniCode).
Aber der Teufel steckt sicher auch da noch in diversen Detaild. Dass der ausgetrieben wird, dafür bezahlen wir ja schließlich auch Borland...äh...CodeGear...äh...Emdingsdabums
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#14

Re: Ist wahres Unicode mit Delphi überhaupt möglich?

  Alt 7. Aug 2008, 20:10
Ich habe eben mal nachgesehen - und es ist (wie erwartet) wirklich so, dass GetCommandLine (und dieser Funktion bedient sich ParamStr()) per Standard auf die Unicode-Variante zugreift. Du hast darüber hinaus noch die Möglichkeit, explizit auf die Ansi-Variante zuzugreifen, sofern Dir dies ein Bedürfnis ist.

Delphi-Quellcode:
[...]
{Auszug aus der System.poas von Tiburón}
function GetCommandLineA: PAnsiChar; stdcall; external kernel name 'GetCommandLineA';
function GetCommandLineW: PWideChar; stdcall; external kernel name 'GetCommandLineW';
{$IFNDEF UNICODE}
function GetCommandLine: PAnsiChar; stdcall; external kernel name 'GetCommandLineA';
{$ELSE}
function GetCommandLine: PWideChar; stdcall; external kernel name 'GetCommandLineW';
{$ENDIF}
[...]
Um dem Protokoll Genüge zu tun: Ich bin von CodeGear autorisiert, diese Beta-Informationen zu veröffentlichen aber auch verpflichtet, diesen Nachsatz stets zu erwähnen.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
blackdrake

Registriert seit: 21. Aug 2003
Ort: Bammental
618 Beiträge
 
Delphi 10.3 Rio
 
#15

Re: Ist wahres Unicode mit Delphi überhaupt möglich?

  Alt 7. Aug 2008, 20:22
Zitat von mkinzler:
http://www.yunqa.de/delphi/doku.php/products/tntunicodecontrols/index
http://www.mh-nexus.de/tntunicodecontrols.htm
Irgendwie bin ich jetzt ein wenig verwirrt. Ist das jetzt Freeware? Ich dachte, das Teil wäre aufgekauft worden und kostet nun ca. 70 Euro. Oder sind das alte Versionen der VCL?

Zitat von Daniel:
Ich habe eben mal nachgesehen - und es ist (wie erwartet) wirklich so, dass GetCommandLine (und dieser Funktion bedient sich ParamStr()) per Standard auf die Unicode-Variante zugreift. Du hast darüber hinaus noch die Möglichkeit, explizit auf die Ansi-Variante zuzugreifen, sofern Dir dies ein Bedürfnis ist.
Ui. Ich vergesse immer, dass so viel von der API abgeleitet ist. Ich dachte nicht, dass ParamStr() sich auch der API bedient, deswegen hatte ich nicht nachverfolgt.

Zu meinem Fall: Meine Datei würde über ParamStr (API +W) oder OpenDialog (Ext.VCL) reinkommen. Anschließend in einem Label (Ext.VCL) dargestellt. Danach per Indy per POST an einer Webseite gesendet. Indy scheint WideStrings soweit ich das sehe bei MultiPartData-AddFile() zu akzeptieren (aber Source ist nicht bei Turbo-Delphi dabei). Jetzt müsste ich mich um die externen VCLs OpenDialog und Label kümmern.
Daniel Marschall
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#16

Re: Ist wahres Unicode mit Delphi überhaupt möglich?

  Alt 7. Aug 2008, 20:35
Zitat von Daniel:
Ich habe eben mal nachgesehen - und es ist (wie erwartet) wirklich so, dass GetCommandLine...
Um dem Protokoll Genüge zu tun: Ich bin von CodeGear autorisiert, diese Beta-Informationen zu veröffentlichen aber auch verpflichtet, diesen Nachsatz stets zu erwähnen.
Darfst du auch den Inhalt der Funktion ParamStr posten um zu sehen wie intern dieser Aufruf erfolgt?
Eigentlich müßt ja viel mit PChar dortstehen und je nach Compilerschalter is PChar = PAnsiChar bzw. PChar = PWideChar.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#17

Re: Ist wahres Unicode mit Delphi überhaupt möglich?

  Alt 7. Aug 2008, 20:43
Zitat von Bernhard Geyer:
Eigentlich müßt ja viel mit PChar dortstehen und je nach Compilerschalter is PChar = PAnsiChar bzw. PChar = PWideChar.
Ja, nein, doch - also eigentlich nein.

In Delphi 2009 ist PChar = PWideChar. Da führt kein Weg dran vorbei. Wenn Du den "alten" Char möchtest, bei dem noch 1 Zeichen = 1 Byte war, dann musst Du explizit PAnsiChar verwenden. Analog gilt Gleiches für Strings.

In sich ist das System also weiterhin stimmig und deswegen ging das mit der Portierung auf weiten Strecken auch recht flott. Man biegt den API-Aufruf auf die "W"-Variante um und - wenigstens in diesem Fall - am Ziel. Dieses Prinzip funktioniert auf weiten Strecken der Portierung, bis genau zu der Stelle, an der man nicht sauber mit SizeOf() und Konsorten gearbeitet hat, sondern den String in seine Bytes zu zerlegen versucht.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Benutzerbild von Gausi
Gausi

Registriert seit: 17. Jul 2005
847 Beiträge
 
Delphi 11 Alexandria
 
#18

Re: Ist wahres Unicode mit Delphi überhaupt möglich?

  Alt 7. Aug 2008, 20:44
Vor der Übernahme durch TMS standen die TNT Unicode Controls unter der LGPL. Diese etwas älteren Versionen findet man immer noch auf diversen Seiten unter eben dieser Lizenz. Die aktuellsten Versionen muss man dann bei TMS kaufen, wenn man sie braucht.
The angels have the phone box.
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#19

Re: Ist wahres Unicode mit Delphi überhaupt möglich?

  Alt 7. Aug 2008, 20:56
Zumindest sind die JEDI Projekte JVCL, JCL (größte Teile), API und WSCL für die neue Version gerüstet.
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#20

Re: Ist wahres Unicode mit Delphi überhaupt möglich?

  Alt 7. Aug 2008, 21:00
Noch mal kurz zur Demonstration:

Ich habe mein Vista mal auf Japanisch umgestellt. Das hat beispielsweise im Dateisystem die für Vista typische Lokalisierung einiger Ordner zur Folge.

Wenn man nun mit den üblichen API-Funktionen diese Namen ermitteln will, nimmt man einfach seinen alten Code. Dadurch, dass die korrekte API-Funktion aufgerufen wird und sowohl Char als auch String unicode-fähig sind, hat man wieder ein in sich konsistentes System:

Delphi-Quellcode:
(* Der Code ist nicht hübsch, aber er tut. *)
procedure TForm1.Button1Click(Sender: TObject);
var root : string;
    sRec : TSearchRec;
    fint : integer;
   fInfo : TSHFileInfo;
begin
  root:= 'c:\';

  fint:= FindFirst( root+'*.*', faAnyFile, sRec );
  while fint = 0 do
  begin
    SHGetFileInfo( PChar(root + srec.name), 0, fInfo, SizeOf(fInfo), SHGFI_DISPLAYNAME OR SHGFI_TYPENAME );
    Memo1.lines.add( fInfo.szDisplayName + ' (' +fInfo.szTypeName+')'  );
    fint:= FindNext( sRec );
  end;
  FindClose( sRec );
end;
Ergebnis mit den Standard-Komponenten siehe Anhang.
Miniaturansicht angehängter Grafiken
pic1_248.jpg  
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    


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:47 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