No.1ベストアンサー
- 回答日時:
>DLL化する関数の中でグローバル変数を使っているのですが、
>DLLの関数の中でもグローバル変数を使えますか?
DLL内ではグローバル変数は使えません。
DLLは、リエントラント(スレッドセーフ)にすべきです。
>やっぱり、引数として渡すしかないでしょうか?
そうなるでしょうけど、不正な引数を渡された時にエラーで弾く仕組みが必要だと思います。
例えば、構造体のポインタを渡す方式にして、構造体の先頭のメンバーに「構造体のサイズ」を予めセットしておかないと呼び出し時にエラーにする、など。
こうすると、バージョンアップで「構造体メンバーが増えた時」に、先頭のメンバーに入っている「構造体のサイズ」をDLL側で検査する事で「旧方式で呼び出した」か「新方式で呼び出した」かを判定して処理を振り分けできます。
この回答への補足
回答ありがとうございます。
DLLについて調べていて、わかったんですが、PChar型またはShortString型以外のデータをやり取りできるのはDLLとDLLを使うプログラムの両方をDelphiで作った場合だけなんですか?
これ以外のデータをやり取りする場合(文字配列、TStringListのデータ等)は、構造体のポインタを渡し、構造体のポインタを受け取るようにするしかないのですか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) pythonのグローバル変数 2 2022/11/25 18:02
- FTTH・光回線 グローバルIPアドレスの変更について 1 2022/04/23 05:32
- C言語・C++・C# 競技プログラミングに関する質問です。 3 2022/04/03 19:51
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 malloc関数を使ってください!お願いします! 最 1 2022/07/21 09:28
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分 1 2022/07/19 17:03
- Visual Basic(VBA) Excel のユーザー定義関数でソルバーが動作しない 1 2022/09/05 19:51
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- Ruby 初心者プログラミング 3 2022/10/12 11:31
- Wi-Fi・無線LAN ネットワークに関する質問です。現在、有線ルーターと無線ルーターを使用しております。 4 2023/07/13 23:04
- C言語・C++・C# 至急お願いします。プログラミングの問題です。 最初に正の整数nの入力を受け付け、次に分数の分子と分母 3 2022/07/19 17:09
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
String""から型'Double'への変...
-
エクセルVBA 「On Error GoTo...
-
VBAでfunctionを利用しようとし...
-
お助けください!VBAのファイル...
-
On ErrorでエラーNoが0
-
実行時エラー'-2147467259(8000...
-
ACCESSで値を代入できないとは?
-
データベース操作時エラーについて
-
実行したSQLの結果を返す方法
-
オブジェクト型の変数にフォー...
-
【VBA】ワークブックを開く時に...
-
【VBAエラー】Nextに対するFor...
-
実行時エラー 438 の解決策をお...
-
VB.net 重複チェックがしたいです
-
「実行時エラー '3167' レコー...
-
マクロで"#N/A"のエラー行を削...
-
Excel実行時エラー[80004005]に...
-
UBoundに配列がありませんとエ...
-
エラー処理
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
UserForm1.Showでエラーになり...
-
String""から型'Double'への変...
-
On ErrorでエラーNoが0
-
VBAでfunctionを利用しようとし...
-
マクロで"#N/A"のエラー行を削...
-
VBA データ(特定値)のある最...
-
実行時エラー 438 の解決策をお...
-
お助けください!VBAのファイル...
-
文字列内で括弧を使うには
-
エクセルVBA 「On Error GoTo...
-
【VBA】ワークブックを開く時に...
-
マクロの「SaveAs」でエラーが...
-
ACCESSで値を代入できないとは?
-
実行時エラー'-2147467259(8000...
-
インポート時のエラー「データ...
-
【VB.NET】 パワポ操作を非表示で
-
Filter関数を用いた結果、何も...
-
UBoundに配列がありませんとエ...
-
Excel vbaについての質問
-
メールの件名のセットでエラー...
おすすめ情報