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

Вниз

Access voltation   Найти похожие ветки 

 
F@T@L_Err0r   (2007-09-21 16:05) [0]

Здрасте всем.Кто нить подскажите плиз ответ на такой вопрос:я создал record сохранил в етой структуре файл - все ок.Но как только пытаюсь прочитать из него вылазит error:Access voltation и т.д. вот код:
Assignfile(r,ExtractFilePath(Application.ExeName)+"data.dat");
reset(r);
while not eof(r) do
read(r,rr);
l.Caption :=rr.num; \\в етой срочке вылозит еррор...
l.SubItems.Add(rr.name);
l.SubItems.Add(rr.tel1);
l.SubItems.Add(rr.tel2);
l.SubItems.Add(rr.email);
l.SubItems.Add(rr.comment);
closefile(r);


 
Сергей М. ©   (2007-09-21 16:07) [1]

Где объявление типа структуры и самой структуры ?


 
F@T@L_Err0r   (2007-09-21 16:08) [2]

вот:
  Rep=Record
  num:string[5];
  name:string[25];
  tel1:string[10];
  tel2:string[15];
  email:string[25];
  comment:String[100];
 end;


 
Сергей М. ©   (2007-09-21 16:11) [3]

TRep = packed Record
..
end;

Это собственно объявление типа, как оно должно правильно выглядеть.

А где собственно переменная этого типа объявлена ?


 
F@T@L_Err0r   (2007-09-21 16:12) [4]

Вот полный код :
procedure TForm1.FormCreate(Sender: TObject);
var r:File of Rep;
   rr:Rep;
begin
Assignfile(r,ExtractFilePath(Application.ExeName)+"data.dat");
reset(r);
while not eof(r) do
read(r,rr);
l.Caption :=rr.num;
l.SubItems.Add(rr.name);
l.SubItems.Add(rr.tel1);
l.SubItems.Add(rr.tel2);
l.SubItems.Add(rr.email);
l.SubItems.Add(rr.comment);
closefile(r);
end;


 
Сергей М. ©   (2007-09-21 16:14) [5]


> F@T@L_Err0r   (21.09.07 16:12) [4]


Замечательно.

Теперь пробуй этот код с учетом коррекции объявления типа в [3]


 
F@T@L_Err0r   (2007-09-21 16:16) [6]

Не фурычит :( ?????


 
Плохиш ©   (2007-09-21 16:17) [7]


> Сергей М. ©   (21.09.07 16:14) [5]

Дорожка ведёт в никуда, у него просто эта его l не создана или не настроена ;-)


 
Ega23 ©   (2007-09-21 16:18) [8]

Что такое l?


 
F@T@L_Err0r   (2007-09-21 16:19) [9]

public
   { Public declarations }
   l:TListItem;
 end;


 
Сергей М. ©   (2007-09-21 16:19) [10]

Прямо так и говорит - "не фурычу" ?


 
Сергей М. ©   (2007-09-21 16:21) [11]


> F@T@L_Err0r   (21.09.07 16:19) [9]


Ну и где код инициализации поля l ?


 
F@T@L_Err0r   (2007-09-21 16:21) [12]

Access voltation at address...


 
Ega23 ©   (2007-09-21 16:21) [13]

А ты этот TListItem создал?


 
Ega23 ©   (2007-09-21 16:22) [14]


> Access voltation at address...


:)))))

Милый мой, это не код инициализации..  :)
Это последствия отсутствия такого кода


 
F@T@L_Err0r   (2007-09-21 16:22) [15]

В смысле??? обьявил и все.


 
Ega23 ©   (2007-09-21 16:23) [16]


> В смысле??? обьявил и все.


Берём книгу и начинаем читать про объекты, конструкторы объектов, зачем они нужны и т.д.


 
Сергей М. ©   (2007-09-21 16:24) [17]


> F@T@L_Err0r   (21.09.07 16:22) [15]


Ну, положим, оттого что ты публично объявил свой гараж помещением для хранения своего авто, это самое авто там само по себе не появится, согласен ?)


 
F@T@L_Err0r   (2007-09-21 16:24) [18]

l := TListItem.Create()??? так???


 
Плохиш ©   (2007-09-21 16:24) [19]


> Ega23 ©   (21.09.07 16:23) [16]

Не царское это дело...


 
Сергей М. ©   (2007-09-21 16:25) [20]


> так?


Можно и так.


 
Ega23 ©   (2007-09-21 16:25) [21]


> l := TListItem.Create()??? так???


О! Он не безнадёжен!
Именно так.
И Free потом.


 
F@T@L_Err0r   (2007-09-21 16:26) [22]

а какие тут нада параметры?


 
Сергей М. ©   (2007-09-21 16:27) [23]

ListView.Items


 
F@T@L_Err0r   (2007-09-21 16:28) [24]

ошибка исчезла но listview пустой!


 
Сергей М. ©   (2007-09-21 16:29) [25]

At runtime, use the Add method of the TListItems object to create a list item and add it to the list view


 
Anatoly Podgoretsky ©   (2007-09-21 16:31) [26]

> F@T@L_Err0r  (21.09.2007 16:19:09)  [9]

Это не объявление, а какой то огрызок и не приведено создание ни объекта ни субконтейнера


 
F@T@L_Err0r   (2007-09-21 16:34) [27]

