DLL内で列挙型を宣言した場合の使用方法?

解決


まろ  2003-11-29 01:58:32  No: 5824

お世話様です。
DelphiでDLLを作成し、そのDLLをDelphi、VCで作成したアプリで使用しようとしています。
どうにかこうにか関数は呼び出せたのですが、DLL内で宣言した列挙型をアプリの方で使用したいのですが、そのような事はできないのでしょうか?

DLL内で宣言
type
 Ttest = (a1, a2, a3);

これを、このDLLを使用するDelphi、VCのアプリから参照したいのですが・・。


たかみちえ  URL  2003-11-29 03:59:03  No: 5825

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ユニットからの抜出です。
おんぷむらのうらに掲載しているので、よければお持ちください。


まろ  2003-11-30 21:52:12  No: 5826

たかみちえ様。どうもありがとうございます。
なるほど、関数にするわけですか。
stdFilesユニットを拝見させていただきます。


まろ  2003-12-02 10:36:13  No: 5827

うっかり・・・^^;


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加