私は、Delphiで書かれたEXEから情報を受け取ろうとしています。 EXEは、私にそのデータ構造の一つへのポインタを渡します。Visual StudioのDelphi WideString MFC
Type
RecordType = Record
St: WideString;
Next: Pointer;
End;
Var
DataRec: ^RecordType;
だから、Visual StudioのMFCに私は類似しているはずのデータ型を宣言した:
struct RecordRec
{
BSTR St;
void *Next;
};
RecordRec *DataRec;
デルファイヘルプWideStringのことを言いますただし、BSTRと互換性がありますが、これは機能しません。私は、デバッグモードで自分の聖を見てみると、それは
"0x0000000000000000 <Bad Ptr> wchar_t *"
を言う私は、Visual StudioのMFCでWideStringに相当を宣言するのか分かりません。
それは私が宣言しShortStringはだった場合:
struct RecordRec
{
BYTE StLen;
char St[255];
void *Next;
};
が、これはWideStringに動作しないと私は本当に私は〜2^30(1,073,741,824)文字での変数を宣言するべきだと思いませんそれ。
私には何が欠けていますか?私は本当に誰かが助けることを願っています。
ポインタ....そのアドレス空間において?どのような方法でポインタを送信するのですか? – MBo
非常に複雑です。最初に、Windowsサービスがあります。 Windowsが起動すると、サービスが自動的に起動して実行されます。 Delphi EXEが実行されると、サービスの一部であるDLL内の関数が呼び出され、サービスにそのデータへのポインタが渡されます。 Visual StudioのMFCプログラムは、サービスの関数を呼び出してポインタのコピーを取得します。しかし、それは私が悪いPtrを参照している私のMFCプログラムになるとき。これは、ShortStringが使用されたときに動作するために使用されていましたが、物事がWideStringに更新され、MFCの同等の宣言がどのようなものか分かりません。 – Gary
質問本体にすべての詳細を追加します。彼らは非常に重要です。 DLLとの間でWideString型を渡すことは正しいアプローチですが、すべての状況を記述する – MBo