0

Delphi XE3 を使用して、サードパーティの動的ライブラリ (.dylib) を使用する MAC OS X 用のアプリケーションを開発しています。

ターゲット ライブラリには、Delphi に変換しようとしている Objective C ヘッダー ファイルがあります。ほとんどすべて問題ありませんが、@property 宣言のみを含むインターフェイスが 1 つあります。

@interface ProductInitParams : NSObject
{
  NSString* ProductKey;
  NSString* ProductVendor;
  NSString* ProductName;
  NSString* ProductPackage;    
}
@property (nonatomic, retain) NSString* ProductKey;
@property (nonatomic, retain) NSString* ProductVendor;
@property (nonatomic, retain) NSString* ProductName;
@property (nonatomic, retain) NSString* ProductPackage;
@end

私はこのようなものを書いてみました:

ProductInitParams = interface(NSObject)['{149A7187-D3E1-4713-B2D1-6EA1801F4A7D}']
    property ProductKey: NSString read ? write ?;
    property ProductVendor: NSString read ? write ?;
    property ProductName: NSString read ? write ?;
    property ProductPackage: NSString read ? write ?;
end;

しかし、読み取り\書き込みのために何を書くべきかわかりません。

誰もこれを行う方法を知っていますか?

PS 私は Macapi.* 単位で調べました - プロパティのマーシャリングについては何もありません。

アップデート

@property に関するAppleのドキュメントを読んだ後、この解決策を思いつきました。

ProductInitParams = interface(NSObject)['{149A7187-D3E1-4713-B2D1-6EA1801F4A7D}']
    procedure setProductKey(value: NSString); cdecl;
    procedure setProductVendor(value: NSString); cdecl;
    procedure setProductName(value: NSString); cdecl;
    procedure setProductPackage(value: NSString); cdecl;

    function ProductKey: NSString; cdecl;
    function ProductVendor: NSString; cdecl;
    function ProductName: NSString; cdecl;
    function ProductPackage: NSString; cdecl;

    property ProductKey_: NSString read ProductKey write setProductKey;
    property ProductVendor_: NSString read ProductVendor write setProductVendor;
    property ProductName_: NSString read ProductName write setProductName;
    property ProductPackage_: NSString read ProductPackage write setProductPackage;
end;

それが正しい解決策かどうかはわかりませんが、うまくいきます。

このソリューションを使用する際に起こりうる問題についてコメントがある場合は、投稿してください。

4

1 に答える 1