InStream UTF8 Encoding

5. November 2015 17:19

Hallo

Ich habe mir eine List FactBox erstellt, die bestimmte Einträge vom Typ Notiz aus der Tabelle 2000000068 "Record Link" auslesen und anzeigen soll.
Eigentlich kein Problem, ausser bei der Konvertierung der Blobtexte.

Schreibe ich In der OnAfterGetRetRecord folgenden Code

...
Rec.Note.CREATEINSTREAM(Data, TEXTENCODING::WINDOWS);
Ret := Data.READTEXT(MyNote);

kriege ich alle gewünschten Sätze angezeigt. Allerdings mit falschen Umlauten.

Verwende ich aber TEXTENCODING::UTF8 wird nur der erste gelesene Datensatz richtig übersetzt. Bei allen folgenden Sätzen
gibt Data.READTEXT(MyNote) den Wert 0 zurück und MyNote ist leer.

Weiss jemand, wieso das so ist resp. was ich da falsch mache?

Besten Dank und viele Grüsse
Daniel

Re: InStream UTF8 Encoding

5. November 2015 21:13

So wie es aussieht ist Deine Instream-Variable "Data" eine globale Variable, ich konnte zumindest denselben Effekt so nachstellen.
Wenn Du diese Variable aus den globalen Variablen entfernst und im OnAfterGetRecord() als lokale Variable anlegst (bzw. dorthin wo CREATEINSTREAM erfolgt), dann wird es klappen mit der Notizausgabe.
Grundsätzlich gilt:
Benutze globale Variablen nur dort, wo diese auch global gebraucht werden (z.B. Deine MyNotiz-Textvariable, da diese für die Ausgabe in der Page verwendet wird), ansonsten lokale variablen, dadurch minimiert man Risiko, dass es zu solchen oder ähnlichen unerwünschten Effekten kommt.

Re: InStream UTF8 Encoding

8. Dezember 2015 13:05

Hallo Jupiter

Zuerst mal sorry, dass ich solange gebraucht habe um auf deine Antwort zu reagieren. Es war ziemlich viel los in den letzten Wochen...

Dein Tipp war goldrichtig. Variable verschoben - und es funktioniert. Super!

Vielen Dank und Gruss
Daniel