AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Lazarus (IDE) Dauerbrenner Umlaute: Lazarus vs. Delphi
Thema durchsuchen
Ansicht
Themen-Optionen

Dauerbrenner Umlaute: Lazarus vs. Delphi

Ein Thema von Phillie08 · begonnen am 26. Aug 2013 · letzter Beitrag vom 27. Aug 2013
Antwort Antwort
Phillie08

Registriert seit: 19. Jan 2011
13 Beiträge
 
#1

Dauerbrenner Umlaute: Lazarus vs. Delphi

  Alt 26. Aug 2013, 20:41
Hallo,

da mir schon einmal hier geholfen werden konnte, als es um Umlaute ging, versuche ich mein Glück erneut.
Ich schreibe ein Programm, bei dem einzelne Buchstaben verarbeitet werden müssen, die Algorithmen sind kein Problem, aber Lazarus weigert sich zu kompilieren.
Hier ist ein winziger (und schwachsinniger), aber entscheidender Code-Schnipsel:
Code:
procedure test;
var
  Z: char;
begin
  Z := 'a';
  Z := 'ß'; //Hier wird Fehler gefunden, ebenso nächste Zeile
  Z := 'ö';
end;
In Delphi funktioniert das, Lazarus meldet folgenden Fehler:
Code:
unit1.pas(48,8) Error: Incompatible types: got "Constant String" expected "Char"
Offenbar wird 'ä' usw. nicht als Zeichen, sondern als Zeichenkette interpretiert.
Ich schätze, dass da wieder mal diese UTF-Geschichte herein spielt.
Ob wohl jemand eine Idee hat, wie ich es hin bekommen könnte, Umlaute und ß als Einzelzeichen verarbeiten zu können? Der Umweg über ä=ae geht natürlich immer, ist hier aber ausdrücklich nicht erwünscht.

Ich arbeite mit Lazarus 1.0.8 unter Windows.
  Mit Zitat antworten Zitat
Benutzerbild von cookie22
cookie22

Registriert seit: 28. Jun 2006
Ort: Düsseldorf
936 Beiträge
 
Delphi XE2 Professional
 
#2

AW: Dauerbrenner Umlaute: Lazarus vs. Delphi

  Alt 26. Aug 2013, 21:36
High Ascii wird in Fpc als String interpretiert.

Warum nicht:
Delphi-Quellcode:
procedure test;
var
  Z: string;
begin
  Z := 'a';
  Z := 'ß'; //Hier wird Fehler gefunden, ebenso nächste Zeile
  Z := 'ö';
end;
Gruß
Cookie
  Mit Zitat antworten Zitat
ringli

Registriert seit: 7. Okt 2004
513 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Dauerbrenner Umlaute: Lazarus vs. Delphi

  Alt 26. Aug 2013, 21:41
Im Lazarus-Forum habe ich die Funktion UTFToChr gefunden. Vielleicht hilft dir die:
Delphi-Quellcode:
function UTFToChr(const s: string): char;
begin
  if s='then result:=char(0)
  else begin
    {$IFnDEF fpc}result:=s[1];{$ELSE}
    case byte(s[1]) of
      194: result:=char((byte(s[2])-163)+128);
      195: result:=char((byte(s[2])-130)+160);
      226: result:=char(255);
      else result:=s[1];
    end;{$ENDIF}
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  Z: char;
begin
  Z := 'a';
  Z := UTFToChr('ß'); //Hier wird Fehler gefunden, ebenso nächste Zeile
  Z := UTFToChr('ö');
end;
Zumindest kompiliert Lazarus so den Code.
  Mit Zitat antworten Zitat
Benutzerbild von cookie22
cookie22

Registriert seit: 28. Jun 2006
Ort: Düsseldorf
936 Beiträge
 
Delphi XE2 Professional
 
#4

AW: Dauerbrenner Umlaute: Lazarus vs. Delphi

  Alt 26. Aug 2013, 21:48
Da kannst du die Chars dann gleich mit dem Ascii Code aufrufen. Im Falle von ß dann #225;
Gruß
Cookie
  Mit Zitat antworten Zitat
Ginko

Registriert seit: 30. Aug 2008
208 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Dauerbrenner Umlaute: Lazarus vs. Delphi

  Alt 26. Aug 2013, 22:08
Hi !
Delphi-Quellcode:
uses LCLType;

procedure test;
var
  Z: TUTF8Char;
begin
  Z := 'a';
  Z := 'ß';
  Z := 'ö';
end;
wäre auch ne Möglichkeit.

MfG
  Mit Zitat antworten Zitat
MeierZwoo

Registriert seit: 3. Dez 2012
106 Beiträge
 
#6

AW: Dauerbrenner Umlaute: Lazarus vs. Delphi

  Alt 26. Aug 2013, 22:46
Kennt Lazerus keine AnsiChar? Denn Du willst ja AnsiChar (1 Byte Chars) und keine MultiByteChars bearbeiten.
  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 16:24 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