So lesen Sie ein Delphi-Array mit fixierten Strings in einem gepackten Datensatz in c #

8

Ich muss ein Blob-Feld aus einer Datenbank in eine c # -App lesen.

Das Blob-Feld wurde jedoch von einer Delphi-App mit der folgenden Methode in die Datenbank geschrieben:

%Vor%

Die in die Datenbank geschriebene Struktur ist keine einfache Struktur und enthält Dinge wie

%Vor%

oder schlimmer, einige von ihnen enthalten

%Vor%

Ich habe versucht, die Bytes aus der Datenbank einzulesen und dann

zu verwenden %Vor%

um es in die Struktur zu verschieben

My Struct ist wie folgt definiert:

%Vor%

Aber ich bekomme einen Fehler beim Aufruf von Marshal.PtrToStructure ():

  

Feld kann nicht gemarshallt werden   'ArrayofFixedLengthStrings' vom Typ   'MyBlobField': Ungültig   verwaltete / nicht verwaltete Typkombination   (String [] muss mit einem gepaart sein   ArraySubType von LPStr, LPWStr, BStr oder   LPTStr).

Ich habe mich gefragt, ob es ein Attribut gibt, das ich in einem CustomMarshaler definieren könnte, das eine Paarung mit einem String []

akzeptieren würde

Irgendwelche Ideen, wie ich den Inhalt des Blobs in c # lesen könnte?

    
James Barrass 03.02.2010, 16:03
quelle

2 Antworten

2

Ich habe es herausgefunden ...

Deklarierte eine Struktur String20 als

%Vor%

Offensichtlich ist der Zeichenfolgengrößenbezeichner am Anfang einer Zeichenfolge fester Länge (d. h. ein Delphi ShortString) nur 1 Byte. Dann änderte die Definition von header_identifiers zu:

%Vor%

Außerdem wurde festgestellt, dass Delphi Packed Boolean als

umgewandelt werden muss %Vor%     
James Barrass 04.02.2010, 12:05
quelle
0

Mein erster Kommentar ist, dass die "String [80]" eine Zeichenfolge mit fester Länge ist (die in einer Struktur einfacher zu handhaben sein sollte), und in C # versuchen Sie, sie in eine "String []" einzufügen - Das ist eigentlich eine Referenz (Zeiger) auf eine Zeichenfolge.

Mein nächster Kommentar ist, dass Sie im schlimmsten Fall versuchen könnten, ihn in ein Array von Bytes zu lesen, die benötigten Bytes herauszuziehen und sie in die Zielstruktur zu manipulieren.

    
Andy Jacobs 04.02.2010 03:33
quelle

Tags und Links