![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
вывод записи в стринггрид
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