String-Handling

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Benutzeravatar
Lincoln Six Echo
Beiträge: 138
Registriert: Di 26. Aug 2014, 16:42
OS, Lazarus, FPC: Win10, Debian
CPU-Target: I7/I9/Q9650/u.a.
Wohnort: Hamburg

String-Handling

Beitrag von Lincoln Six Echo »

Für völlige Verwirrung sorgt bei mir mittlerweile das String-Handling mit Lazarus.

Aktuell arbeite ich an einem Editor der Text, Bilder, Tabellen, etc anzeigt und auch editierbar macht.
Alles erstmal kein Problem, allerdings bin ich über die String-Verarbeitung gestolpert.

Ein Beispiel:

Code: Alles auswählen

var
  s : string;
begin
   s := '123';
  Canvas.TextOut(1,1,s+' = '+IntToStr(length(s)));
end;
 
Zu sehen ist dann "123 =  3"
 
var
  s : string;
begin
   s := 'ÄÖÜ';
  Canvas.TextOut(1,1,s+' = '+IntToStr(length(s)));
end;
 
Zu sehen ist dann "ÄÖÜ =  6"
 
Noch kurioser:
 
var
  s : string;
begin
   s := '123ÄÖÜ';
  Canvas.TextOut(1,1,s+' = '+IntToStr(length(s)));
end;
 

Zu sehen ist dann "123 = 9"

Mir ist schon klar das es mit dem Unicode / ASCII usw zusammenhängt.
Sehr schlecht ist das die function Delete für strings auch Fehler macht wenn man z.B. Delete(s,5,1) vorgibt, dann wird von den 2Byte-Zeichen nur das erste gelöscht.

Hat jemand hierzu eine Idee oder Lösung ?

Ich habe hier und auch im Netz nichts wirkich funktionierendes gefunden.
Zuletzt geändert von Lori am Mi 6. Jan 2016, 19:50, insgesamt 1-mal geändert.
Grund: Hihghlighter

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Re: String-Handling

Beitrag von theo »

Einfach die entsprechenden UTF8 Funktionen benutzen:
http://wiki.lazarus.freepascal.org/LCL_ ... ase.2C_etc

Benutzeravatar
Lincoln Six Echo
Beiträge: 138
Registriert: Di 26. Aug 2014, 16:42
OS, Lazarus, FPC: Win10, Debian
CPU-Target: I7/I9/Q9650/u.a.
Wohnort: Hamburg

Re: String-Handling

Beitrag von Lincoln Six Echo »

Danke, diese Unit kannte ich noch nicht. Das sind die Funktionen die ich vermisst hatte und schon befürchtet hatte das ich sie mir selber schreiben muß.

Die Frage wäre jetzt noch, da ein "string" unter lazarus bzw. fpc ja ein ansistring ist, welche zeichen sich überhaupt damit darstellen und bearbeiten lassen.

Hängt das vom CharSet der entspr. Font ab ?

Benutzeravatar
theo
Beiträge: 10497
Registriert: Mo 11. Sep 2006, 19:01

Re: String-Handling

Beitrag von theo »

Lincoln Six Echo hat geschrieben:Danke, diese Unit kannte ich noch nicht. Das sind die Funktionen die ich vermisst hatte und schon befürchtet hatte das ich sie mir selber schreiben muß.

Die Frage wäre jetzt noch, da ein "string" unter lazarus bzw. fpc ja ein ansistring ist, welche zeichen sich überhaupt damit darstellen und bearbeiten lassen.

Hängt das vom CharSet der entspr. Font ab ?


Lazarus arbeitet Standardmässig mit UTF8.
UTF8 kann alle Unicode Zeichen halten.
Ob du außergewöhnliche Zeichen sehen kannst, hängt auch davon ab, ob auf dem Zielsystem ein entsprechender Font installiert ist.

Benutzeravatar
Lincoln Six Echo
Beiträge: 138
Registriert: Di 26. Aug 2014, 16:42
OS, Lazarus, FPC: Win10, Debian
CPU-Target: I7/I9/Q9650/u.a.
Wohnort: Hamburg

Re: String-Handling

Beitrag von Lincoln Six Echo »

Ja das habe ich gerade auch schon herausgefunden.

Vielen Dank für die schnelle Antwort.

Antworten