델파이 5 헬프에 있는 셈플인데.. 실행이 안되네요.
// 주석문이 쳐져있는 부분입니다.
읽어들이 화일보다 큰 배열로 잡아 읽어들이면. 되는데..
Buffer를 PChar로 잡고 윈도우 함수 AllocMem 을 써니. 안 안 안 돼요.
이유를 알고 싶습니다.
procedure TForm1.Button1Click(Sender: TObject);
var
iFileHandle: Integer;
iFileLength: Integer;
iBytesRead: Integer;
// Buffer : PChar;
// Buffer: Array[0..100000] of Char;
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; // end for
finally
// FreeMem(Buffer);
end; // end try finally
end; // end if
end; // end procedure
^^ 후후
Buf를 pChar로 선언하고 AllocMem() 하든지,
Buf를 array [..] of char 로 하든지 둘중의 하나만 하셔야져..^^
Buf를 두번 선언해서 에라가 나는 겁니다.. ^^
즐푸..^_____________^
왕초보 타락천사.
영이 wrote:
> 델파이 5 헬프에 있는 셈플인데.. 실행이 안되네요.
> // 주석문이 쳐져있는 부분입니다.
> 읽어들이 화일보다 큰 배열로 잡아 읽어들이면. 되는데..
> Buffer를 PChar로 잡고 윈도우 함수 AllocMem 을 써니. 안 안 안 돼요.
> 이유를 알고 싶습니다.
>
> procedure TForm1.Button1Click(Sender: TObject);
> var
> iFileHandle: Integer;
> iFileLength: Integer;
> iBytesRead: Integer;
> // Buffer : PChar;
> // Buffer: Array[0..100000] of Char;
> 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; // end for
> finally
> // FreeMem(Buffer);
> end; // end try finally
> end; // end if
> end; // end procedure