AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Evtl. Charset-Problem beim Empfang von Daten aus Polen
Thema durchsuchen
Ansicht
Themen-Optionen

Evtl. Charset-Problem beim Empfang von Daten aus Polen

Offene Frage von "morgworm"
Ein Thema von morgworm · begonnen am 17. Apr 2007 · letzter Beitrag vom 17. Apr 2007
Antwort Antwort
Seite 1 von 2  1 2      
morgworm

Registriert seit: 11. Okt 2005
13 Beiträge
 
Delphi 7 Architect
 
#1

Evtl. Charset-Problem beim Empfang von Daten aus Polen

  Alt 17. Apr 2007, 11:51
Hallo, ich habe folgendes Problem:

Beliebige Binärdateien sollen von weltweit arbeitenden Nutzern eines in Delphi geschriebenen Tools in BLOB-Felder einer Oracle Datenbank geladen werden. Aus historischen Gründen wird die BDE verwendet. Dabei werden die Dateien in mehrere Teile gesplittet (wegen BDE-Cache-Begrenzungen) und beim Auslesen wieder zusammengesetzt.

Das Ganze funktioniert wunderbar, solange dieser Vorgang von deutschen Rechnern aus geschieht. Von Polen aus schleichen sich immer nach dem gleichen Muster Fehler ein. (Die Dateifragmente stehen dann schon falsch in der Datenbank, d.h. das Auslesen/Zusammensetzen funktioniert einwandfrei.)

Ich habe die Fehler mittels einer generierten Testdatei analysiert und folgende Vergleichsübersichten erstellt (Links "lvalue": Originalzeichen, Rechts: Änderung bei Daten von polnischen Rechnern), die NUR die Änderungen enthält, d.h. alle anderen Zeichen werden korrekt übermittelt (bis auf ein paar mit ASCII-Codes>240, die mein Programm komischerweise ignoriert hat):

Delphi-Quellcode:
--------HEX-------DEZ--------------BIN-------
ƒ=? 83=3F 131=63 10000011=00111111
ˆ=? 88=3F 136=63 10001000=00111111
Œ=S 8C=53 140=83 10001100=01010011
 =T 8D=54 141=84 10001101=01010100
 =Z 8F=5A 143=90 10001111=01011010
˜=? 98=3F 152=63 10011000=00111111
 =t 9D=74 157=116 10011101=01110100
Ÿ=z 9F=7A 159=122 10011111=01111010
¡=? A1=3F 161=63 10100001=00111111
¢=? A2=3F 162=63 10100010=00111111
£=L A3=4C 163=76 10100011=01001100
¥=A A5=41 165=65 10100101=01000001
ª=S AA=53 170=83 10101010=01010011
¯=Z AF=5A 175=90 10101111=01011010
²=? B2=3F 178=63 10110010=00111111
³=l B3=6C 179=108 10110011=01101100
¹=a B9=61 185=97 10111001=01100001
º=s BA=73 186=115 10111010=01110011
¼=L BC=4C 188=76 10111100=01001100
½=? BD=3F 189=63 10111101=00111111
¾=l BE=6C 190=108 10111110=01101100
¿=z BF=7A 191=122 10111111=01111010
À=R C0=52 192=82 11000000=01010010
Ã=A C3=41 195=65 11000011=01000001
Å=L C5=4C 197=76 11000101=01001100
Æ=C C6=43 198=67 11000110=01000011
È=C C8=43 200=67 11001000=01000011
Ê=E CA=45 202=69 11001010=01000101
Ì=E CC=45 204=69 11001100=01000101
Ï=D CF=44 207=68 11001111=01000100
Ñ=N D1=4E 209=78 11010001=01001110
Ò=N D2=4E 210=78 11010010=01001110
Õ=O D5=4F 213=79 11010101=01001111
Ø=R D8=52 216=82 11011000=01010010
Ù=U D9=55 217=85 11011001=01010101
Û=U DB=55 219=85 11011011=01010101
Þ=T DE=54 222=84 11011110=01010100
ð=d F0=64 240=100 11110000=01100100
Erkennt jemand ein Muster und kann eine Fehlerursache erahnen? Mich wundert, wie so etwas passieren kann, da doch ausdrücklich Binärdaten übertragen werden sollen.

Die BLOB-Felder werden per cds.Params.ParamByName('blbFile').LoadFromStream(f sPart, ftOraBlob) gefüllt.

Das entsprechende SQL dazu ist: INSERT INTO tblName (...) VALUES (...) RETURNING INTO :blbFile

Wäre für Ideen/Hinweise sehr dankbar!

Gruß François
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Evtl. Charset-Problem beim Empfang von Daten aus Polen

  Alt 17. Apr 2007, 12:00
