2015/09/07

OLEオートメーション接続 VB→Delphi書き換えで、メンバが見つかりません

OLEオートメーションサーバへ接続するアプリケーションを VBからDelphiに書き換えていた時に「メンバが見つかりません」が頻発

Sub Hogehoge()
    Dim SV As Object
    Dim S As String

    Set SV = CreateObject("Hoge.hoge")
    Set S = SV.GetStr("key")
    Set SV = Nothing
End Sub

procedure Hogehoge()
var SV: OleVariant;
    S: String;
begin
    SV := CreateOleObject('Hoge.hoge');
    S := SV.GetStr('key'); // GetStr がプロパティの場合 SV.GetStr['key']; 
    SV := Unassign;
end;

Delphi ではメソッドの引数は( )、プロパティの引数は [ ]
VBでは、メソッドの引数もプロパティの引数も ( )
なので、該当メンバがプロパティの場合 [ ] に変更しなくてはならない
また、引数なしのプロパティに () をつけても同様の結果に

資料がない場合、どちらかの環境でタイプライブラリを取り込んで、定義を確認すると明確になる



0 件のコメント: