Текущий архив: 2008.12.28;
Скачать: CL | DM;
Вниз
Хранить TStrings в файле Найти похожие ветки
← →
snake-as © (2008-11-19 20:18) [0]Здравствуйте. У меня такая ситуация: есть файл. В этот файл записывается объект некоего класса. Одно из св-в класса имеет тип TStrings. Сохраняется и читается переменная из файла нормально. В начале я вызываю конструктор Perem := TStrings.Create. Но, когда я хочу обратиться к строкам через Perem[i], то у меня выдает ошибку доступа. Скажите, пожалуйста, из-за чего это может быть?
← →
sniknik © (2008-11-19 20:22) [1]может быть виртуальный метод.
← →
palva © (2008-11-19 20:23) [2]
> из-за чего это может быть?
Из-за того, что Perem не содержит строки с номером i.
← →
Leonid Troyanovsky © (2008-11-19 20:27) [3]
> snake-as © (19.11.08 20:18)
> имеет тип TStrings. Сохраняется и читается переменная из
> файла нормально. В начале я вызываю конструктор Perem :=
> TStrings.Create.
Оный класс, во-ще-то, весьма абстрактен.
--
Regards, LVT.
← →
Сергей М. © (2008-11-19 20:45) [4]
> Сохраняется и читается переменная из файла нормально
Сохранять в файле указатель бессмысленно, если считываться и использоваться он будет в другом процессе.
← →
snake-as © (2008-11-19 20:47) [5]Я, короче, не обратиться хочу, а наоборот, записать туда.
← →
Сергей М. © (2008-11-19 20:48) [6]А по барабану что ты хочешь.
[4] остается в силе
← →
Leonid Troyanovsky © (2008-11-19 21:00) [7]
> Сергей М. © (19.11.08 20:48) [6]
> [4] остается в силе
Кхм..
"В начале я вызываю конструктор Perem := TStrings.Create. Но, когда я хочу обратиться к строкам через Perem[i], то у меня выдает ошибку доступа"
Народ хочет знать, что ж автору выдали.
--
Regards, LVT.
← →
Anatoly Podgoretsky © (2008-11-19 21:01) [8]TSrings не имеет средств хранения, это базовый класс для построения наследников, которые и должны реализовывать хранилище. Поэтому создавать его бессмысленно.
← →
Gydvin © (2008-11-19 22:11) [9]Может проще использовать TStringList ?
← →
Германн © (2008-11-20 01:26) [10]
> Gydvin © (19.11.08 22:11) [9]
>
> Может проще использовать TStringList ?
[4] читал?
← →
snake-as © (2008-11-20 01:37) [11]Что значит будет считываться в другом процессе?
← →
Германн © (2008-11-20 01:52) [12]
> snake-as © (20.11.08 01:37) [11]
>
> Что значит будет считываться в другом процессе?
>
Значит один процесс записал в файл, другой процесс прочитал из файла.
← →
snake-as © (2008-11-20 02:30) [13]Нет, тот же самый.
← →
snake-as © (2008-11-20 02:33) [14]А можете привести маленький примерчик, как бы вы записывали данные в переменную типа TStrings, которая бы хранилась в файле. Может просто я не так конструктор вызываю или не так записываю. Заранее спасибо
← →
Сергей М. © (2008-11-20 08:14) [15]
> snake-as © (20.11.08 02:30) [13]
>
> Нет, тот же самый.
А зачем тогда сохранение в файле, если тот же самый ?
Да и в том же самом можно AV огрести, если не понимать что на что в каждый момент времени указывает.
← →
Сергей М. © (2008-11-20 08:23) [16]
> как бы вы записывали данные в переменную типа TStrings,
> которая бы хранилась в файле
В переменной типа TStrings хранится указатель !
Бессмысленно сохранять этот указатель в файле !
В файле следует сохранять не данные из переменной типа TStrings, а данные из св-ва Text объекта типа TStrings, на который указавает эта переменная.MyStringsObject := TStringList.Create;
try
MyStringsObject.Add("One");
MyStringsObject.Add("Two");
СохранитьВФайл(Файл, MyStringsObject.Text);
finally
MyStringsObject.Free;
end;
..
MyStringsObject := TStringList.Create;
try
MyStringsObject.Text := ПрочитатьИзФайла(Файл);
finally
MyStringsObject.Free;
end;
← →
Anatoly Podgoretsky © (2008-11-20 09:22) [17]Правду говорят, что программисты не понимают указателей.
← →
snake-as © (2008-11-20 12:47) [18]Все, спасибо огромное! Я не знал, что TStrings - это всего лишь указатели. Спасибо большое, разобрался во всем! Четкий форум, быстро отвечают и правильно! Всем респект:)
← →
Palladin © (2008-11-20 12:52) [19]Ты должен знать, как свое имя, что любой идентификатор объекта является ссылкой - это написано в любом учебнике делфи, который не "за 10 минут"...
← →
Palladin © (2008-11-20 12:52) [20]тьфу, указателем.... один html в голове...
← →
Сергей М. © (2008-11-20 12:54) [21]
> не знал, что TStrings - это всего лишь указатели
Не только TStrings - любой объект-наследник класса TObject в Делфи представлен указателем
← →
Anatoly Podgoretsky © (2008-11-20 13:18) [22]> Сергей М. (20.11.2008 12:54:21) [21]
TObject тоже
← →
Сергей М. © (2008-11-20 13:28) [23]
> Anatoly Podgoretsky © (20.11.08 13:18) [22]
Не думаю что кто-то в здравом уме будет его создавать.
Тогда туда же до кучи можно отнести любые типы данных, память под которые выделяется динамически при посредничестве BMM
← →
Anatoly Podgoretsky © (2008-11-20 13:55) [24]Ну сюда приходят с разным умом. Ты же видел создание TStrings?
← →
KilkennyCat © (2008-11-20 13:57) [25]
> Ну сюда приходят с разным умом.
Чаще - без оного.
Страницы: 1 вся ветка
Текущий архив: 2008.12.28;
Скачать: CL | DM;
Память: 0.5 MB
Время: 0.005 c