Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.04.09;
Скачать: CL | DM;

Вниз

вывод записи в стринггрид   Найти похожие ветки 

 
VAZMan ©   (2006-03-23 19:18) [0]

Кто-нить помогите, проблема с выводом информации (находящейся в файле) в стринггрид.
Вот описание кнопки регестрации:
procedure TReg.Button1Click(Sender: TObject);
var user: Tuser;
begin
assignfile(f, "c:\kurs\users.db");
reset(f);
if filesize(f)=0
 then begin
      read(f, user);
      user.RecN :=1;
      end
 else begin
      Seek(f, FileSize(f));
      with user do
       begin
       imya:=Eimya.text;
       fam:=Efam.text;
       otch:=Eotch.text;
       gr:=Egr.text;
       login:=Elogin.text;
       password:=Epassword.text;
       ocenka:=0;
       RecN:=RecN+1;
       end;
      write(f,user);
      closefile(f);
      end;
end;

А вот то, что вызывает "подвисание" всего проекта(сам вывод в стрингрид):
procedure TForm4.Button1Click(Sender: TObject);
begin
AssignFile(f, "c:\kurs\users.db");
Reset(f);
if FileSize(f) <> 0 then
 begin
 While Not EOF(f) do
    begin
    Read(f, user);
    if user.RecN >= 1 then
       begin
       Stringgrid1.Cells[0, user.RecN] := user.Imya;
       Stringgrid1.Cells[1, user.RecN] := user.fam;
       Stringgrid1.Cells[2, user.RecN] := user.otch;
       Stringgrid1.Cells[3, user.RecN] := user.gr;
       Stringgrid1.Cells[4, user.RecN] := inttostr(user.ocenka);
       end;
    end;
CloseFile(f);
 end;
end;

Подскажите, пожалуйста, что не так, или совсем не так...


 
Чародей ©   (2006-03-23 19:43) [1]

В файле было бы неплохо хранить, число записей.

> Stringgrid1.Cells[0, user.RecN]

Может писать в не существующую cell


 
VAZMan ©   (2006-03-23 19:47) [2]


> В файле было бы неплохо хранить, число записей.


так я это я пытался сделать ---> RecN, я это сделал не правильно?


 
Чародей ©   (2006-03-23 19:56) [3]

RecN - это порядковый номер, а по совтместительсву ты его используешь как колочестово записей. А что произойдет если запись из середины удалить, весь массив перелопачивать??

> if filesize(f)=0
>  then begin
>       read(f, user);
>       user.RecN :=1;
>       end

А это уже не понятно. Если файл 0, что ты и него читаешь? А для else RecN получется не инициализированным. Скажи словами что должна делать:

> procedure TReg.Button1Click(Sender: TObject);


 
VAZMan ©   (2006-03-23 20:08) [4]


> procedure TReg.Button1Click(Sender: TObject);

должна произойти просто запись данных о пользователе


 
EvS ©   (2006-03-23 20:35) [5]

> В файле было бы неплохо хранить, число записей.

>так я это я пытался сделать ---> RecN, я это сделал не правильно?

А как ты определяешь, что у тебя кол-во строк в таблице не меньше чем RecN?


 
Чародей ©   (2006-03-23 20:38) [6]

user локальная при вызове TReg.Button1Click, она имеет произвольное значение. Прогони в отладчике обе процедуры и сам поймеш.



Страницы: 1 вся ветка

Текущий архив: 2006.04.09;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.028 c
15-1142911668
Parus
2006-03-21 06:27
2006.04.09
Тайные конференции


2-1143478151
SamProf
2006-03-27 20:49
2006.04.09
Как в idFTPServer1 определить количество подключённых юзеров?


1-1141889194
sapsi
2006-03-09 10:26
2006.04.09
получить название ссылки в вебраузере


10-1116338010
sinsin
2005-05-17 17:53
2006.04.09
Доступ к RemoteDataModule из Borland Socket Server?


2-1141851911
spogi
2006-03-09 00:05
2006.04.09
Kak uznat kakoy den nedeli, esli znayu kakaya data?