Может я неправилино сохраняю:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var r: file of Rep;
   rr:rep;
   q:integer;
begin
Assignfile(r,ExtractFilePath(Application.ExeName)+"data.dat");
rewrite(r);
for q:=0 to ListView1.Items.Count-1 do
 write(r,rr);
 closefile(r);
end;


 
Сергей М. ©   (2007-09-21 16:38) [28]


> F@T@L_Err0r   (21.09.07 16:34) [27]


Конечно неправильно)

Ты сохрянаешь мусор.

Ну вот ты подумай головой, откуда в переменной rr (которую ты настырно пихаешь в файл ListView1.Items.Count раз) что-то появится, если ты сам туда ничего не положишь ?)


 
F@T@L_Err0r   (2007-09-21 16:41) [29]

А так???
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var r: file of Rep;
   rr:rep;
   q:integer;
begin
Assignfile(r,ExtractFilePath(Application.ExeName)+"data.dat");
rewrite(r);
for q:=0 to ListView1.Items.Count-1 do
 rr.num := ListView1.Items[q].Caption;
 rr.name := ListView1.Items[q].SubItems.Text;
 rr.tel1 := ListView1.Items[q].SubItems.Text;
 rr.tel2 := ListView1.Items[q].SubItems.Text;
 rr.email := ListView1.Items[q].SubItems.Text;
 rr.comment := ListView1.Items[q].SubItems.Text;
 write(r,rr);
 closefile(r);
end;


 
Anatoly Podgoretsky ©   (2007-09-21 16:47) [30]

> F@T@L_Err0r  (21.09.2007 16:41:29)  [29]

Это ты должен сказать, так или не так


 
F@T@L_Err0r   (2007-09-21 16:49) [31]

блин, ошибку выдает на  rr.name := ListView1.Items[q].SubItems.Text;


 
Сергей М. ©   (2007-09-21 16:51) [32]

И так неправильно)

Не проще ли бросить метод тыка и сохранить ListView одним махом - FileStream.WriteComponent(ListView) ? А потом одним же махом и восстановить - FileStream.ReadComponent(ListView) ?


 
F@T@L_Err0r   (2007-09-21 16:59) [33]

а как связать переменную которую я буду писать в файл с FileStream.ReadComponent(ListView)?


 
Сергей М. ©   (2007-09-21 17:08) [34]

Не надо никого "вязать" ?

Создаешь объект типа TFileStream и вызываешь упомянутые выше его методы - они - эт двое из ларца - сами все сделают за тебя.)

А ты тем тем временем успеешь какой-нибудь букварь поумнее пор Делфи почитать)


 
F@T@L_Err0r   (2007-09-21 17:23) [35]

rr:= FileStream.WriteComponent(ListView1);
пишет что:incompatible types Rep and procedure untypet pointer or untipet parameter.


 
Leonid Troyanovsky ©   (2007-09-21 17:32) [36]


> F@T@L_Err0r   (21.09.07 17:23) [35]

Бесплатный совет:
Выделяешь нужную строку(и) в окне Messages и жмешь Ctrl-C
с последующим вставлением в нужное место.

Супербонус: можно там же жамкнуть F1.

--
Regards, LVT.


 
Сергей М. ©   (2007-09-21 18:32) [37]


> F@T@L_Err0r   (21.09.07 17:23) [35]
> rr:= FileStream.WriteComponent(ListView1);


Ты сам-понял, что ты тут понаписал ?)


 
Плохиш ©   (2007-09-21 18:34) [38]


> Ega23 ©   (21.09.07 16:25) [21]
> О! Он не безнадёжен!

Олег - ты не прав!


 
Dimaxx ©   (2007-09-23 09:24) [39]

2 F@T@L_Err0r: Начни с чего-нибудь попроще - например, с Hello World! Все твои попытки напоминают тыкание пальцем в небо - авось попаду.


 
{RASkov} ©   (2007-09-23 13:31) [40]

> F@T@L_Err0r

А ты ник наверное не выбирал, он - ник, сам тебя выбрал
:о)
Сорри... но по делу тут трудно чего либо посоветовать...
Ты не думаешь над советами, и не хочешь понимать их, а тупо пишешь их и потом делаешь вид невинного мальчика...


 
Sairex ©   (2007-10-01 15:38) [41]

Безнадежно...
Из того что я прочитал нифига не понял.
Если он создает форму и пишет туды с ListBox"a (наверно еще и пустого), то в полне ничего у него не выйдет. да и с типом у него будут не соответствия.


 
Игорь Шевченко ©   (2007-10-01 15:41) [42]

А если убрать @ из ника ?


 
icWasya ©   (2007-10-01 16:26) [43]

А тело цикла не забыть заключить в Begin/End



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

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

Наверх




Память: 0.57 MB
Время: 0.024 c
9-1161520353
Тёма
2006-10-22 16:32
2007.10.21
Прозрачность в GLScene


15-1190694401
DelphiN!
2007-09-25 08:26
2007.10.21
Резрешить под пользователем SYSTEM запуск от имени ...


4-1177071590
cvv
2007-04-20 16:19
2007.10.21
GetPrinter


2-1190635457
Alex.Rus
2007-09-24 16:04
2007.10.21
Процессы


9-1161610372
Xdebugger
2006-10-23 17:32
2007.10.21
Глюк при установке GLOXODE