TChart Umlaute

Rund um die LCL und andere Komponenten

TChart Umlaute

Beitragvon af0815 » 7. Sep 2017, 13:31 TChart Umlaute

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.
ChartUmlaute.JPG


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
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
af0815
 
Beiträge: 3265
Registriert: 7. Jan 2007, 10:20
Wohnort: Niederösterreich
OS, Lazarus, FPC: Win7/Linux (L stable FPC stable) per fpcup | 
CPU-Target: 32Bit (64Bit)
Nach oben

Beitragvon wp_xyz » 7. Sep 2017, 14:06 Re: TChart Umlaute

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?
wp_xyz
 
Beiträge: 2272
Registriert: 8. Apr 2011, 08:01

Beitragvon af0815 » 7. Sep 2017, 14:43 Re: TChart Umlaute

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).
af0815
 
Beiträge: 3265
Registriert: 7. Jan 2007, 10:20
Wohnort: Niederösterreich
OS, Lazarus, FPC: Win7/Linux (L stable FPC stable) per fpcup | 
CPU-Target: 32Bit (64Bit)
Nach oben

Beitragvon wp_xyz » 7. Sep 2017, 14:55 Re: TChart Umlaute

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.
wp_xyz
 
Beiträge: 2272
Registriert: 8. Apr 2011, 08:01

Beitragvon af0815 » 7. Sep 2017, 15:10 Re: TChart Umlaute

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).
af0815
 
Beiträge: 3265
Registriert: 7. Jan 2007, 10:20
Wohnort: Niederösterreich
OS, Lazarus, FPC: Win7/Linux (L stable FPC stable) per fpcup | 
CPU-Target: 32Bit (64Bit)
Nach oben

Beitragvon wp_xyz » 7. Sep 2017, 16:04 Re: TChart Umlaute

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.
wp_xyz
 
Beiträge: 2272
Registriert: 8. Apr 2011, 08:01

Beitragvon af0815 » 7. Sep 2017, 16:15 Re: TChart Umlaute

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).
af0815
 
Beiträge: 3265
Registriert: 7. Jan 2007, 10:20
Wohnort: Niederösterreich
OS, Lazarus, FPC: Win7/Linux (L stable FPC stable) per fpcup | 
CPU-Target: 32Bit (64Bit)
Nach oben

• Themenende •

Zurück zu Komponenten und Packages



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste

porpoises-institution
accuracy-worried