파일을 바이너리형태로 읽어서
버퍼에 저장하는 C 함수를 델파이로
포팅하려고 하는데 잘 안되네요...
파일을 바이너리 모드로 읽어서 m_pBuff 라는 버퍼에 저장하면 됩니다.
Int read(char *fn){
File *f ;
char *m_pBuff ;
int i,j ;
f = fopen(fn, "rb");
m_pBuff = new char[m_nBufSize];
i = 0;
while (i < m_nBufSize)
{
j = fread(m_pBuff + i, 1, 1024, f);
if (j <= 0)
{
return -2;
}
i += j;
}
fclose(f);
}
FileOpen, FileSeek, FileRead, FileClose 함수 이용하세요
다음과 같이 되겠군요.
function read(const fn : string) : integer;
var
f : Integer;
m_pBuff : array [0..1024 * 1024 - 1] char; // => 크기는 나름대로(1M 이하)
fSize : integer;
begin
ZeroMemory(@m_pBuff, sizeof(m_pBuff ));
f := FileOpen(FnfmOpenRead);
if f = -1 then
begin
Result := -1;
Exit;
end;
fSize := FileSeek(f, 0, 2); // 파일 마지막
FileSeek(f, 0, 0); // 처음으로 되돌림
FileRead(f, m_pBuff, fSize);
FileClose(f);
Result := fSize;
end;