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

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

вывод записи в стринггрид


VAZMan ©   (2006-03-23 19:18:00) 

Кто-нить помогите, проблема с выводом информации (находящейся в файле) в стринггрид.
Вот описание кнопки регестрации:
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 20:38:00) [1]

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


EvS   (2006-03-23 20:35:00) [2]

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

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

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


VAZMan   (2006-03-23 20:08:00) [3]


> procedure TReg.Button1Click(Sender: TObject);

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


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

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 19:47:00) [5]


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


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


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

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

> Stringgrid1.Cells[0, user.RecN]

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


Наверх

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