Q&A

  • TFileStream.Write 가 될때도 있고, 안될때도 있습니다.
아래에 적힌 코드를 사용해서 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-->
0  COMMENTS