Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi chr für unicode? (https://www.delphipraxis.net/25502-chr-fuer-unicode.html)

glkgereon 7. Jul 2004 17:02


chr für unicode?
 
gibt es eine function wie chr (also int in char nach ascii), mit der man den kompletten unicode benutzen kann?

neolithos 7. Jul 2004 17:10

Re: chr für unicode?
 
Nein, da es die Funktion Chr ja auch nicht gibt.

Ein Zeichen ist ja eine Zahl. Kommt bloß darauf an wie man jene Interpretiert.

Chr wiederrum gehört zur Sprache Pascal und zeigt das der Programmierer diese Zahl als Zeichen darstellen möchte.
Delphi-Quellcode:
var cw : WideChar;
    c : char;
begin
  cw := WideChar($0064);
  c = char($64); // Äquivalent zu Chr
end;

Chewie 7. Jul 2004 17:10

Re: chr für unicode?
 
Chr() ist identisch mit einem Cast nach (Ansi)Char. Folglich kannst du einfach nach WideChar casten.

glkgereon 7. Jul 2004 17:14

Re: chr für unicode?
 
Zitat:

Nein, da es die Funktion Chr ja auch nicht gibt.
aha....
habbich doch eben noch benutzt :gruebel: :gruebel: :gruebel:

Delphi-Quellcode:
var c:char;
begin
 c = char($64);
end;
muss ich jetzt da für $64 meine int-variable reintun?

neolithos 7. Jul 2004 17:29

Re: chr für unicode?
 
Für Ansi eine Byte-Variable und für UniCode eine Word-Variable.

Delphi-Quellcode:
var cw : WideChar;
    c : char;
    w : Word;
    b : Byte;
begin
  w := $0064;
  b := $64;
  cw := WideChar(w);
  c = char(b); // Äquivalent zu Chr
end;
Übrigens habe ich oben geschrieben was für eine Art Funktion Chr ist.
Writeln, Readln, Write, Read, Inc, Dec, ... sind auch keine Funktionen im Prozessorischen sinne.

glkgereon 7. Jul 2004 18:42

Re: chr für unicode?
 
achso... :oops: sry
naja, jedenfalls wenn ich longint bzw int nehme, steht in der liste n paar mal der ascii-satz unternander

ist da zwingend word erforderlich?

neolithos 7. Jul 2004 19:12

Re: chr für unicode?
 
In der Delphi-VCL kann man Uni-Code-Zeichen nur über die Function TextOutW zeichnen. Da die VCL auf den alten Ansi-Funktion von Windows beruht.

Will man ein Uni-Code-Programm schreiben, so muss man die pure Windows-API verwenden. Und dabei nur die *W-Functionen.

Bernhard Geyer 8. Jul 2004 06:59

Re: chr für unicode?
 
Zitat:

Zitat von neolithos
Will man ein Uni-Code-Programm schreiben, so muss man die pure Windows-API verwenden. Und dabei nur die *W-Functionen.

Nicht ganz. Es gibt sowohl eine kostenlose Lösung welche ab NT funktioniert (TNT-Controls) als auch eine Lösung welche zwar ein paar € kostet, jedoch auch Win9x/ME unterstützt (ElPack)
Ich würde ElPack empfehlen, da hier die Controls auch erweitert wurden (zusätzliche Controls und auch die Standard-Controls verbessert).

Falls Du mehr Infos benötigst, so kannst Du dir ja mal meinen Artikel We are a world in der Zeitschrift "Der Entwickler 5.2003" antun.

glkgereon 8. Jul 2004 07:06

Re: chr für unicode?
 
ich will keine proggies, ich will einfach eine funktion die mir das unicode-zeichen einer zahl gibt!!! mit char() gehts nit, weiler dann immer wieder den ascii ausgibt....

neolithos 8. Jul 2004 09:46

Re: chr für unicode?
 
Gib doch die Zeichen via TextOutW aus.
Das ist die einzige Möglichkeit.

Delphi-Quellcode:
var ws : array [0..1] of WideChar;

begin
  ws[0] := WideChar(????);
  ws[1] := 0;
  TextOutW(Canvas.Handle, 0, 0, @ws, 1);
end;
Rede ich ein bisschen undeutlich?

glkgereon 8. Jul 2004 13:16

Re: chr für unicode?
 
hmmm..

diese WideChar(....) gibts bei mir nit... :gruebel:

Chewie 8. Jul 2004 13:20

Re: chr für unicode?
 
WideChar ist auch keine Funktion, sondern ein Cast auf den Typ WideChar, der ein elementarere Datentyp von Delphi ist.

glkgereon 8. Jul 2004 18:54

Re: chr für unicode?
 
Ich hab se jetzt doch, komisch... :gruebel: :gruebel: :gruebel:

naja, jedenfalls, jetzt brauch für ne listbox ne charset, der unicode unterstützt...

neolithos 8. Jul 2004 19:05

Re: chr für unicode?
 
Ich habe eher den anschein das noch arge Verständnisschwierigkeiten herschen.

Zwischen Worten wie Ansi und UniCode.

Ansi gibt es nicht nur Deutsch sondern auch Schwedisch, Englisch, Tschechisch usw. (nur die ersten 128 Zeichen sind gleich!) Deswegen kann man ja bei Font auch den CharSet einstellen.

UniCode vereint alle Zeichensätze. Charset ist unnötig.

Unterstützt Windows überhaupt schon die 4 Byte Zeichensätze? :gruebel:

Chewie 8. Jul 2004 19:52

Re: chr für unicode?
 
Zitat:

Zitat von neolithos
UniCode vereint alle Zeichensätze. Charset ist unnötig.

Na ja, ist auch nicht ganz richtig. Der Umfang von Unicode-Zeichensätzen ist halt um einiges größer. Aber alle möglichen Zeichen kann man damit trotzdem nicht darstellen (i.d.R. sollte es aber ausreichen).
Aber es soll ja Leute geben, die ihre Menüs gerne in Keilschrift haben :mrgreen:

glkgereon 9. Jul 2004 12:50

Re: chr für unicode?
 
Ja, aber bei 90% der Zeichen kommen ?...

Chewie 9. Jul 2004 12:54

Re: chr für unicode?
 
Zitat:

Zitat von glkbkk
Ja, aber bei 90% der Zeichen kommen ?...

Wie stellst du die Zeichen denn dar?

glkgereon 9. Jul 2004 13:20

Re: chr für unicode?
 
ich sach WideChar(Word)
und bei fats allen über 255 komnmt ein ?

Chewie 9. Jul 2004 13:44

Re: chr für unicode?
 
Und woher weißt du, was da steht? Wie lässt du dir es anzeigen? Im Debugger, in einem Label, in einer Datei, etc.?? Denn höchstwahrscheinlich liegt da der Fehler und nicht in der Umwandlung.

Chewie 9. Jul 2004 13:49

Re: chr für unicode?
 
OK, Kommando zurück. Sogar im Debugger werden nur Fragezeichen angezeigt. Ich vermute, es hängt mit dem Zeichensatz zusammen, aber ich weiß auch nicht, wie man das beheben kann.

Bernhard Geyer 9. Jul 2004 14:46

Re: chr für unicode?
 
Zitat:

Zitat von Chewie
OK, Kommando zurück. Sogar im Debugger werden nur Fragezeichen angezeigt. Ich vermute, es hängt mit dem Zeichensatz zusammen, aber ich weiß auch nicht, wie man das beheben kann.

Der Debugger ist nur ANSI-Fähig. Alle Widestring/Widechars werden nach String/Char umgewandelt.

Du kannst aber einzelne Zeichen überprüfen, indem du im als überwachten Ausdruck Ord(MeinWideString[3]) um das dritte Zeichen Anzuzeigen. Ist umständlig, aber solange die IDE nicht aufgebohrt wird ...

glkgereon 13. Jul 2004 12:47

Re: chr für unicode?
 
also ich lass mir das ganze inner listbox anzeigen, so in etwa:

1 - 00000001 - 01 -
...

also code, binär, hex, zeichen

und da ist das zeichen hgalt fast immer ein fragezeichen

Bernhard Geyer 13. Jul 2004 12:57

Re: chr für unicode?
 
Zitat:

Zitat von glkbkk
und da ist das zeichen hgalt fast immer ein fragezeichen

Wenn Du eine TListBox nimmst ist das ja klar. Diese kann nur Ansi.
Dazu benötigst Du Unicode-Controls oder Du must die Anzeige im Owner-Draw mittels TextOutW durchführen

glkgereon 13. Jul 2004 20:42

Re: chr für unicode?
 
was sind unicode-controls?

gibts sowat wie ne TUnicodeListBox oder wie?

Bernhard Geyer 14. Jul 2004 07:08

Re: chr für unicode?
 
Ja.

Die TNT-Controls stellen eine kostenlose Möglichkeit dar. Diese Controls sind "nur" um die Unicode-Fähigkeit erweiterte Standard-Controls. Stellen Unicode nur ab NT zur verfügung.

Die ElPack-Controls kosten zwar etwas, sind jedoch um einige Features erweitert (XP-Themes-Support für 98-2003, einem von HTML bekannten CSS-Ähnlichen mechanismus, ....). Stellen Unicode auch unter 9x/ME zur verfügung.

In meinem Artikel "We are a word" in der Ausgabe 5.2003 der Zeitschrift "Der Entwickler" kannst Du mehr bezüglich Delphi+Unicode lesen.

glkgereon 14. Jul 2004 13:21

Re: chr für unicode?
 
hab se mal runtergeladen, sieht gut aus, werds ma testen, thx :thuimb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:39 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