呼び出し特定のWin32APIからデん例外を飛びない"asmポッ---"?
質問
私が使っているデるドゥ/リドゥなどの追加のためのExcelを作って電話 Excel4v 機能xlcall32.dll.しかし、私は推測もDelphiの専門家がここにいる特定のAPIとを願っていることに問題が見られるその他のApiです。
C、具体的には、xlcall.hファイルに付属する Microsoft Excel2007年ドゥ/リドゥなどのSDK,Excel4vのように定義されている。
int pascal Excel4v(int xlfn, LPXLOPER operRes, int count, LPXLOPER opers[]);
ントを使用してい:
function Excel4v(xlfn: Integer; operRes: LPXLOPER; count: Integer;
opers: array of LPXLOPER): Integer; stdcall; external 'xlcall32.dll';
LPXLOPERはポインタで、struct(C)又は記録(イン).
れをやってきたということで宿題を宣言のC機能デこの優れた第 たのを受けることができるように思いを宣言するExcel4vいます。しかし、声デコード機能する原因の例外("アクセス違反..."で見る) ない限り その後、インストール:
asm pop sink; end;
が"シンク"はどこかで定義されるまでブロックします。
私はこんな組...ながいあり方を考えてみを固定する特例"asmポップシンク;は、".が"asmポップシンク;end;"は実際の例外をスローしました。私は、初めて見たときに使用 この記事を作XLLs用デ.ここに最も関連のある見積もり:
"からデに大きなネックに とドイン(add-ins)は、エキストラのパラメータ 返却後に住所のスタックです。これは無料との呼び出しのたびに クリックします。いるのか、ここで すると、もって定められているので注意が必要です かごに追加します。追加 の線asmポップ変数は、後 毎通話が可変できます。 グローバル地域またはオブジェクト変数 少なくとも4バイト長の整数であ ます。繰り返し-こに含めなければならな 毎Excel4vます。その他 きの構築時に原爆."
基本的には いたいかのようなことが現実に起こっているが、なぜ.何が起こWin32機能を返すために、"追加パラメータを返却後に住所のスタック"となることであるとは何を意味するのか。
があれもこの問題を修正するには、例えば異なるコンパイラオプションにつながることの宣言に機能しているのでしょうか。
とがあるリスクの高い話"asmポップシンク;は、"後の呼び出しのたびにExcel4v...?そう事ですが、なにか教えてもらえませんか何が行われているのかが理解で感じちょっと危ない...
解決
するとは思えないのパスカルvs stdcall-も同様の呼び出し規約とならないようにすべきである、一致しないスタック機能終了します。
からの参照 第,
ことも 構文ではないものと同じ 上記の配列で定義で設定します。配列の パラメータの開配列パラメータ。そのように見える配列、な いを受ける配列で取得し 学習モード】をリリース隠れた)パラメータを持つ 最高のコンディションインデックスで配列の 高値)となります。このはみな Delphi、CやC++ん 実際問題です。(私 第オープンアレイ)を 実数のパラメータな ます。
いただけます(ストレートに高い配列インデックスの"パラメータに渡される機能です。このintとしての洗浄時には、関数が終了できない風と壊れたスタックンダリングする能力があります。第示を配われます。
のようなもの:
type
PLPXLOPER = ^LPXLOPER;
パPLPXLOPERとしての最後のパラメータとします。