Professional Documents
Culture Documents
HiÖn nay trªn thÕ giíi C«ng NghÖ Th«ng Tin ®ang
ph¸t triÓn víi tèc ®é rÊt nhanh. C¸c øng dông cña nã ®·
th©m nhËp vµo hÇu hÕt c¸c lÜnh vùc Khoa Häc KÜ ThuËt
còng nh X· Héi. §èi víi nh÷ng níc ®ang ph¸t triÓn nh níc
ta cÇn ph¶i cã mét chÝnh s¸ch khuyÕn khÝch vµ ®Çu t
thÝch ®¸ng nÕu nh kh«ng muèn trë nªn tôt hËu. Chóng ta
®ang cã mét m¹ng líi th«ng tin ®îc coi lµ hiÖn ®¹i trªn
thÕ giíi nhng kh«ng ai trong chóng ta ch¾c ch¾n r»ng
trong mét vµi n¨m tíi nã sÏ kh«ng trë thµnh l¹c hËu, v× cã
thÓ thÊy c«ng nghÖ m¸y tÝnh c¶ phÇn cøng lÉn phÇn
mÒm ®ang thay ®æi tõng phót.
1. T×m kiÕm
procedure TimKiem(x:LongInt;var f:File;var
Vitri:Integer;var Ok:Boolean);
var q:BanGhi;
cantren,canduoi,t,j:Integer;
begin
Ok:=False;
Vitri:=0;
cantren:=FileSize(f);
canduoi:=0;
Repeat
Seek(f,(cantren+canduoi) div 2);
BlockRead(f,q,1,t);
IF t<>0 then
begin
IF q.sodt<x then
canduoi:=(cantren+canduoi) div 2
else IF q.sodt >x then
cantren:=(cantren+canduoi) div 2
else begin
Ok:=True;
break;
end;
end;
Until Ok or (cantren-canduoi < 100 );
IF not Ok then
begin
Seek(f,canduoi);
BlockRead(f,Buf,100,t);
For j:=0 to t do
IF Buf[j].sodt=x then
begin
Ok:=true;
Vitri:=canduoi+j;
Break;
end
else IF Buf[j].sodt>x then
begin
Vitri:=canduoi+j;
Break;
end
else Vitri:=cantren;
end;
end;
2. Xen
Procedure InsertRecord(var f:File;p:BanGhi;var
Ok:Boolean);
var Vitri,Nho1,Nho2,t,j,k:Integer;
begin
Assign(f,FileName);
Reset(f,SizeOf(bg));
TimKiem(p.sodt,f,Vitri,Ok);
IF not Ok then
begin
Seek(f,vitri);
BlockRead(f,Buf,1,t);
Seek(f,vitri);
BlockWrite(f,p,1);
Nho1:=Vitri+1;
Nho2:=Vitri+1;
Repeat
Seek(f,nho1);
BlockRead(f,Bufv,100,k);
Nho1:=Filepos(f);
Seek(f,nho2);
BlockWrite(f,Buf,t,j);
Nho2:=Filepos(f);
Buf:=Bufv;
t:=k;
Until (j=0);
Ok:=True;
end
else
begin
Mgs(40,2,70,4,' Nhap trung so ');
Ok:=False;
end;
Close(f);
end;
3. So¸
Procedure DelRecord(var f:File;x:LongInt;var Ok:Boolean);
var nho1,nho2,k,j,vitri:Integer;
Buf:BufferType;{}
begin
Assign(f,FileName);
Reset(f,SizeOf(bg));
TimKiem(x,f,vitri,Ok);
IF Ok then
begin
nho1:=vitri+1;
nho2:=vitri;
Repeat
Seek(f,nho1);
BlockRead(f,Buf,100,k);
nho1:=Filepos(f);
Seek(f,nho2);
BlockWrite(f,Buf,k,j);
nho2:=FilePos(f);
Until k=0;
Seek(f,FileSize(f)-1);
Truncate(f);
end
else
begin
Mgs(40,2,70,4,' So khong co trong danh muc
');
end;
Close(f);
end;
4. Söa
procedure ChangeRecord(var f:File;p:BanGhi;var
Ok:Boolean);
var vitri:Integer;
begin
Assign(f,FileName);
Reset(f,SizeOf(bg));
TimKiem(p.sodt,f,Vitri,Ok);
IF Ok then
begin
Seek(f,vitri);
BlockWrite(f,p,1);
end
else
begin
Mgs(40,2,70,4,' So khong co trong danh muc
');
Ok:=False;
end;
Close(f);
end;