AGB  ·  Datenschutz  ·  Impressum  







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

Umlaute aus GUI verarbeiten

Ein Thema von dummzeuch · begonnen am 31. Dez 2012 · letzter Beitrag vom 31. Dez 2012
Antwort Antwort
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.468 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Umlaute aus GUI verarbeiten

  Alt 31. Dez 2012, 11:37
Hi,

Eigentlich wollte ich Lazarus "mal eben" ausprobieren und habe ein simples Buchstabier-Programm, das ich in Delphi geschrieben habe, von Lazarus konvertieren lassen.

Mit einer einzigen kleinen Aenderungen compilierte es dann und macht auch fast, was es soll. Es kommt nur mit Umlauten in der Eingabe nicht klar.

folgender Code:

Code:
procedure TForm1.Edit1(Sender: TObject);
var
  s: string;
  i: integer;
  c: char;
begin
  s := Edit1.Text;
  for i := 1 to Length(s) do begin
    c := s[i];
    doSomething(c);
  end;
end;
Macht komische Dinge, wenn ich Umlaute eingebe, die Laenge ist dann jeweils um 1 groesser als erwartet und statt des Umlauts erhalte ich zwei Zeichen.

Meine Vermutung: UTF-8 Kodierung.

Aber wie bekomme ich jetzt aus dem String die korrekten Zeichen heraus? 'Gräfin' soll 6 Zeichen haben, nicht 7 und das 3. Zeichen soll ein 'ä' sein (und das 4. ein 'f').

In Delphi passiert das automatisch. Was muss ich in Lazarus machen?

twm
Thomas Mueller
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

AW: Umlaute aus GUI verarbeiten

  Alt 31. Dez 2012, 11:46
Ve´rsuch es mal als AnsiString
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

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

AW: Umlaute aus GUI verarbeiten

  Alt 31. Dez 2012, 11:48
Macht komische Dinge, wenn ich Umlaute eingebe, die Laenge ist dann jeweils um 1 groesser als erwartet und statt des Umlauts erhalte ich zwei Zeichen.

Meine Vermutung: UTF-8 Kodierung.
Korrekt. Bei Lazarus hat man m. E. Falsch auf UTF-8 statt UTF-16. So hat man in einem Programm tausende Stellen bei denen man mit der Codierung aufpassen muss. Ebenfalls dürfte es noch tausende Stellen in der Bibliothek geben die mit ASCII statt UTF-8 arbeiten (es tauchen ja regelmäßig Fragestellungen hier auf die genau dieses Problem haben.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.468 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: Umlaute aus GUI verarbeiten

  Alt 31. Dez 2012, 15:04
Iiih, ist das gruselig: Man muss beim Einlesen von UTF8 nach ANSI wandeln und bei der Ausgabe wieder von ANSI nach UTF8.

Jetzt funktioniert's.

Falls sich jemand das ansehen moechte (compiliert mit Lazarus und Delphi XE2):
dzBuchstaBier SVN auf Sourceforge

Naja, jetzt weiss ich zumindest schonmal, dass Lazarus fuer die Arbeit erstmal keine Alternative ist.

Danke fuer die Hilfe.
Thomas Mueller
  Mit Zitat antworten Zitat
Antwort Antwort


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