名前 題名 ▼ 福士さん > Delphiでの呼出規約についてはオンラインヘルプの > 呼び出し規約 (手続きと関数(Delphi) - RAD Studio) > http://docwiki.embarcadero.com/RADStudio/XE7/ja/%E6%89%8B%E7%B6%9A%E3%81%8D%E3%81%A8%E9%96%A2%E6%95%B0#.E5.91.BC.E3.81.B3.E5.87.BA.E3.81.97.E8.A6.8F.E7.B4.84 > が詳しいです。DLLではフツーstdcallだろ、というMr.XRAYさんのご指摘はごもっともでしたので、MLのほうは補足させていただきました。 > > Win32APIで文字列の取得などを行う関数としては例えば > > GetComputerName 関数 > http://msdn.microsoft.com/ja-jp/library/cc429732.aspx > GetComputerName function (Windows) > http://msdn.microsoft.com/ja-jp/library/windows/desktop/ms724295.aspx > > のように、最大長が予め決まっており、バッファサイズを渡してNUL終端文字列が返されるパターンと、 > > ExpandEnvironmentStrings 関数 > http://msdn.microsoft.com/ja-jp/library/cc429716.aspx > ExpandEnvironmentStrings function (Windows) > http://msdn.microsoft.com/ja-jp/library/windows/desktop/ms724265.aspx > > のようにバッファサイズを取得できるので1回バッファをNULL(nil)で呼び出し、必要なサイズにバッファをSetLengthで確保してから > 2回目を呼び出し、その後で実際に設定されたサイズでSetLengthし直す、というパターンの2種類があります(他にもShellAPI系のように > メモリ確保を呼び出し先で行い、破棄を呼び出し元で行うようなものもありますが)。 > > 前者はNUL終端文字列を前提としており、Win16以来の比較的古いやり方、後者は比較的新しいやり方、ということになりますね。 > > Mr.XRAYさんには常識的なことだとは思いますが、まぁ補足(蛇足?)ということで。 GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link