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