Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Sonderzeichen in TEdits (Charset?) (https://www.delphipraxis.net/155645-sonderzeichen-tedits-charset.html)

uligerhardt 2. Nov 2010 11:17

Sonderzeichen in TEdits (Charset?)
 
Liste der Anhänge anzeigen (Anzahl: 1)
Wir haben eine ältere Prä-Unicode-Anwendung, die mittlerweile auf D2007 portiert ist. In dieser kann der Anwender auswählen, welches Charset für TEdits verwendet wird. Wenn der Benutzer (auf einem deutschen System) z.B. Russisch auswählt und dann äöüÄÖÜß eintippt, sieht das im Edit wie im Anhang aus - soweit so gut. Jetzt versuche ich dieses Verhalten in einer "jungfräulichen" D2007-VCL-Anwendung nachzuvollziehen (Form1 mit einem Edit1 drauf) und kriege es nicht hin. Offensichtlich reicht ein
Delphi-Quellcode:
  Edit1.Font.Charset := RUSSIAN_CHARSET;
nicht aus. Habt ihr eine Idee, was ich da vergessen habe? Im Quelltext der Anwendung, wo es funktioniert, springt mir leider nichts einschlägiges ins Auge.

shmia 2. Nov 2010 16:11

AW: Sonderzeichen in TEdits (Charset?)
 
Bei meinem Delphi 5 funktioniert das auf Abhieb nur durch Umstellen von Font.Charset im Objektinspektor.
Natürlich muss dein Windows auch ClearType- oder Truetype-Fonts installiert haben, bei denen die russischen Zeichen enthalten sind.
Die Codepage 1251 Cyrilic wird nicht von jedem Font unterstützt.

uligerhardt 2. Nov 2010 16:33

AW: Sonderzeichen in TEdits (Charset?)
 
Zitat:

Zitat von shmia (Beitrag 1059183)
Bei meinem Delphi 5 funktioniert das auf Abhieb nur durch Umstellen von Font.Charset im Objektinspektor.
Natürlich muss dein Windows auch ClearType- oder Truetype-Fonts installiert haben, bei denen die russischen Zeichen enthalten sind.
Die Codepage 1251 Cyrilic wird nicht von jedem Font unterstützt.

Im konkreten Fall ist der Font in beiden Fällen Courier New.
Kannst du bitte mal dein Projekt anhängen, am besten Quelltext + Exe, damit ich es mal auf meinem System laufen lassen kann?

p80286 2. Nov 2010 16:56

AW: Sonderzeichen in TEdits (Charset?)
 
Zitat:

Zitat von shmia (Beitrag 1059183)
Die Codepage 1251 Cyrilic wird nicht von jedem Font unterstützt.

Wahrscheinlich klemmt es hier.

Ohne den richtigen Font bist mit der Codepage ziemlich verloren.

Gruß
K-H

uligerhardt 2. Nov 2010 17:03

AW: Sonderzeichen in TEdits (Charset?)
 
Zitat:

Zitat von p80286 (Beitrag 1059189)
Zitat:

Zitat von shmia (Beitrag 1059183)
Die Codepage 1251 Cyrilic wird nicht von jedem Font unterstützt.

Wahrscheinlich klemmt es hier.

Ohne den richtigen Font bist mit der Codepage ziemlich verloren.

Wenn ich im Debugger nichts übersehen habe, ist der Font sowohl im funktionierenden als auch im nichtfunktionierenden Fall Courier New, und das Charset in beiden Fällen 204 aka RUSSIAN_CHARSET.

shmia 2. Nov 2010 17:08

AW: Sonderzeichen in TEdits (Charset?)
 
Liste der Anhänge anzeigen (Anzahl: 1)
Demo-Programm im Anhang.
Courier New unterstützt die Codepages auf meinem System (Windows XP SP3).

uligerhardt 2. Nov 2010 17:20

AW: Sonderzeichen in TEdits (Charset?)
 
Zitat:

Zitat von shmia (Beitrag 1059193)
Demo-Programm im Anhang.

Danke!
Ich hab's jetzt rausgefunden - es ist das Theming. :wall:
Ein XPMan ins uses deines Testprogramms und bumm - nix mehr Kyrillisch. :roll:
Na, mal schauen, ob man da was machen kann...

Update: Ich bin nicht der Einzige mit dem Problem:
http://groups.google.de/group/borlan...59cb953c3e502/
http://groups.google.de/group/borlan...11b795ea52aee/
Eine Lösung habe ich aber noch nicht gefunden.

Bernhard Geyer 2. Nov 2010 20:28

AW: Sonderzeichen in TEdits (Charset?)
 
Wenn du kein Win9x/ME benötigst nimm die letzte freie Version der TNTWare-Kompos (oder die neuen von TMS) und schmeiß die Codepage/Charset-Krücke weg.

uligerhardt 2. Nov 2010 20:56

AW: Sonderzeichen in TEdits (Charset?)
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1059240)
Wenn du kein Win9x/ME benötigst nimm die letzte freie Version der TNTWare-Kompos (oder die neuen von TMS) und schmeiß die Codepage/Charset-Krücke weg.

Da hätte ich mal ne Frage - hab leider kein Delphi hier, um's auszuprobieren: Der Benutzer kann dann in ein TNT-Edit das komplette Unicode-Spektrum eingeben, sagen wir auf einem russischen System auch griechische oder türkische (chinesische? arabische?) Zeichen, richtig? Was passiert dann, wenn ich die ohne irgendwelche Umcodierungen direkt als AnsiString (genauer gesagt als string[N]) speichere, also:
Delphi-Quellcode:
type
  TMyStoredRecord = record
    EinString: string[50];
  end;
var
  rec: TMyStoredRecord;
begin
  rec.EinString := TntEdit1.Text;
...
Das ist ja wohl verlustbehaftet. Kann mas das TNT-Edit irgendwie veranlassen, nur "passende" Eingaben zuzulassen? Und wenn wir schon dabei sind: Wie wäre das mit einem Unicode-VCL-TEdit?

mkinzler 2. Nov 2010 20:58

AW: Sonderzeichen in TEdits (Charset?)
 
Der Inhalt solcher Komponenten ist dann WideString.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:52 Uhr.
Seite 1 von 2  1 2      

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