お世話様です。
DelphiでDLLを作成し、そのDLLをDelphi、VCで作成したアプリで使用しようとしています。
どうにかこうにか関数は呼び出せたのですが、DLL内で宣言した列挙型をアプリの方で使用したいのですが、そのような事はできないのでしょうか?
DLL内で宣言
type
Ttest = (a1, a2, a3);
これを、このDLLを使用するDelphi、VCのアプリから参照したいのですが・・。
Ordで並べられるのだから、可能だとは思いますが、あまり現実的ではないと思います。
コードの書き方ひとつで、値の数値が変化してしまいますから。
いくつか定数を用意して、それを使う(コードエディタでリストアップされないのがいやならば、列挙型→定数の関数を作ればいいわけで)のがいいと思います。
たとえば、APIのSHGetSpecialFolderLocationのなら、以下のような感じですね。
TCSIDLList = (
csidlPrograms , // プログラムフォルダ
csidlPersonal , // マイドキュメント
csidlFavorites, // お気に入り
csidlStartUp , // スタートアップ
csidlRecent , // 最近使ったファイル
csidlSendTo , // 送る
csidlStartMenu, // スタートメニュー
csidlDeskTop , // デスクトップフォルダ
csidlTemplates, // テンプレート
csidlAppData // Application Data
);
CSIDLList : array[TCSIDLList] of Cardinal = (
CSIDL_PROGRAMS,
CSIDL_PERSONAL,
CSIDL_FAVORITES,
CSIDL_STARTUP,
CSIDL_RECENT,
CSIDL_SENDTO,
CSIDL_STARTMENU,
CSIDL_DESKTOPDIRECTORY,
CSIDL_TEMPLATES,
CSIDL_APPDATA
);
// 定数を得るには、以下のようにすればよいです。
Result := CSIDLList[CSIDL];
上のコードは、わたしの公開している、stdFilesユニットからの抜出です。
おんぷむらのうらに掲載しているので、よければお持ちください。
たかみちえ様。どうもありがとうございます。
なるほど、関数にするわけですか。
stdFilesユニットを拝見させていただきます。
うっかり・・・^^;
ツイート | ![]() |