-
2011. 4. 21. 14:49 Tutorials/IDE]Delphi 7.2
폼을 아래와 같이 작성합니다.
전역변수 지정 TFileStream 배열을 만들어두고 대상 파일에 다중 엑세스 할 수 있습니다.
전역변수 지정 TFileStream 배열을 만들어두고 대상 파일에 다중 엑세스 할 수 있습니다.
var
Form1: TForm1;
index: Cardinal;
fm: array [0..1] of TFileStream;
implementation
버튼 이벤트 영역
Form1: TForm1;
index: Cardinal;
fm: array [0..1] of TFileStream;
implementation
버튼 이벤트 영역
procedure
TForm1.SpeedButton1Click(Sender: TObject);begin
if FileExists('test.txt') = False then
if not Assigned(fm[0]) then begin//파일이 존재하지 않으면 생성
fm[0]:=TFileStream.Create('test.txt',fmCreate);
fm[0].Free;
end;
if not Assigned(fm[0]) then//파일 공유 열기 #1
fm[0]:=TFileStream.Create('test.txt', fmOpenReadWrite or fmShareDenyNone);
if not Assigned(fm[1]) then//파일 공유 열기 #2
fm[1]:=TFileStream.Create('test.txt', fmOpenReadWrite or fmShareDenyNone);
end;
procedure TForm1.SpeedButton2Click(Sender: TObject);begin
if Assigned(fm[0]) then
fm[0].Free;//파일 닫기 #1
fm[0] := nil;
if Assigned(fm[1]) then
fm[1].Free;//파일 닫기 #2
fm[1] := nil;
index := 0;//쓰기 횟수 초기화
end;
procedure TForm1.SpeedButton3Click(Sender: TObject);
var data: String;
begin //젓번째 파일 스트림 으로 기록
data := '#1 파일 기록';//문자열 포인터 0 번지는 길이값이 들어갑니다.
if Assigned(fm[0]) then begin
fm[0].Position := 0; //기록시에 포지션 자동 증감
fm[0].Write(data[1],Length(data));//1번지부터 문자열값
end;
end;
procedure TForm1.SpeedButton4Click(Sender: TObject);
var data: String;
begin //두번째 파일 스트림 으로 기록
data := '#2 '+IntToHex(index,8)+' | ';//문자열 포인터 0 번지는 길이값이 들어갑니다.
Inc(index);
if Assigned(fm[1]) then begin
fm[1].Write(data[1],Length(data));//1번지부터 문자열값
end;
end;
if FileExists('test.txt') = False then
if not Assigned(fm[0]) then begin//파일이 존재하지 않으면 생성
fm[0]:=TFileStream.Create('test.txt',fmCreate);
fm[0].Free;
end;
if not Assigned(fm[0]) then//파일 공유 열기 #1
fm[0]:=TFileStream.Create('test.txt', fmOpenReadWrite or fmShareDenyNone);
if not Assigned(fm[1]) then//파일 공유 열기 #2
fm[1]:=TFileStream.Create('test.txt', fmOpenReadWrite or fmShareDenyNone);
end;
procedure TForm1.SpeedButton2Click(Sender: TObject);begin
if Assigned(fm[0]) then
fm[0].Free;//파일 닫기 #1
fm[0] := nil;
if Assigned(fm[1]) then
fm[1].Free;//파일 닫기 #2
fm[1] := nil;
index := 0;//쓰기 횟수 초기화
end;
procedure TForm1.SpeedButton3Click(Sender: TObject);
var data: String;
begin //젓번째 파일 스트림 으로 기록
data := '#1 파일 기록';//문자열 포인터 0 번지는 길이값이 들어갑니다.
if Assigned(fm[0]) then begin
fm[0].Position := 0; //기록시에 포지션 자동 증감
fm[0].Write(data[1],Length(data));//1번지부터 문자열값
end;
end;
procedure TForm1.SpeedButton4Click(Sender: TObject);
var data: String;
begin //두번째 파일 스트림 으로 기록
data := '#2 '+IntToHex(index,8)+' | ';//문자열 포인터 0 번지는 길이값이 들어갑니다.
Inc(index);
if Assigned(fm[1]) then begin
fm[1].Write(data[1],Length(data));//1번지부터 문자열값
end;
end;