Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

PostGluk [D6]


Fuinadan ©   (2002-12-18 18:11:00) 

Для Alx2
unit CBaseClass;
interface

const DBlockSize=512;
DBlockCount=12;

type TBirthDay = string[10];

TRecType = record
Mark: shortstring;
Model: shortstring;
Producer: shortstring;
BirthDay: TBirthDay;
BestBefore: Word;
Price: Currency;
Diagon: word;
Used: Boolean;
end;
const EmptyRec: TRecType=(Mark: "";Model: ""; Producer: ""; BirthDay: ""; BestBefore: 0;
Price: 0;Diagon: 0; Used: false);
type Plist=^list;
list = record
pos: LongInt;
R: TRecType;
pNext: plist;
pPrev: plist;
end;
TIDT = class
public
FileName: String;
FOpened: Boolean;
BlockSize, BlockCount: Word;
constructor Create;
function ReadOne(var pos_: LongInt): TRecType;
procedure EraseOne(R: TRecType);
procedure AddOne(R: TRecType);
procedure FindOne(R: TRecType; head: Plist);
procedure EditOne(R,R1: TRecType);
procedure CreateFile();
procedure OpenFile();
procedure CloseFile();
procedure EraseFile();
function Hash( HModel: shortstring ): Word;
private
F: File of TRecType;
function Move(var R: TRecType): Boolean;
end;

implementation
uses SysUtils;

constructor TIDT.Create;
begin
BlockSize:=DBlockSize;
BlockCount:=DBlockCount;
FOpened:=false;
FileName:="";
end;

function TIDT.ReadOne(var pos_: LongInt): TRecType;
var R: TRecType;
begin
R:=EmptyRec; //перебор
if FOpened then begin
if pos_ > -1 then begin
if pos_ < FileSize(F) then begin
seek(F, pos_); read(F, R); Inc(pos_);
end
else begin
pos_:=-1
end
end
end
else begin pos_:=-2 end;
ReadOne:=R;
end;


procedure TIDT.CreateFile();
var INI: TextFile;
S: String;
i: LongInt;
begin if FOpened then CloseFile(); //In case of fire...
S := FileName; SetLength(S,Length(S)-3); S:=S+"ini";
AssignFile(F, FileName); Rewrite(F);
AssignFile(INI,S); Rewrite(INI);
Writeln(INI,BlockSize); Writeln(INI,BlockCount);
System.CloseFile(INI);
for i:=1 to BlockSize*BlockCount do write(F, EmptyRec);
FOpened:=true;
end;

procedure TIDT.OpenFile();
var INI: TextFile;
S: String;
begin
if FOpened then CloseFile(); // на всякий пожврный...
S := FileName; SetLength(S,Length(S)-3); S:=S+"ini";
AssignFile(F, FileName); Reset(F);
AssignFile(INI,S); Reset(INI);
Readln (INI, BlockSize);
Readln (INI, BlockCount);
System.CloseFile(INI);
FOpened:=true;
end;


FreeLancer   (2002-12-18 18:23:00) [1]


> Fuinadan © (18.12.02 18:20)
> Да,все молчат...А мне курсач сдавать, м/ду прочим...:((

Счастливый...
А нам домой пора :-)


Fuinadan   (2002-12-18 18:20:00) [2]

Да,все молчат...А мне курсач сдавать, м/ду прочим...:((


Наверх

Титульная страница Поиск, карта сайта Написать письмо