APIで 直接ファイルを読書する方法判りました
それぞれ一挙に文字列に受け取ります。
function readFileStr(fname:string):string;
var hin:THandle;
var rsize:DWORD;
begin
result:='';
hin:=CreateFile(PChar(fname),GENERIC_READ,0,nil,OPEN_EXISTING
,FILE_ATTRIBUTE_NORMAL,0);
if hin<>0 then try
SetLength(Result, GetFileSize(hin, nil));
ReadFile(hin,PChar(Result)^,Length(Result),rsize , nil);
finally CloseHandle(hin);
end
end;
function writeFileStr(fname,data:string):boolean;
var hout:THandle;
var wsize:DWORD;
begin
result:=false;
hout:=CreateFile(PChar(fname),GENERIC_WRITE,0,nil,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0);
if hout<>0 then try
if WriteFile(hout,PChar(data)^,Length(data),wsize,nil) then
result:=wsize=Length(data);
finally CloseHandle(hout);
end
end;
これで目標の20Kbyte付近のアプリが出来ました。
驚いた事に systemとwindowsだけの場合 Delphi6の方がサイズが小さくなりました