Текущий архив: 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
А ты ник наверное не выбирал, он - ник, сам тебя выбрал
:о)
Сорри... но по делу тут трудно чего либо посоветовать...
Ты не думаешь над советами, и не хочешь понимать их, а тупо пишешь их и потом делаешь вид невинного мальчика...
Страницы: 1 2 вся ветка
Текущий архив: 2007.10.21;
Скачать: CL | DM;
Память: 0.53 MB
Время: 0.049 c