Ich muss Daten aus einer Legacy-Datenbankdatei von Visual Basic 6 lesen. Von der Legacy-Software fand ich, dass die Datei mit Put und geschrieben wurde Übergeben einer Art von Datensätzen als Parameter an die Put-Funktion. Diese Strukturen sind wie folgt definiert:Lesen (mit Filesystem.FileGet) VB6-Datensatzdatei (geschrieben mit Put) mit C#
Type THE_TYPE
FIELD_1 As Single
FIELD_2 As String * 20
FIELD_3(1 To 50) As Single
FIELD_4(1 To 10) As String * 1
End Type
Meine Typen sind größer und komplexer, aber ich habe in THE_TYPE die verschiedenen Definitionen habe ich in meinem Projekt. Ich habe gefunden, dass das Importieren von Microsoft.VisualBasic mir Zugang zu VB-Funktionen gibt, die jenen ähnlich sind, die verwendet werden, um die Datei zu schreiben, also öffne und schließe ich die Datei mit FileSystem.OpenFile() und .CloseFile(); Jetzt muss ich schließlich Daten enthalten sind, und da die ursprüngliche Funktion lesen war:
Public RecordContent As THE_TYPE
[...]
Get #1, recordNumber, RecordContent
Ich glaube, ich etwas ähnliches, wie Microsoft.VisualBasic.FileSystem.FileGet() verwenden können. Die Frage ist also, wie definiere ich einen Container, nehme ich eine Klasse an, die dem ursprünglichen VB6-Typ "THE_TYPE" ähnelt? Wie rufe ich .FileGet() auf, um dieses Objekt korrekt zu füllen?
Während GSerg Ihnen vielleicht in die richtige Richtung gezeigt hat, wissen Sie, dass es große Unterschiede in der Art und Weise gibt, wie 'Put' zwischen den' Offenen' Modi von 'Random' und' Binary' funktioniert. Siehe http://msdn.microsoft.com/en-us/library/aa266212(v=VS.60).aspx und http://msdn.microsoft.com/en-us/library/aa266177(v=vs. 60) .aspx für Details. Ich bringe das auf, denn wenn die "String" - und Array-Elemente alle eine feste Größe haben, habe ich mich gefragt, ob die VB6-App den "Open ... Binary" -Modus verwendet. – rskar
Es war im Random-Modus – ccalboni
+1 Für den Import von 'Microsoft.VisualBasic' und die Verwendung von' FileSystem'. Sie wären erstaunt [wie] (http://stackoverflow.com/questions/7290976/vb6-how-are-binary-files-encoded-using-put-statement) [oft] (http://stackoverflow.com)/questions/8886096/converting-quick-basic-zu-vb-net-random-access-files) Leute übersehen diese! – MarkJ