[gelöst] Lazarus 1.8.4 FPC 3.04 Zeichencodierung

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Flenser
Beiträge: 24
Registriert: Di 28. Okt 2014, 12:49

[gelöst] Lazarus 1.8.4 FPC 3.04 Zeichencodierung

Beitrag von Flenser »

Ich habe eine Problem mit dem FPC 3.0.4, welches ich mit dem FPC 2.6.4 noch nicht hatte. So weit ich mir es erlesen habe, liegt es an den Änderungen im Umgang mit UTF8, Ansi und Co.

Ich arbeite mit einer Accessdatenbank, die auch weiterbenutzt werden soll.

Vor FPC 3.0.4 wurden mit ANSIToUTF8 die Sonderzeichen und Umlaute umgewandelt, so dass sie richtig dargestellt wurden:
Bauort_DBText.visible := true;
Bauort_DBText.caption:= ANSIToUTF8(Bauort_DBText.caption); => im Formular wurden im DBText Umlaute dargestellt


Mit FPC 3.0.4 hat ANSIToUTF8 oder andere UTF8 Befehle (ich stochere da im Nebel) keine Auswirkung mehr. Sonderzeichen werden mit Fragezeichen dargestellt.

Ich habe in den Projekteinstellungen UTF8 deaktiviert (-dDisableUTF8RTL) und bei den Dateieinstellungen die Zeichenecodierung auf Ansi(cp1252) geändert. Das hatte das Umlauteproblem bei der Übergabe
an Word gelöst.

Was ich absolut nicht verstehe ist, warum mit
Bauort:= Bauort_DBText.Field.text;
varTmp:=(Bauort);
varBookmark.Range.Text := varTmp;


in Word die Umlaute richtig geschrieben werden, d.h. es taucht statt des Fragezeichens das richtige Sonderzeichen auf, OBWOHL es aus dem DBText ausgelesen wird, welchen im Formular nur Fragezeichen anzeigt.
Das Sonderzeichen muss da dann doch irgendwie richtig hinterlegt sein.

Lange Rede, kurzer Sinn: Wie kann ich im DBText mit FPC 3.0.4 Sonderzeichen richtig anzeigen lassen?
Wie könnte ich alternativ mit dem Umweg über ein Label die Sonderzeichen richtig anzeigen lassen?
Zuletzt geändert von Flenser am Fr 9. Nov 2018, 08:20, insgesamt 1-mal geändert.

VB_Lazarus
Beiträge: 90
Registriert: Do 23. Dez 2010, 19:10
OS, Lazarus, FPC: Windows 10/11 32/64bit, L 2.2.0 32bit, FPC 3.2.2 32bit
CPU-Target: 32Bit

Re: Lazarus 1.8.4 FPC 3.04 Zeichencodierung

Beitrag von VB_Lazarus »

Hallo,

ich habe in meiner Access Datenbank es wie folgt gelöst:

Code: Alles auswählen

 
                  Text_von_Control_umwandeln := UTF8ToWinCP(aText);
                  Text_nach_Control_umwandeln := WinCPToUTF8(aText);
 


Die 1. Funktion nutze ich einen Text von einem TEdit zu einem Datenbankfeld umzuwandeln.
Die 2. Funktion nutze ich genau für die umgekehrte Aktion (von DB -> TEdit).

Gruß

Flenser
Beiträge: 24
Registriert: Di 28. Okt 2014, 12:49

Re: Lazarus 1.8.4 FPC 3.04 Zeichencodierung

Beitrag von Flenser »

Vielen Dank, es hat funktioniert...

Antworten