Как читать бинарный файл структуры c ++ в Excel VBA - PullRequest
3 голосов
/ 23 июня 2011

У меня есть сгенерированный файл структуры c ++, который содержит соответствующую структуру в двоичном виде:

struct userinfo
{
   char username[200];
   char Password[200];
   char Genkey[200];
   long UniqueKey;
};

Как я могу прочитать этот файл в коде Excel VBA?

1 Ответ

2 голосов
/ 26 июня 2011

Это должно вас где-то получить:

Option Explicit

Type userinfo
    username As String * 200
    Password As String * 200
    Genkey As String * 200
    UniqueKey As Long
End Type

Sub readbin()
    Dim rec As userinfo
    Dim intFileNum As Integer
    intFileNum = FreeFile
    Open "C:\Temp\my.bin" For Binary Access Read As intFileNum
    Do While Not EOF(intFileNum)
        Get intFileNum, , rec
        Debug.Print "->", rec.UniqueKey, rec.username
        Debug.Print , rec.Password
        Debug.Print , rec.Genkey
    Loop
    Close intFileNum
End Sub

Дополнительные примечания: заполнение C ++ не стандартизировано и является проблемой при взаимодействии с другими языками.Лучший способ справиться с заполнением C ++ - это удалить его, чтобы он стал независимым от языка.Это может быть сделано путем переопределения C ++ на :

#pragma pack (push, 1)
struct userinfo
{
   char username[200];
   char Password[200];
   char Genkey[200];
   long UniqueKey;
};
#pragma pack (pop)

Хотя, если вы не можете изменить исходную программу, вам, возможно, придется поискать другие варианты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...