Was für SQL-Feldtypen haben die Problematischen Felder?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
morgworm

Registriert seit: 11. Okt 2005
13 Beiträge
 
Delphi 7 Architect
 
#3

Re: Evtl. Charset-Problem beim Empfang von Daten aus Polen

  Alt 17. Apr 2007, 12:05
Das sind BLOB-Felder.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Evtl. Charset-Problem beim Empfang von Daten aus Polen

  Alt 17. Apr 2007, 12:15
Bist du dir sicher das die Fehler durch den Eintrag in der DB auftreten oder nicht schon zuvor?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
morgworm

Registriert seit: 11. Okt 2005
13 Beiträge
 
Delphi 7 Architect
 
#5

Re: Evtl. Charset-Problem beim Empfang von Daten aus Polen

  Alt 17. Apr 2007, 12:43
Hmm... z.B. schon beim FileStream-Erzeugen?

Also es läuft ja so: Lokal hat der Benutzer eine Datei zu liegen - für die wird ein readonly-FileStream erzeugt. Der wird dann aufgeteilt in mehrere Teil-FileStreams, die gefüllt werden über fsPart.CopyFrom(fsFileStream, iReadByteSize), d.h. durch Byte-weises Kopieren. Diese werden dann über LoadFromStream vollständig in ein BLOB-Feld gestreamt.

Mehr passiert da nicht. An welcher Stelle kann da ein Fehler auftreten? Arbeiten FileStreams irgendwie auf ASCII-Basis?

Was man prüfen könnte, wäre, wie die Teil-Streams (fsPart) aussehen, bevor sie in die DB geladen werden... aber wenn da wirklich schon eine Veränderung zum Original sein sollte, würde das ja bedeuten, dass man in Polen eigentlich gar keine FileStreams sinnvoll verwenden kann, was eigenartig wäre.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Evtl. Charset-Problem beim Empfang von Daten aus Polen

  Alt 17. Apr 2007, 13:35
Welchen Inhalt sollen diese FileStreams denn haben? Mit was werden sie gefüllt? Gibt der User Irgendwas in irgendeinem Formular ein und das wird dann binär gespeichert?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Evtl. Charset-Problem beim Empfang von Daten aus Polen

  Alt 17. Apr 2007, 13:47
Warum werden für die Teilstreams Filestreams und nicht Memorystreams benutzt?

Kannst du Code posten?
Lukas Erlacher
  Mit Zitat antworten Zitat
morgworm

Registriert seit: 11. Okt 2005
13 Beiträge
 
Delphi 7 Architect
 
#8

Re: Evtl. Charset-Problem beim Empfang von Daten aus Polen

  Alt 17. Apr 2007, 13:52
Welchen Unterschied würde es machen, MemoryStreams zu verwenden?
Ich könnte das mal ausprobieren. Es gibt, soweit ich weiß, keinen besonderen Grund, warum wir einen FileStream statt eines MemoryStreams nehmen.

Mehr realen Code als meine wörtliche Beschreibung möchte ich nicht unbedingt preisgeben. Es passiert nicht mehr als ich beschrieben habe.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: Evtl. Charset-Problem beim Empfang von Daten aus Polen

  Alt 17. Apr 2007, 13:55
TFileStream sollte hier nichts ausmachen.

Es wäre aber seeehr gut zu sehen ob die Änderungen wirklich von der DB verursacht werden (Oracle ist ja auch nicht fehlerfrei).

Ansonsten geb ich dir den Tipp: Setzt eine VM-Ware auf und installier dort ein polnisches Windows. Anschließend kompilierst du deine Exe mit externen Debug-Infos und installierst in der VM den Borland Remote Debugger. Starte dein Anwendung in der VM und verbinde dich mit dieser Exe in der VM.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
morgworm

Registriert seit: 11. Okt 2005
13 Beiträge
 
Delphi 7 Architect
 
#10

Re: Evtl. Charset-Problem beim Empfang von Daten aus Polen

  Alt 17. Apr 2007, 13:56
@Bernhard: Der FileStream wird auf einer beliebigen lokalen Datei eines Benutzers, die er in unser System hochladen möchte, gebildet. Was für eine Datei das ist, kann ich nicht beeinflussen - es muss mit jeglichen Dateien wie Bildern, ZIP-Files, TXT, TAR, etc funktionieren.

Es wird nichts in einem Formular o.ä. gespeichert außer der Pfad zu der lokalen Datei des Benutzers, die er hochladen möchte. "Binär" an den Daten sind also nur ggf. die Daten der Datei selbst - nichts sonst irgendwie Generiertes.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz