Zeichenzahl eines widestrings feststellen
Zeichenzahl eines widestrings feststellen
Gibt es in freepascal eine Funktion/Prozedur, mit der man die "reale" Zeichenzahl eines widestrings in utf8 feststellen an, also die Zeichenzahl, die tatsächlich am Bildschirm ausgegeben wird. Mit length() ist das ja wohl nicht mehr eindeutig zu machen, wenn Zeichen > ascii 128 verwendet werden.
Ich habe gesucht, aber nichts gefunden (mag an meinen Suchbegriffen gelegen haben).
Grüße, Günther
Ich habe gesucht, aber nichts gefunden (mag an meinen Suchbegriffen gelegen haben).
Grüße, Günther
Re: Zeichenzahl eines widestrings feststellen
Erstmal ist ein WideString kein UTF8String!!!!
Die Länge eines WideString kriegt man mit Length(MyWideString);
Die Länge eines UTF8String mit UTF8Length(..). Guckst du hier:
http://www.lazarusforum.de/viewtopic.ph ... gth#p23559" onclick="window.open(this.href);return false;
Die Länge eines WideString kriegt man mit Length(MyWideString);
Die Länge eines UTF8String mit UTF8Length(..). Guckst du hier:
http://www.lazarusforum.de/viewtopic.ph ... gth#p23559" onclick="window.open(this.href);return false;
Re: Zeichenzahl eines widestrings feststellen
Für das, was ich wissen wollte, scheint mir das nicht zu stimmen:theo hat geschrieben:Die Länge eines WideString kriegt man mit Length(MyWideString);
Code: Alles auswählen
var
meinstr : WIDESTRING;
...
meinstr := 'deine Wünsche können erfüllt werden';
writeln(length(meinstr));
Code: Alles auswählen
writeln(length(utf8decode(meinstr));

Im Übrigen: in welcher Unit findet sich utf8length?
Grüße, Günther
Re: Zeichenzahl eines widestrings feststellen
Du weigerst dich halt von Anfang an die Sache zu verstehen und willst immer nur "Beispiele".
Das ist Quatsch:
var meinstr : WIDESTRING;
meinstr := 'deine Wünsche können erfüllt werden'
Hier schiebst du einen UTF8String (bei einer UTF8 IDE) in einen WideString. Was soll das sein?
Das ist Quatsch:
var meinstr : WIDESTRING;
meinstr := 'deine Wünsche können erfüllt werden'
Hier schiebst du einen UTF8String (bei einer UTF8 IDE) in einen WideString. Was soll das sein?
Gähn, steht in dem Link oben.guennid hat geschrieben: Im Übrigen: in welcher Unit findet sich utf8length?
Re: Zeichenzahl eines widestrings feststellen
Wenn du das so sehen willst, bitteschön, daran kann ich dich nicht hindern. Aber es wäre schon wünschenswert wenn du dich eines etwas weniger rüden Umgangstones bedienen könntest. Aber das scheint ja hier bei einigen nicht so sehr angesagt zu sein.theo hat geschrieben:Du weigerst dich halt von Anfang an die Sache zu verstehen
Wenn ich dir auf den Wecker gehe, dann gibt es die einfache Möglichkeit dem zu entgehen: Ignoriere meine Beiträge.
Es hat sich wohl noch nicht bis zu dir rumgesprochen, dass man dabei ganz gut lernen kann.theo hat geschrieben:... und willst immer nur "Beispiele"
Wenn du wirklich helfen willst und nicht nur dein Besserwissen zur Schau stellen musst, dann bitte in einem anderen Ton.
OKay, hab' ich übersehen.theo hat geschrieben:Gähn, steht in dem Link oben.
Versteh ich nicht! Ich deklariere einen widestring und fülle ihn anschließend mit Werten. Wieso nennst du das jetzt einen utf8string? Wie weise ich denn deiner Meinung nach einem widestring "widestring"-Werte zu?theo hat geschrieben:var meinstr : WIDESTRING;
meinstr := 'deine Wünsche können erfüllt werden'
Hier schiebst du einen UTF8String (bei einer UTF8 IDE) in einen WideString.
Re: Zeichenzahl eines widestrings feststellen
Ich glaube mir ist soeben die Lust dazu vergangen.guennid hat geschrieben: Wenn du wirklich helfen willst und nicht nur dein Besserwissen zur Schau stellen musst, dann bitte in einem anderen Ton.
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Re: Zeichenzahl eines widestrings feststellen
@guennid ich sehe das genau wie Theo, man muss nicht aus faulheit das Forum zuspammen. Es gibt genug richtige Probleme die man nicht nach 5 sek googeln findet und für die so ein Forum Gold wert ist wenn sie dort beantwortet werden. Leider schwappen immer mehr Delphi nutzer herüber die sich gar nicht wirklich mit programmierung auseinandersetzen wollen sondern nur sagen können wollen "ich programmiere" aber eigentlich nur Code zusammenkopieren und wenn das nicht so funktioniert fragen sie halt in den Foren nach, ohne sich Gedanken darüber zu machen. Ich finde es durchaus berechtigt bei diesen Lueten einen etwas raueren Ton anzuschlagen um sie zum Nachdenken anzuregen und das forum etwas müllfreier zu halten.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- Beiträge: 3444
- Registriert: Mo 11. Sep 2006, 10:24
- OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
- CPU-Target: X32 / X64 / ARMv5
- Wohnort: Krefeld
Re: Zeichenzahl eines widestrings feststellen
Ich finde allerdings nicht, dass es zur Allgemeinbildung gehört, wie man eine Widestring-Konstante definiert. Ich weiß es jedenfalls nicht, sonst hätte ich es hier geschrieben. und dass der text in Hochkommas UTF-8 ist (und nicht lokale-abhängiger 8-bit Code) hätte ich auch nicht vermutet.
-Michael
-Michael
Re: Zeichenzahl eines widestrings feststellen
Eine WideString Konstante kann man auch nicht wirklich in einem UTF-8 Editor als Text definieren.mschnell hat geschrieben:Ich finde allerdings nicht, dass es zur Allgemeinbildung gehört, wie man eine Widestring-Konstante definiert. Ich weiß es jedenfalls nicht, sonst hätte ich es hier geschrieben. und dass der text in Hochkommas UTF-8 ist (und nicht lokale-abhängiger 8-bit Code) hätte ich auch nicht vermutet.
Bei einem UTF-8 Editor (z.B. Lazarus unter GTK2 oder neu soviel ich weiss auch Windows) liegen die Zeichen > 127 als UTF-8 vor.
D.h. ein 'ä' ist ein UTF-8 Code der aus zwei oder mehr aufeinanderfolgenden Bytes besteht (#$c3+#$a4).
Um diesen In WideString (DoubleByte String) umzuwandeln muss man ein "UTF8Decode" durchführen. (dann wird aus 'ä' #$00E4).
-
- Beiträge: 3444
- Registriert: Mo 11. Sep 2006, 10:24
- OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
- CPU-Target: X32 / X64 / ARMv5
- Wohnort: Krefeld
Re: Zeichenzahl eines widestrings feststellen
... Hoffentlich macht der Compiler das dann beim kompilieren und nicht jedesmal zur Laufzeit ....theo hat geschrieben:Um diesen In WideString (DoubleByte String) umzuwandeln muss man ein "UTF8Decode" durchführen. (dann wird aus 'ä' #$00E4).
-Michael
-
- Lazarusforum e. V.
- Beiträge: 2808
- Registriert: Fr 22. Sep 2006, 10:38
- OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
- Wohnort: Hessen
- Kontaktdaten:
Re: Zeichenzahl eines widestrings feststellen
Ohne mich konkret auf diesen Thread zu beziehen(!) bin ich Eurer Meinung, dass man die offensichtliche Bequemlichkeit mancher Leute nicht unterstützen muss. Diese Leute sind meist, wie Christian schon erwähnte, unerfahrenere Benutzer.Christian hat geschrieben:@guennid ich sehe das genau wie Theo, man muss nicht aus faulheit das Forum zuspammen. Es gibt genug richtige Probleme die man nicht nach 5 sek googeln findet und für die so ein Forum Gold wert ist wenn sie dort beantwortet werden. Leider schwappen immer mehr Delphi nutzer herüber die sich gar nicht wirklich mit programmierung auseinandersetzen wollen sondern nur sagen können wollen "ich programmiere" aber eigentlich nur Code zusammenkopieren und wenn das nicht so funktioniert fragen sie halt in den Foren nach, ohne sich Gedanken darüber zu machen. Ich finde es durchaus berechtigt bei diesen Lueten einen etwas raueren Ton anzuschlagen um sie zum Nachdenken anzuregen und das forum etwas müllfreier zu halten.
Und ohne Zweifel handelt es sich um einen Lernprozess, zu erkennen, dass Programmieren nicht immer einfach ist und nicht nur aus dem Zusammenkopieren von Code besteht. Sondern dass es sich beim Programmieren um das _Verstehen_ und Anwenden komplexer Strukturen handelt, zu deren Kenntnis man eben nur durch eine gründliche Recherche gelangen kann. Dabei muss auch die Recherche gelernt sein - und die betroffene Person muss ein Gefühl dafür entwickeln, welche Fragen sie selbst beantworten kann und für welche Frage es der Hilfe eines Forums bedarf. Auch ist es übertrieben zu erwarten, dass sich wünschenswerte Verhaltensweisen von heute auf morgen einstellen.
In meinen Augen ist es sinnvoll, die angesprochenen Lernprozesse jener unerfahrener Benutzer anzuregen und ihnen so die Teilhabe an der Welt des Programmierens zu ermöglichen. Die Frage ist aber doch, ob ein rauer Ton dazu geeignet ist.
Ganz sicher unterstützt man jene Leute nicht, indem man ihnen vorgekaute Musterlösungen liefert. Aber einen Weg, den sie dann selbst beschreiten können und auch müssen, kann man ihnen doch im guten Ton weisen.
Re: Zeichenzahl eines widestrings feststellen
Allgemein stimme ich dir zu.Euklid hat geschrieben:Die Frage ist aber doch, ob ein rauer Ton dazu geeignet ist.
Ganz sicher unterstützt man jene Leute nicht, indem man ihnen vorgekaute Musterlösungen liefert. Aber einen Weg, den sie dann selbst beschreiten können und auch müssen, kann man ihnen doch im guten Ton weisen.
Zum vorliegenden Fall: Ich sehe hier keinen besonders rauhen Ton meinerseits, aber einen ziemlich frechen Ton von guennid.
Ich habe guennid vor Wochen schon angeboten, ihm die Sache zu erklären (http://www.lazarusforum.de/viewtopic.php?p=23221#p23221" onclick="window.open(this.href);return false;) das interessierte ihn aber nicht. Ich habe nur nochmal darauf hingewiesen in einem vielleicht leicht genervten Ton, den ich aber für passend halte.
Re: Zeichenzahl eines widestrings feststellen
@theo
Wir könnten ja einen neuen Versuch starten. Ich nehme dein Beispiel aus dem zuletzt von dir zitierten thread.
Frage zu Zeile 1:
Versteh ich komplett nicht. Ich vermute, das ist was Objektorientiertes: Object-Pascal/Lazarus. Wenn ja: Könnten wir wenigstens das bitte einstweilen auslassen? Damit ich das nachvollziehen kann. Das wird wohl Zeile 13 und 16 tangieren.
Frage zu Zeile 7:
Was ist "$ce"? Ich habe eine solche Schreibweise noch nie benutzt. Auf der angegebenen utf8-Tabellen-Seite ist mir keine Entsprechung aufgefallen. Wenn man hier vielleicht gleichwertig auch mit sowas wie "#1234" arbeiten könnte, wäre mir das wesentlich vertrauter.
Grüße, Günther
Wir könnten ja einen neuen Versuch starten. Ich nehme dein Beispiel aus dem zuletzt von dir zitierten thread.
Frage zu Zeile 1:
Versteh ich komplett nicht. Ich vermute, das ist was Objektorientiertes: Object-Pascal/Lazarus. Wenn ja: Könnten wir wenigstens das bitte einstweilen auslassen? Damit ich das nachvollziehen kann. Das wird wohl Zeile 13 und 16 tangieren.
Frage zu Zeile 7:
Was ist "$ce"? Ich habe eine solche Schreibweise noch nie benutzt. Auf der angegebenen utf8-Tabellen-Seite ist mir keine Entsprechung aufgefallen. Wenn man hier vielleicht gleichwertig auch mit sowas wie "#1234" arbeiten könnte, wäre mir das wesentlich vertrauter.
Grüße, Günther
Re: Zeichenzahl eines widestrings feststellen
Ich glaube jetzt, das bringt auf diesem Level nichts.guennid hat geschrieben:@theo
Wir könnten ja einen neuen Versuch starten.
Die Unicode Geschichte ist nicht gerade einfach zu verstehen.
Lerne doch mal ein paar Wochen oder Monate Pascal- und Lazarus-Grundlagen, mit Hexadezimalzahlen umgehen etc. , danach kann ich versuchen, dir zu vermitteln was ich weiss (oder glaube zu wissen

Hier sind einige Links drauf:
http://www.lazarusforum.de//viewtopic.php?f=21&t=79" onclick="window.open(this.href);return false;
-
- Beiträge: 958
- Registriert: Mo 11. Sep 2006, 22:56
Re: Zeichenzahl eines widestrings feststellen
Hexadezimal.(zumindestens war das zu C64 Assemblerzeiten noch so).guennid hat geschrieben:
Was ist "$ce"? Ich habe eine solche Schreibweise noch nie benutzt.
http://de.wikipedia.org/wiki/Hexadezimalsystem" onclick="window.open(this.href);return false;