2つのDelphi7プログラムがあります。COMオートメーションサーバー(EXE)と、オートメーションサーバーを使用している他のプログラムです。
1つのプログラムから別のプログラムにバイトの配列を渡す必要があります。
いくつか検索した後、バリアント配列を使用するのがよい方法であることがわかりました(より良い方法を知っている場合は訂正してください)。
私の質問は、どのようにして1つのプログラムでバリアント配列を作成し、次に他のプログラムでその値を読み取るのですか?
VarArrayCreateとVarArrayLowBound/VarArrayHighBoundについては知っていますが、これを適切に行う方法がわかりません。
ありがとう!
あなたはそれをそのように作成します:
最初の宣言
var
VarArray: Variant;
Value: Variant;
次に作成:
VarArray := VarArrayCreate([0, Length - 1], varVariant);
またはあなたも持つことができます
VarArray := VarArrayCreate([0, Length - 1], varInteger);
データのタイプによって異なります。次に、次のように繰り返します。
i := VarArrayLowBound(VarArray, 1);
HighBound := VarArrayHighBound(VarArray, 1);
while i <= HighBound do
begin
Value := VarArray[i];
... do something ...
Inc(i);
end;
最後に、不要になった配列をクリアします。編集:(これはオプションです、 を参照してください)Delphi 2009では、バリアント配列を解放する必要がありますか? )
VarClear(VarArray);
これですべてです。別の例については、公式 Embracadero Help をご覧ください
編集:
配列は一度だけ作成する必要があります。次に、上の例のように使用します。
反対側の場合:
(ValueがVariantパラメーターであり、要素タイプがWideStringであると想定)
var
Source: PWideStringArray;
if VarIsArray(Value) then begin
Source:= VarArrayLock(Value);
try
for i:= 0 to TVarData(Value).VArray^.Bounds[0].ElementCount - 1 do
DoWhatEverYouWantWith(Source^[i]);
end;
finally
VarArrayUnlock(Value);
end;
end;