Обратная совместимость двоичных файлов с VB6 - Visual Basic .NET
Формулировка задачи:
Добрый день! Портирую большой проект из VB6 в VB.net (VS 2008). Необходимо достигнуть обратной совместимости при чтении двоичных файлов между приложением, созданным в VB.net (Vs2008) и старым приложением, созданным в VB6.
Ситуация. В двоичном файле VB6 сохранен сложный пользовательский тип (структура) из строк, строковых массивов, числовых динамических массивов.
например:
так выглядело в VB6 (это фрагмент работающей программы):
для сохранения и извлечения из файла использовалась простая технология Put / Get
В VB 2008 это выглядит так:
Используется FilePut(1, MData) / FileGet(1, MData)
По отдельности коды в VB6 и VB.net работают правильно. Файлы записываются и считываются.
Проблема: Дебагер выдает сообщение: "Невозможно преобразовать объект типа "System.Int23[]" к типу "System.Int32[,]"."
При замене с Integer на Long или Short меняется только разрядность в сообщении дебагера с Int23, например, на Int64 или Int16, но смысл тот же.
Похоже, что FileGet неверно распознает размерность старого массива. Что я делаю неправильно? Как это вылечить? И возможно ли? Уверен, что проблема обратной совместимости не нова, но на форуме не нашел. Заранее спасибо!
Решение задачи: «Обратная совместимость двоичных файлов с VB6»
textual
Листинг программы
LatenTInSerLeft(0, 0) As Long