Fehler beim BLOB-Export

1. September 2016 06:44

Hallo zusammen,

mit dem u.a. Quellcode in einem NAV2016-Report möchte ich Daten aus einem Blob-Feld in Excel auslesen.
Wenn ich die Datei mit "datei.OPEN(tempDateiPfad + tempDateiName,TEXTENCODING::UTF8)" öffne kommt beim IStream.READ(Character) der Fehler "Der Datenstrom enthält ungültige Daten. Der Text kann nicht gelesen werden".
Wenn ich die Datei mit "datei.OPEN(tempDateiPfad + tempDateiName)" öffne, werden die Sonderzeichen üÜäÄöÖß nicht korrekt ausgelesen.

Was mache ich falsch?

Gruß
Jens

Code:
ncItemMedium_L.CALCFIELDS(BLOB);
ncItemMedium_L.BLOB.EXPORT(tempDateiPfad + tempDateiName);                 

datei.OPEN(tempDateiPfad + tempDateiName);
Dateilaenge := datei.LEN;

datei.CREATEINSTREAM(IStream);


IF Dateilaenge <= 2252 THEN BEGIN
  i := 1;
  WHILE NOT IStream.EOS DO BEGIN
    IStream.READ(Character);
    zaehler_L += 1;   
    CharacterText_L := FORMAT(Character);   
    ParmSpaltenwert[i] += CharacterText_L;
    IF zaehler_L = 1000 THEN BEGIN
      i += 1;
      zaehler_L := 0;
    END;
  END;
END ELSE BEGIN
  ParmSpaltenwert[1] := '!!!Text länger als 2252 Zeichen!!!';
  ZuLangerText := TRUE;
END;
Zuletzt geändert von germmare am 1. September 2016 21:00, insgesamt 1-mal geändert.

Re: Fehler beim BLOB-Export: "Der Datenstrom enthält ungülti

1. September 2016 09:29

Beitrag neu erstellt (Thema geteilt, Beitrag war ursprünglich hier angehängt).

Hallo germmare,

dein Quelltext ist leichter zu lesen und zu verstehen, wenn du ihn zwischen so genannte Code-Tags setzt. Insbesondere deine Formatierungen werden so auch beibehalten.

Daher bitten wir dich, vor und nach deinem Quelltext diese Code-Tags einzufügen. Beispiel:


[code]Dein Quelltext[/code]

Gruß, Kowa
MSDynamics.de-Team

Re: Fehler beim BLOB-Export

1. September 2016 10:00

Ich befürchte, EXPORT ist ungeeignet, weil du keinen Einfluss auf das Encoding beim Schreiben der Datei hast.

OPEN+Encoding konvertiert nicht die Daten in das richtige Format, sondern öffnet die Datei, und nimmt an, dass die Datei sich schon im angegebenen Encoding befindet.
Da stellt sich die Frage, mit welchem Encoding die Daten in das BLOB geschrieben worden sind ...? Vermutlich Windows?

Vermutlich ist es besser, das BLOB selbst auszulesen (z.B. mit CREATEINSTREAM) und die Datei mit CREATE + Encoding selbst anzulegen.

Re: Fehler beim BLOB-Export: "Der Datenstrom enthält ungülti

1. September 2016 12:30

Hallo Natalie,

Danke für die Info.
Mit CREATEINSTREAM hatte ich das schon mal versucht.
Leider ohne Erfolg.
Hast du vielleicht ein Beispielcode für mich?

Vielen Dank.

Gruß
Jens

Re: Fehler beim BLOB-Export: "Der Datenstrom enthält ungülti

1. September 2016 12:45

germmare hat geschrieben:Hast du vielleicht ein Beispielcode für mich?
Ich habe spontan nicht mehr als das, was du in der Onlinehilfe findest.
Und bitte beachte die erste Antwort in Rot von Kowa, und editiere deinen Startbeitrag - danke ;-)

Re: Fehler beim BLOB-Export

1. September 2016 21:01

Ok. Trotzdem vielen Dank.

Re: Fehler beim BLOB-Export

1. September 2016 22:20

Hallo,

ich würde mir mal Bigtext und dort das Beispiel in der Hilfe für Bigtext.Read anschauen.

Ein Problem könnte auch das zeichenweise Einlesen des Textes sein. UTF8 ist nicht immer ein Byte groß. (Außerdem ist es nicht gerade für seine Geschwindigkeit bekannt :wink: )

Gruß Fiddi