DLL内でのI/Oエラーを解決するためには?


mini-star  2005-05-07 19:48:26  No: 14663

あるEXEからdllを呼び出し
そのdllからテキストファイルに書き出したいのですが
EInOutError  I/Oエラー(103)となり書き出すことができません。
こちらの掲示板のFAQで同じような書き込みを見つけ
調べてみたのですが解決には至りませんでした。
dllの中からではファイルを操作する事はできないのでしょうか?
以下がdll内に書いた関数です
    function addtmm(dllname:string;funcname:string;addname:string):string;
    var
        f:textfile;
    begin
        assignfile(f,'c:\addtmm.txt');  ←  仮にこう置きます  
        addname := addname + ',';
        write(f,addname);  ←  ここでEInOutError  I/Oエラー(103)
        closefile(f);
        result := '1'
    end;
    exports
        addtmm;


kkk  2005-05-07 23:44:08  No: 14664

DLL内でなくてもエラーになりませんか?
AssignFileの後に書き込むには Rewrite(F) が必要です。
追記する場合は Append(F)となります。


kkk  2005-05-08 00:06:53  No: 14665

それと stringの使用について

{ DLL でのメモリ管理について:
もしこの DLL が引数や返り値として String 型を使う関数/手続きを
エクスポートする場合、以下の USES 節とこの DLL を使うプロジェクトソースの
USES 節の両方に、最初に現れるユニットとして ShareMem を指定しなけれ
ばなりません。
これは構造体やクラスに埋め込まれている場合も含め String 型を DLL
とやり取りする場合に必ず必要となります。
ShareMem は共用メモリマネージャである DELPHIMM.DLL とのインターフェース
です。あなたの DLL と一緒に配布する必要があります。
DELPHIMM.DLL を使うのを避けるには、PChar または ShortString 型を
使って文字列のやり取りをおこなってください。}


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

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






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