Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.02.29;
Скачать: [xml.tar.bz2];

Вниз

Tstrings или TstringsList   Найти похожие ветки 

 
Igor_thief   (2004-02-06 16:51) [0]

Вот блин слом. Короче создаю я свой клас, в котором описываю поле типа Tstrings. Далее я экземпляр этого класса сохраняю в виде объекта в листбоксе и освобождаю экземпляр. Потом, когда я обращаюсь к этому объекту выскакивает Access violation. В чем проблема? З.Ы.: я так понял, что теряется ссылка на строки Tstrings в памяти. Как обойти глюк?


 
Игорь Шевченко   (2004-02-06 16:55) [1]

Код в студию, телепатов нету


 
Внук   (2004-02-06 16:57) [2]

Думаю, это не "глюк", а обычное незнание


 
Юрий Зотов   (2004-02-06 16:57) [3]

1. Описывать надо, как TStrings, а вот содавать - TStringList (иначе нарветесь на abstract error).

2. Создали. Ссылку запомнили в ListBox"е. А вот уничтожать-то зачем? Ведь после уничтожения запомненная ссылка оказывается уже неверной - отсюда и Access Violation.

Уничтожать надо, но не сразу, а только когда объект уже будет реально не нужен.


 
Danilka   (2004-02-06 16:59) [4]


> Далее я экземпляр этого класса сохраняю в виде объекта в
> листбоксе и освобождаю экземпляр

в лист-боксе сохраняется ссылка на экземпляр. а если ты его потом прибиваешь, то ссылка ведет в никуда.


 
}|{yk   (2004-02-06 17:04) [5]

Невозможно создать объект класса Tstrings, т.к. это базовый абстрактный класс


 
}|{yk   (2004-02-06 17:04) [6]

Невозможно создать объект класса Tstrings, т.к. это базовый абстрактный класс


 
Igor_thief   (2004-02-06 17:12) [7]

Юрий Зотов © (06.02.04 16:57) [3]
Было дело и с абстрактной ошибкой


 
Igor_thief   (2004-02-06 17:20) [8]

TTovarKind = class(TObject)
Name: string;
IconInd: integer;
FirmsList: TStringList;//или Tstrings
end;
...
AKind := TTovarKind.Create(Self);
begin
AKind.Name := s;
AKind.IconInd := 0;//default icon index
AKind.FirmsList.Add(s1);
lbTovars.Items.AddObject(s, AKind);
end;
AKind.Free;
Ну а потом ...
AKind.FirmsList.Assign(TTovarKind(lbTovars.Items.Objects[lbTovars.ItemIndex]).FirmsList)
и тут та компилятор начинает орать
Наверное лучше заменить tstringlist на динам. масив строк?


 
MBo   (2004-02-06 17:27) [9]

где код конструктора TTovarKind.Create?


 
}|{yk   (2004-02-06 17:28) [10]

AKind.Free лишнее
ты удаляешь объект, а потом к нему обращаешься


 
MBo   (2004-02-06 17:35) [11]

сразу и не рассмотрел

AKind.Free;
ну а потом ...
AKind.FirmsList.Assign(TTovarKind(lbTovars.Items.Objects

Вау!!!!
А раньше тебе удавалось к уничтоженным объектам обращаться?


 
Igor_thief   (2004-02-06 18:05) [12]

MBo © (06.02.04 17:35) [11]
Ой, народ, Я просто завтыкал и не отудова скопировал кусочек кода. После "Ну а потом ..." идет TTovarKind(lbTovars.Items.Objects[lbTovars.ItemIndex]).FirmsList такое обрачщение.
Сорри :о)


 
}|{yk   (2004-02-06 18:12) [13]

Да говорят же не надо удалять объекты после их добавления в листбокс
Удаляй их, например на закрытие формы
Ведь AddObject добавляет ссылки на объекты, а не сами объекты.
Потому и аксез виолатион


 
Igor_thief   (2004-02-06 19:54) [14]

}|{yk © (06.02.04 18:12) [13]
Понял! Ладно, как-то выкручусь! Мне не подъодит вариант без удаления. Я просто хочу делать все в цыкле. Но все равно спасибо!!!


 
Palladin   (2004-02-06 21:02) [15]

Да? Позвольте узнать причину, почему же этот вариант не подходит?


 
Igor_thief   (2004-02-07 15:48) [16]

Palladin © (06.02.04 21:02) [15]
Да вот и я сам решил узнать эту причину и был приятно удевлен. Причины уже просто нет. Вариант который мне подсказали подходит просто супер. Так что сорри за втык!:о) Но правда вылез один очень не прикольный баг. Короче обращаюсь я к свойству count и выжу ерунду, то есть полнейшее не соответсвие ситуации (вот как обращаюсь: TTovarKind(lbTovars.Items.Objects[lbTovars.ItemIndex]).FirmsList).



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

Форум: "Потрепаться";
Текущий архив: 2004.02.29;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.009 c
1-93845
Ross
2004-02-11 17:38
2004.02.29
Номер ошибки или другой идентификатор...


1-93898
Tatyana
2004-02-16 00:37
2004.02.29
Событие.


1-93858
Budy
2004-02-16 14:36
2004.02.29
File ы


14-94138
DiGiTaL_BuSTaRD
2004-02-08 23:25
2004.02.29
Спутниковый инет


4-94251
Невозмутимый
2003-12-23 15:43
2004.02.29
НООК? !





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский