아래에 적힌 코드를 사용해서 T_OrignDocInfo와 그에 연달아 반복해 붙은 T_PageInfo형 메모리를
HDD에 그대로 저장하려고 합니다. (두 형식은 C DLL과 붙기 때문에 사이즈가 고정입니다.)
IndexDir이 정상 디렉토리를 가지고 있어서, index.acn파일을 지우면
0 byte의 index.acn이 생기기도 합니다.
그러나 경우에 따라서 write가 되는 경우도 있고, write가 안 되기도 합니다.
(경로에는 문제없습니다.)
특징적인것은 저장것의 용량은 22KB이고, 저장 안되는것의 용량은 108KB입니다.
이전에 테스트하면서 실수로 100메가 넘게 저장되는것도 봤는데 왜 이런지 모르겠습니다.
어떻게 해야 할런지요?
<!--CodeS-->
try
aFS := TFileStream.Create(IndexDir + '\Index.acn', fmCreate);
aFS.Seek(0, soFromBeginning);
except
on EX:exception do begin
Module_Global.WriteLogLocal(CONST_LOGTYPE_ERROR, 'Module_Global.SaveIndexFile', '인덱스 파일을 Open할 수 없습니다.');
result := -2;
Exit;
end;
end;
end;
SaveSize := Sizeof(T_OrignDocInfo) + (Sizeof(T_PageInfo) * pOrignDocInfo.pagecount);
ReturnInfo := aFS.Write( Pointer(pOrignDocInfo), SaveSize);
if ReturnInfo <> SaveSize then begin
aFS.Free;
Module_Global.WriteLogLocal(CONST_LOGTYPE_ERROR, 'Module_Global.SaveIndexFile', '인덱스 파일을 저장할 수 없습니다. : ' + IntToStr(ReturnInfo));
result := -3;
Exit;
end;
aFS.Free;
<!--CodeE-->