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

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

V kakom file i kak hraniti peremennuyu tipa: TmyData=record... [D7, ????]


AndersoNRules ©   (2004-07-12 20:56:00) 

TmyData= record
   Address:String[15];
       ID:Integer;
     end;

Nujno v kakomto file hraniti permennuyu tipa TmyData, toesti ne odnu a mnogo ih, poryadka 1000.  Podskajite pls kak luchse(shtob mojno bilo schitivati kak mojno bistrey) hraniti takuyu peremennuyu i kakom file?


Delphin   (2004-07-12 23:19:00) [1]

Hi! Вот небольшой приемер, писал не давно. Говорю сразу, что код корявый, но работоспособный

type
TMember=Record
Nam,Fam,Phone,Nick:String[25];
End;
................

var
 Form4: TForm4;
 F,TF:File of TMember;
 I,C:Integer;
 Member:Tmember;

...............
//Save Record
Seek(F,I);
Inc(I);
member.Nam:=Edit1.Text;
Member.Fam:=Edit2.Text;
Member.Phone:=Edit3.Text;
Member.Nick:=Edit4.Text;
Write(F,Member);

//First Record
Seek(F,0);
IF Not EOF(F) Then
Read(F,Member);
Edit1.Text:=Member.Nam;
Edit2.Text:=Member.Fam;
Edit3.Text:=Member.Phone;
Edit4.Text:=Member.Nick;

//Prev. Record

IF EOF(F) Then
Dec(I);
Dec(I);
If I<0 Then I:=0;
Seek(F,I);
IF Not EOF(F) Then
Read(F,Member);
Edit1.Text:=Member.Nam;
Edit2.Text:=Member.Fam;
Edit3.Text:=Member.Phone;
Edit4.Text:=Member.Nick;

//Next Record
I:=FilePos(F);
IF Not Eof(F)
Then Begin
Seek(F,I);
Read(F,Member);
Inc(I);
Edit1.Text:=Member.Nam;
Edit2.Text:=Member.Fam;
Edit3.Text:=Member.Phone;
Edit4.Text:=Member.Nick;
End;

//Last Record
While Not EOF(F) Do  Begin
I:=FilePos(F);
Seek(F,I);
Read(F,Member);
Inc(I);
Edit1.Text:=Member.Nam;
Edit2.Text:=Member.Fam;
Edit3.Text:=Member.Phone;
Edit4.Text:=Member.Nick;
End;

//Delete record (тут ооочень коряво, но работает :)

Var
P,S,FS,FP:Integer;
begin
S:=0;
P:=I;
Seek(F,S);
AssignFile(TF,'Member.Tmp');
IF Not FileExists('Member.Tmp') Then
Rewrite (TF);

Seek(F,0);
While Not EOF(F) DO
Read(F,Member);
FP:=FilePos(F);
Seek(F,S);
IF FP<>I Then Begin
///Dec(P);  //For last P-1

While P>S Do Begin
Seek(F,S);
Seek(TF,S);
Read(F,Member);
Write(TF,Member);
Inc(S);
End;
I:=FilePos(TF);
FS:=S+1;
While Not EOF(F) Do Begin
Seek(TF,S);
Seek(F,FS);
IF Not EOF(F) Then
Read(F,Member);
Write(TF,Member);
Inc(FS);
Inc(S);
End;
end
Else
IF FP=I Then Begin
While P-1>S Do Begin
Seek(F,S);
Seek(TF,S);
Read(F,Member);
Write(TF,Member);
Inc(S);
End;
Edit1.Text:=EmptyStr;
Edit2.Text:=Emptystr;
Edit3.Text:=EmptyStr;
Edit4.Text:=EmptyStr;
End;  
CloseFile(F);
Erase(F);
CloseFile(TF);
Rename(TF,'Member.Dat');
AssignFile(F,'Member.Dat');
IF Not FileExists('Member.Dat') Then
Rewrite (F)
Else
Reset(F);
I:=FilePos(F);
While Not EOF(F) Do
Read(F,Member);
I:=FilePos(F);
Edit1.Text:=Member.Nam;
Edit2.Text:=Member.Fam;
Edit3.Text:=Member.Phone;
Edit4.Text:=Member.Nick;
IF I=0 Then Begin
Edit1.Text:=EmptyStr;
Edit2.Text:=Emptystr;
Edit3.Text:=EmptyStr;
Edit4.Text:=EmptyStr;
end;

//Search (По Полю "Member.Nam")

procedure TForm4.Edit7Change(Sender: TObject);
Var SearchResult,SS:String;
M,Sl:Integer;
begin
M:=0;
Seek(F,0);
SS:=Edit7.Text;
While (SS<>SearchResult)And(Not EOF(F)) Do  Begin
SL:=Length(SS);
Seek(F,M);
Read(F,Member);
SearchResult:=Copy(Member.Nam,1,Sl);
Inc(M);
End;
Edit1.Text:=Member.Nam;
Edit2.Text:=Member.Fam;
Edit3.Text:=Member.Phone;
Edit4.Text:=Member.Nick;
end;

З.Ы
Критика, комментарии, предложения - приветствуются


AndersoNRules   (2004-07-12 21:50:00) [2]

spasibo!


Anatoly Podgoretsky   (2004-07-12 21:35:00) [3]

http://podgoretsky.com/cgi-bin/dlcounter/npscnt?file=http://podgoretsky.com/ftp/Docs/Delphi/Podgoretsky/PasFiles.html&file_id=app-files


AndersoNRules   (2004-07-12 21:17:00) [4]

>Rem   (12.07.04 21:08) [2]

gde mojno pochitati pro tipizirovanniye fili?  a help'a hvatit?


Rem   (2004-07-12 21:08:00) [5]

var
 f: file of TMyData;
 MyData: TMyData;
begin
 AssignFile(f, 'MyDataFile.ext');
 Rewrite(f);
 // or
 Reset(f);
 // ...
 Write(f, MyData);
 // ...
 Read(f, MyData);
 // ...
 CloseFile(f);
end;

См. информацию по работе с типизированными файлами.


Anatoly Podgoretsky   (2004-07-12 21:07:00) [6]

В типизированом


Наверх

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