안녕 하세요 ?
파일을 읽어 동적배열이나 동적메모리할당을 하다가
알수없는 에러가 자꾸나 문의 드립니다.
환경은 한글Win2000pro D6에 Update2이고
예제는 델파이 헬프에 있는 예제를 그대로 썼습니다.
하지만 알수없는 에러가 발생합니다.
델파이 헬프에 있는 예제는 다음과 같습니다.
procedure TForm1.Button1Click(Sender: TObject);
var
iFileHandle: Integer;
iFileLength: Integer;
iBytesRead: Integer;
Buffer: PChar;
i: Integer
begin
if OpenDialog1.Execute then
begin
try
iFileHandle := FileOpen(OpenDialog1.FileName, fmOpenRead);
iFileLength := FileSeek(iFileHandle,0,2);
FileSeek(iFileHandle,0,0);
Buffer := PChar(AllocMem(iFileLength + 1));
iBytesRead := FileRead(iFileHandle, Buffer, iFileLength);
FileClose(iFileHandle);
for i := 0 to iBytesRead-1 do
begin
StringGrid1.RowCount := StringGrid1.RowCount + 1;
StringGrid1.Cells[1,i+1] := Buffer[i];
StringGrid1.Cells[2,i+1] := IntToStr(Integer(Buffer[i]));
end;
finally
FreeMem(Buffer);
end;
end;
end;
이걸 IDE환경에서 실행시키면 스트링그리드쪽에서 에러~
실행파일을 만들어 윈도우상에서 실행시키면 파일을 읽은후 바로
폼이 닫힙니다.
아마도 메모리 할당에서 문제가 생기는것 같기도 합니다.
제가 봤을땐 아무 이상이 없어 보이는데 미치겠습니다.
혹시 다른분이 D5나 D6를 가지고 계신분은 한번 테스트해 봐주세요
파일읽는 부분이 좀 잘못됬네요...
아래와 같이 고치세요...
iBytesRead := FileRead(iFileHandle, Buffer^, iFileLength);
^^ 항상 즐코하세요...