var
SData : string;
i, nLength : integer;
DumpFile : array of TFileStream;
....
for i := 0 to 10 do begin
if not FileExists('c:Test' + inttostr(j) +'.Dat') then begin
DumpFile[i] := TFileStream.create('c:Test' + inttostr(j) +'.Dat', fmCreate);
DumpFile[i].Free;
end;
DumpFile[i] := TFileStream.Create('c:Test' + inttostr(j) +'.Dat', fmOpenWrite or fmShareDenyNone);
sData := 'Testtesttest'+ #13#10;;
nLength := length(sData);
DumpFile[i].Seek(0, soFromEnd);
DumpFile[i].Write(sData[1] , nLength);
inc(i);
DumpFile[i].Free;
DumpFile[i] := nil;
위와 같이 하고 실행을 하면 Access violation address 00442C12 in module 'xxx.exe'라고 나오네요....
배열로 하지 않고 했을 경우는 에러가 안나는데 왜 배열로 잡으면 에러가 나는지 알려주세요...
답변 기다리겠습니다.
DumpFile: array[0..10] of TFileStream; 같이 미리 배열의 크기를 설정하시거나 SetLength로 나중에 설정하시거나 하면 됩니다. 지금은 당연히 메모리 할당이 안된상태니까 DumpFile[i]로 접근하면 Access violation 에러가 나겠지요..