Откройте старый файл произвольного доступа VB6, используя C # - PullRequest
0 голосов
/ 12 февраля 2019

Я пытаюсь открыть старые файлы VB6, созданные с помощью произвольного доступа.

Используемый тип был следующим:

Type CDB
    dateCreated As Date
    lastModified As Date
    companyName As String * 30
    ownerName As String * 30
    contactName As String * 30
    addresss As String * 100
    tel As String * 75
    vat As String * 8
    BRegd As String * 9
End Type

И доступ был следующим:

Dim CDB As CDB
Open "CLIENTS.DAT" For Random As #1 Len = Len(CDB)
Lastrec = LOF(1) / Len(CDB)

For rec = 1 To Lastrec
    Get #1, rec, CDB
    txtDateCreated.Text = Format(CDB.dateCreated, "dd/mm/yyyy")
    txtLastModified.Text = Format(CDB.lastModified, "dd/mm/yyyy")
    txtCompanyName.Text = Trim(CDB.companyName)
    ... and so on
Next

Теперь я хочу открыть этот файл с помощью C # и импортировать все данные в виде данных SQL.Может ли кто-нибудь помочь мне открыть этот файл, используя тип CDB в качестве структуры?

1 Ответ

0 голосов
/ 12 февраля 2019

Чтобы использовать мой пример, вы должны создать псевдоним для сборки Microsoft.VisualBasic.Filesystem:

Imports VB6FileSystem = Microsoft.VisualBasic.FileSystem
Imports VB = Microsoft.VisualBasic

Затем в вашем коде:

// make sure the read buffer is big enough
string testReadData = "".PadRight(128);
int filenumber = VB6FileSystem.FreeFile();
VB6FileSystem.FileOpen(filenumber, @"c:\temp\test.dat", VB.OpenMode.Random,  RecordLength: 128);

// Write some test data ....
VB6FileSystem.FilePut(filenumber, "Testdaten 1", 1, true);
VB6FileSystem.FilePut(filenumber, "Testdaten 4", 4, true);
VB6FileSystem.FilePut(filenumber, "Testdaten 14", 14, true);
// Read some data ...
VB6FileSystem.FileGet(filenumber, ref testReadData, 14, true);
VB6FileSystem.FileClose(filenumber);

Конечно, вы должныпроанализировать старую структуру записи (vb6 знает «строки фиксированной длины», в то время как C # на самом деле их не знает ...) и как данные представлены в файле.Возможно, вам следует прочитать Byte Array в c #, чтобы обрабатывать двоичные данные (например, даты, числа ...) «вручную».

Что я не пробовал, так это метод FileGetObject для использования байтового массива в ссылочной переменной,Не стесняйтесь выполнять задание.

...