![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Хранить TStrings в файле
snake-as © (2008-11-19 20:18:00)Здравствуйте. У меня такая ситуация: есть файл. В этот файл записывается объект некоего класса. Одно из св-в класса имеет тип TStrings. Сохраняется и читается переменная из файла нормально. В начале я вызываю конструктор Perem := TStrings.Create. Но, когда я хочу обратиться к строкам через Perem[i], то у меня выдает ошибку доступа. Скажите, пожалуйста, из-за чего это может быть?
KilkennyCat (2008-11-20 13:57:00) [1]
> Ну сюда приходят с разным умом.
Чаще - без оного.
Anatoly Podgoretsky (2008-11-20 13:55:00) [2]Ну сюда приходят с разным умом. Ты же видел создание TStrings?
Сергей М. (2008-11-20 13:28:00) [3]
> Anatoly Podgoretsky © (20.11.08 13:18) [22]
Не думаю что кто-то в здравом уме будет его создавать.
Тогда туда же до кучи можно отнести любые типы данных, память под которые выделяется динамически при посредничестве BMM
Anatoly Podgoretsky (2008-11-20 13:18:00) [4]> Сергей М. (20.11.2008 12:54:21) [21]
TObject тоже
Сергей М. (2008-11-20 12:54:00) [5]
> не знал, что TStrings - это всего лишь указатели
Не только TStrings - любойобъект-наследник класса TObject в Делфи представлен указателем
Palladin (2008-11-20 12:52:00) [6]тьфу, указателем.... один html в голове...
Palladin (2008-11-20 12:52:00) [7]Ты должен знать, как свое имя, что любойидентификатор объекта является ссылкой- это написано в любом учебнике делфи, который не "за 10 минут"...
snake-as (2008-11-20 12:47:00) [8]Все, спасибо огромное! Я не знал, что TStrings - это всего лишь указатели. Спасибо большое, разобрался во всем! Четкий форум, быстро отвечают и правильно! Всем респект:)
Anatoly Podgoretsky (2008-11-20 09:22:00) [9]Правду говорят, что программисты не понимают указателей.
Сергей М. (2008-11-20 08:23:00) [10]
> как бы вы записывали данные в переменную типа 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;
Сергей М. (2008-11-20 08:14:00) [11]
> snake-as © (20.11.08 02:30) [13]
>
> Нет, тот же самый.
А зачем тогда сохранение в файле, если тот же самый ?
Да и в том же самом можно AV огрести, если не понимать что на что в каждый момент времени указывает.
snake-as (2008-11-20 02:33:00) [12]А можете привести маленький примерчик, как бы вы записывали данные в переменную типа TStrings, которая бы хранилась в файле. Может просто я не так конструктор вызываю или не так записываю. Заранее спасибо
snake-as (2008-11-20 02:30:00) [13]Нет, тот же самый.
Германн (2008-11-20 01:52:00) [14]
> snake-as © (20.11.08 01:37) [11]
>
> Что значит будет считываться в другом процессе?
>
Значит один процесс записал в файл, другой процесс прочитал из файла.
snake-as (2008-11-20 01:37:00) [15]Что значит будет считываться в другом процессе?
Германн (2008-11-20 01:26:00) [16]
> Gydvin © (19.11.08 22:11) [9]
>
> Может проще использовать TStringList ?
[4] читал?
Gydvin (2008-11-19 22:11:00) [17]Может проще использовать TStringList ?
Anatoly Podgoretsky (2008-11-19 21:01:00) [18]TSrings не имеет средств хранения, это базовый класс для построения наследников, которые и должны реализовывать хранилище. Поэтому создавать его бессмысленно.
Leonid Troyanovsky (2008-11-19 21:00:00) [19]
> Сергей М. © (19.11.08 20:48) [6]
> [4] остается в силе
Кхм..
"В начале я вызываю конструктор Perem := TStrings.Create. Но, когда я хочу обратиться к строкам через Perem[i], то у меня выдает ошибку доступа"
Народ хочет знать, что ж автору выдали.
--
Regards, LVT.
Сергей М. (2008-11-19 20:48:00) [20]А по барабану что ты хочешь.
[4] остается в силе