eine blöde Frage
- juelin
- Beiträge: 297
- Registriert: Sa 24. Jul 2021, 18:03
- OS, Lazarus, FPC: Linux Ubuntu 22. Windows 10 Delphi 11.3 (L 0.9.xy FPC 2.2.z)
- CPU-Target: 64Bit
- Wohnort: Mannheim
eine blöde Frage
Hallo,
vielleicht bin ich nur zu blöd.
Ich möchte in einem Label das © Zeichen ausgeben.
Ich mache das mit Label2.Caption:=Chr(169);
Aber Lazarus gibt nur ein ? aus.
Was ist der Trick?
Gruß
Jürgen
vielleicht bin ich nur zu blöd.
Ich möchte in einem Label das © Zeichen ausgeben.
Ich mache das mit Label2.Caption:=Chr(169);
Aber Lazarus gibt nur ein ? aus.
Was ist der Trick?
Gruß
Jürgen
-
- Beiträge: 739
- Registriert: Do 27. Sep 2012, 00:07
- OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
- CPU-Target: x86_64-win64
- Wohnort: Hamburg
Re: eine blöde Frage
Wie machst du dir das Leben nicht einfacher:
Label2.Caption:='©';
oder
Label2.Caption:=#0169;
Ab 128 ist es Unicode.
Label2.Caption:='©';
oder
Label2.Caption:=#0169;
Ab 128 ist es Unicode.
- juelin
- Beiträge: 297
- Registriert: Sa 24. Jul 2021, 18:03
- OS, Lazarus, FPC: Linux Ubuntu 22. Windows 10 Delphi 11.3 (L 0.9.xy FPC 2.2.z)
- CPU-Target: 64Bit
- Wohnort: Mannheim
Re: eine blöde Frage
Hallo soner,
ja so geht es mit Label1.Caption:=#0169;
Aber hast Du eine Ahnung warum Chr(169) nicht geht?
Danke und Gruß
Jürgen
ja so geht es mit Label1.Caption:=#0169;
Aber hast Du eine Ahnung warum Chr(169) nicht geht?
Danke und Gruß
Jürgen
-
- Beiträge: 739
- Registriert: Do 27. Sep 2012, 00:07
- OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
- CPU-Target: x86_64-win64
- Wohnort: Hamburg
Re: eine blöde Frage
Ich glaube man muss das als UTF8 dekodiert angeben, also so etwas wie Char($c2a9), aber es funktioniert nicht, auch utf8Char nicht.
Vielleicht meldet sich ein Experte dazu.
Vielleicht meldet sich ein Experte dazu.
Re: eine blöde Frage
Lazarus arbeitet mit UTF8. Da bestehen nur die ASCII-Zeichen (<#128) aus 1 Byte, alle anderen haben 2, 3 oder sogar 4 Bytes. Das Zeichen chr(169) ist kein gültiger UTF8-Codepoint, denn es liegt über #128 und es müsste also noch mindestens ein weiteres Byte vorhanden sein.juelin hat geschrieben: Fr 20. Sep 2024, 22:34 ja so geht es mit Label1.Caption:=#0169;
Aber hast Du eine Ahnung warum Chr(169) nicht geht?
Wenn du den UTF8-Code für ein Zeichen nicht kennst, solltest du die Lazarus-Zeichentabelle öffnen ("Bearbeiten" > "Aus der Zeichentabelle einfügen"). Stelle sicher, dass der Tabellen-Reiter "Unicode" aktiv ist. Dann kannst du in der Combobox "Bereich" die gewünschte Seite einstellen. Das Copyright-Symbol findest du unter "Latin-1 Supplement". Dann auf dem Zeichen klicken, und es wird im Quelltext an der Stelle eingefügt, an der sich gerade der Cursor befindet.
Re: eine blöde Frage
Ja, wie @wp Lazarus sagte arbeitet mit UTF-8 und Char über 127 wird nicht funktionieren. Aber Sie können WideChar verwenden oder Ansi in UTF-8 konvertieren
Code: Alles auswählen
Label1.Caption := widechar(169);
Label2.Caption := UTF8Encode(char(169));
Grüße / Pozdrawiam
paweld
paweld
- juelin
- Beiträge: 297
- Registriert: Sa 24. Jul 2021, 18:03
- OS, Lazarus, FPC: Linux Ubuntu 22. Windows 10 Delphi 11.3 (L 0.9.xy FPC 2.2.z)
- CPU-Target: 64Bit
- Wohnort: Mannheim
Re: eine blöde Frage
danke für die Info poweld.
Gruß
Jürgen
Gruß
Jürgen
- Niesi
- Lazarusforum e. V.
- Beiträge: 602
- Registriert: So 26. Jun 2016, 19:44
- OS, Lazarus, FPC: Linux Mint Cinnamon, Laz 4.1 Fpc 3.2.3 und allerlei mit FpcUpDeLuxe
- Kontaktdaten:
Re: eine blöde Frage
[/quote]
...
Wenn du den UTF8-Code für ein Zeichen nicht kennst, solltest du die Lazarus-Zeichentabelle öffnen ("Bearbeiten" > "Aus der Zeichentabelle einfügen"). Stelle sicher, dass der Tabellen-Reiter "Unicode" aktiv ist.
...
[/quote]
Hilf mir mal bitte: Ich finde beides nicht, weder in der Lazarus / Fpc Stable Installation noch in der trunk ...

...
Wenn du den UTF8-Code für ein Zeichen nicht kennst, solltest du die Lazarus-Zeichentabelle öffnen ("Bearbeiten" > "Aus der Zeichentabelle einfügen"). Stelle sicher, dass der Tabellen-Reiter "Unicode" aktiv ist.
...
[/quote]
Hilf mir mal bitte: Ich finde beides nicht, weder in der Lazarus / Fpc Stable Installation noch in der trunk ...



Wissen ist das einzige Gut, das sich vermehrt, wenn es geteilt wird ...
Re: eine blöde Frage
Das Package muss man jetzt nachinstallieren. Es heisst "charactermap_ide_pkg" (Package -> Installierte Packages einrichten..)Niesi hat geschrieben: Sa 21. Sep 2024, 09:40 Hilf mir mal bitte: Ich finde beides nicht, weder in der Lazarus / Fpc Stable Installation noch in der trunk ...![]()
![]()
![]()
Früher war das standardmässig drin.
Ich halte es für eine schlechte Entscheidung, dass es nicht mehr automatisch installiert wird.
- Niesi
- Lazarusforum e. V.
- Beiträge: 602
- Registriert: So 26. Jun 2016, 19:44
- OS, Lazarus, FPC: Linux Mint Cinnamon, Laz 4.1 Fpc 3.2.3 und allerlei mit FpcUpDeLuxe
- Kontaktdaten:
Re: eine blöde Frage
Danke, Theo, hab's gefunden und installiert ...theo hat geschrieben: Sa 21. Sep 2024, 10:09Das Package muss man jetzt nachinstallieren. Es heisst "charactermap_ide_pkg" (Package -> Installierte Packages einrichten..)Niesi hat geschrieben: Sa 21. Sep 2024, 09:40 Hilf mir mal bitte: Ich finde beides nicht, weder in der Lazarus / Fpc Stable Installation noch in der trunk ...![]()
![]()
![]()
Früher war das standardmässig drin.
Ich halte es für eine schlechte Entscheidung, dass es nicht mehr automatisch installiert wird.
Wissen ist das einzige Gut, das sich vermehrt, wenn es geteilt wird ...
Re: eine blöde Frage
Die Zeichentabelle war früher in der IDE hart eingebaut und wurde bei Laz3.0+ als separates Package ausgelagert, um zum einen die Basis-IDE zu entschlacken und zum anderen die Zeichentabelle auch für User-Code verfügbar zu machen.
Das Package ist in den vorkompilierten Release-Versionen standardmäßig enthalten, und auch wenn man die IDE mit "make bigide" aus dem Source-Code neu baut, wird es mit installiert. Nur bei einem alten Lazarus aus Quellcode, der erstmals vor der Umstellung installiert wurde und nun per git aktualisiert wird, ist es natürlich nicht enthalten und muss manuell nachinstalliert werden.
Das Package ist in den vorkompilierten Release-Versionen standardmäßig enthalten, und auch wenn man die IDE mit "make bigide" aus dem Source-Code neu baut, wird es mit installiert. Nur bei einem alten Lazarus aus Quellcode, der erstmals vor der Umstellung installiert wurde und nun per git aktualisiert wird, ist es natürlich nicht enthalten und muss manuell nachinstalliert werden.
- Niesi
- Lazarusforum e. V.
- Beiträge: 602
- Registriert: So 26. Jun 2016, 19:44
- OS, Lazarus, FPC: Linux Mint Cinnamon, Laz 4.1 Fpc 3.2.3 und allerlei mit FpcUpDeLuxe
- Kontaktdaten:
Re: eine blöde Frage
Meine "Stable" ist mit FpcUpDeLuxe neu installiert, da musste ich "charactermap_ide_pkg.0.1" selbst installieren.wp_xyz hat geschrieben: Sa 21. Sep 2024, 12:10 Die Zeichentabelle war früher in der IDE hart eingebaut und wurde bei Laz3.0+ als separates Package ausgelagert, um zum einen die Basis-IDE zu entschlacken und zum anderen die Zeichentabelle auch für User-Code verfügbar zu machen.
Das Package ist in den vorkompilierten Release-Versionen standardmäßig enthalten, und auch wenn man die IDE mit "make bigide" aus dem Source-Code neu baut, wird es mit installiert. Nur bei einem alten Lazarus aus Quellcode, der erstmals vor der Umstellung installiert wurde und nun per git aktualisiert wird, ist es natürlich nicht enthalten und muss manuell nachinstalliert werden.
Um das jetzt noch mal zu prüfen, habe ich mir mit FpcUp eine weitere "Trunk" installiert - da wurde keine Charmap installiert.
Ich arbeite unter Linux Mint 22 Cinnamon, mag sein, dass es daran oder an der Installation mit FpcUp liegt - sollte mensch halt wissen ...

Wissen ist das einzige Gut, das sich vermehrt, wenn es geteilt wird ...
-
- Beiträge: 292
- Registriert: Mo 24. Aug 2020, 14:16
- OS, Lazarus, FPC: Ubuntu Xenial 32, Lazarus 2.2.0, FPC 3.2.2
- CPU-Target: i386
Re: eine blöde Frage
Ich knall das mal hier unten dran, weil es irgendwie verwandt scheint - warum gibt mir das ein "Gotcha!"?
Wird da nur das erste Byte ausgewertet? Mit #126 statt #255 gibt es "Nope,,,".
Code: Alles auswählen
procedure TfrmMain.Button1Click(Sender: TObject);
var UTF8Key: TUTF8Char;
begin
UTF8Key := 'Ӝ';
case UTF8Key of #32..#255:
ShowMessage('Gotcha!');
else
ShowMessage('Nope...');
end;
end;
Wird da nur das erste Byte ausgewertet? Mit #126 statt #255 gibt es "Nope,,,".
- af0815
- Lazarusforum e. V.
- Beiträge: 6855
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: eine blöde Frage
Wenn ich mir das hier so ansehe https://www.freepascal.org/docs-html/ref/refsu56.html so wird scheinbar wirklich auf Ebene des Chars ausgewertet, weil ein UTF8case gibt es nicht. Das heisst für mich, utf8 kann man nicht mit case auswerten.Sieben hat geschrieben: So 6. Okt 2024, 12:55 Wird da nur das erste Byte ausgewertet? Mit #126 statt #255 gibt es "Nope,,,".
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
Re: eine blöde Frage
Im Falle von string ( TUTF8Char = string[7] ) werden alle im Bereich angegebenen Bytes verglichen. Gemäß der Dokumentation - Link bereitgestellt von @af0815:
In Ihrem Fall sieht es also so aus:The case with strings is equivalent to a series of if then else statements, no optimizations are performed.
However, ranges are allowed, and are the equivalent of anCode: Alles auswählen
if (value>=beginrange) and (value<=endrange) then begin end;
Code: Alles auswählen
var
UTF8Key: TUTF8Char;
begin
UTF8Key := 'Ӝ'; //#211#156
case UTF8Key of #32..#255: // if (UTF8Key >= #32) and (UTF8Key <= #255) then
ShowMessage('Gotcha!');
else
ShowMessage('Nope...');
end;
end;
Grüße / Pozdrawiam
paweld
paweld