TChart Umlaute

Rund um die LCL und andere Komponenten
Antworten
Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
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:

TChart Umlaute

Beitrag von af0815 »

Ich habe hier ein Problem mit Umlauten.

Ich lese Daten aus einer DB, wo bei in den Texten umlaute vorkommen können. Diese Texte fülle ich mit

Code: Alles auswählen

sWorkbookSource1.Worksheet.WriteCellValueAsString(j, i, Query.Fields[i].AsString,MyFormat);

ein. In der Anzeige sieht man, das die Umlaute richtig dargestellt sind. Auf diese Werte greife ich mit einer TSWorkbookChartSource zu und fülle die Daten in ein TChart. Dort kommen aber die Umlaute nur zerstört an.
Zerstörte Umlaute
Zerstörte Umlaute


Die Achse mit einem Umlaut im Text wird aber richtig angezeigt. Speicher ich das Spreadsheet auch noch ab, so sind ebenfalls die Umlaute zerstört, wenn ich mir das dann in Libreoffice ansehe.

Wo kann ich da sinnvoll ansetzen.

Andreas
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: TChart Umlaute

Beitrag von wp_xyz »

Bist du sicher, dass die Umlaute aus der DB UTF8-codiert sind? Weder fpspreadsheet noch TAChart ändern irgendetwas an der Zeichencodierung (ok - fpspreadsheet wandelt bein Lesen die ANSI-Koderiung von xls-Dateien nach UTF8 um und beim Schreiben wieder zurück). Es kann natürlich irgendwo ein Fehler vorliegen, aber um den zu finden, müsste ich mehr haben als einen Screenshot. Was ist das für ein Grid, das links neben dem Chart zu sehen ist?

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
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: TChart Umlaute

Beitrag von af0815 »

Das Grid ist ein fpSpreadsheet - Workbook.

Code: Alles auswählen

 
  MyFormat:= sWorkbookSource1.Workbook.FormatSettings;
  MyFormat.DecimalSeparator:='.';
  MyFormat.ThousandSeparator:= ' ';
  ....
  Query.First;
  j := 0;
  while not Query.EOF do
  begin
    for i := 0 to Query.Fields.Count - 1 do 
      sWorkbookSource1.Worksheet.WriteCellValueAsString(j, i, Query.Fields[i].AsString,MyFormat);
    Query.Next;
    Inc(j);
  end;
 

später wird dann einfach mit

Code: Alles auswählen

  sWorkbookChartSource1.YRange:='A'+IntToStr(Anfang+1)+':A'+IntToStr(Ende+1);
  sWorkbookChartSource1.XRange:='C'+IntToStr(Anfang+1)+':C'+IntToStr(Ende+1);
  Chart1.Title.Text.Clear;
  Chart1.Title.Text.Append('Gxx ');
  Chart1BarSeries1.Source:=sWorkbookChartSource1;
  Chart1.BottomAxis.Marks.Source:= sWorkbookChartSource1;
  Chart1.BottomAxis.Marks.Style:= TSeriesMarksStyle.smsLabel;
  Chart1.BottomAxis.Marks.LabelFont.Orientation:= 900;
 

Die Verbindung hergestellt, der Bereich für die Daten und die Beschriftung festgelegt. Die Verbindung wird über ZEOS Komponenten hergestellt.

Code: Alles auswählen

  Connection.ClientCodepage:='UTF-8';
  Connection.ControlsCodePage:=cGET_ACP;
 


Also insgesamt nicht saufregendes :-)

Hinweis ZEOS: cGET_ACP(switch to the OS-CodePage like WIN1252)/cCP_UTF16(switch to TWideString/Memo fields) is set then the encoding is correct if your OS codepage ...
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: TChart Umlaute

Beitrag von wp_xyz »

Das mit cGet_ACP verstehe ich nicht, klingt zumindest sehr verdächtig.

Wenn du das fragliche Datenbankfeld von einem stinknormalen Label anzeigen lässt, kommen dann die Umlaute richtig? Wenn nicht, hat das Problem mit der Datenbank zu tun. Wenn ja, solltest du ein kleines Beispielprojekt schreiben (inkl. ZEOS-DB, aber bitte keine große Serveranbindung, am besten als SQLite oder so), an dem ich das näher untersuchen kann.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
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: TChart Umlaute

Beitrag von af0815 »

wp_xyz hat geschrieben:Das mit cGet_ACP verstehe ich nicht, klingt zumindest sehr verdächtig.


Ist es auch. Ich bin jetzt auf cCP_UTF8 umgestiegen. Ich habe jetzt ein paar Tests gemacht und es hat sich an den anderen Anzeige nichts geändert. Nur die Probleme bei
Workbook->TChart sind verschwunden. Ursprünglich ist das Projekt ja auf FPC (2.6.x) und den damaligen Lazarus entwickelt worden, da hat es ohne dem cCP_ACP Probleme gegeben. (MSSQL mit Ungarischer collation, deutsches Entwicklungssystem, englisch/deutsch/ungarische Clients,....) Aktuell bin ich auf FPC trunk (wegen ein paar Bugs) und Lazarus 1.8(RC). Kann sein, das sich da einiges getan hat und besonders mit der geänderten Stringverwaltung.

Ich war nur irritiert, da das Workbook richtig anzeigt und es aber im TChart Probleme gab. Auch sind sonst im Programm alle Umlaute und ungarische Zeichen richtig gekommen, nur die Chart hat mich da aus der Bahn geworfen.

Muss es abschliessend noch gegen die richtigen Server testen - mal sehen ob da noch Probleme sind.

Andreas
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

wp_xyz
Beiträge: 4869
Registriert: Fr 8. Apr 2011, 09:01

Re: TChart Umlaute

Beitrag von wp_xyz »

af0815 hat geschrieben:nur die Chart hat mich da aus der Bahn geworfen.

Ich streite ja nicht ab, dass es nicht irgendwo Probleme in meinem Code geben könnte. Nur werde ich mir jetzt nicht die Mühe machen, auf Verdacht ein Testprojekt mit einer ungarische Datenbank zu schreiben, um dann festzustellen, dass bei mir alles geht, weil ich an der entscheidenden Stelle etwas anders gemacht habe. Du müsstest mir schon eine kleine Demo zusammenklicken, in der ich den Fehler sehe und untersuchen kann, wo es herkommt.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
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: TChart Umlaute

Beitrag von af0815 »

Wenn es interessant wird, so werde ich mich melden und eine richtige Demo aufsetzen. Das Problem kann aber auch schon - wie hier - in der Serveranbindung entstehen. Vor allen habe ich bei Tests auf SQLite generell nicht gehabt. Erst mit den richtigen Servern und den vielen Möglichkeiten der Konfiguration habe ich es gesehen.

Deswegen ist es auch nicht so einfach das Problem auf ein einfaches Demo zu reduzieren :-) Sagen wir mal, wenn ich ein vernünftiges Demo habe, so rühre ich mich hier im Forum, ansonsten kann ich mit der cCP_UTF8 auch leben. DIe Tests mit dem Produktionsserver haben auch keine Probleme ergeben.

Andreas
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten