Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Сохранение строковых переменных в файл


Страницы:   1 2

Ell ©   (2009-01-16 19:25:00) 

Хочу сохранить значения переменных типа string в файл (с тем, чтобы при повторном запуске программы их восстанавливать).
Способ типа

var
 f: file of byte;
…
 AssignFile(f, filename);  Rewrite(f);  BlockWrite(f,переменная, длина переменной);
…


не работает, т.к. длина не постоянна. Можно, конечно, записывать каждую переменную в отдельный файл, но не хотелось бы - у меня их массивы – много файлов будет, хотел бы поместить все данные в один. Не подскажете, как лучше сделать?


Сергей М.   (2009-01-17 19:19:00) [21]


> Ell   (16.01.09 21:02) [6]


> как теперь записать этот массив TStringList'ов в файл.


Никак.


ывывыв   (2009-01-17 15:41:00) [22]

var s:tstringlist;

s:=stringlist.create;
s.add(переменная)...
s.savetofile(Имя файла)
s.destroy

s.loadfromfile(файл)
переменная0:=s[0];
...

Только файл должен существовать до сохранения, но ето уже твои проблемы


Германн   (2009-01-17 01:50:00) [23]


> Amoeba ©   (17.01.09 01:42) [8]

Не поможет твой совет автору, Игорь.
Вряд ли он станет читать ту статью. (Судя по его постам в этой ветке).


Amoeba   (2009-01-17 01:42:00) [24]

Автору вопроса:

Лицей - http://www.delphikingdom.com/lyceum/
Уроки от Анатолия Подгорецкого - http://www.delphikingdom.com/lyceum/seminar.asp?ID=2


palva   (2009-01-16 23:28:00) [25]

А ответ [2] вам почему не подходит?


Ell   (2009-01-16 21:02:00) [26]

Сергей М.
:-) Я если что и знал о TStringList, то не более того, что это было введено специально для А.С. Пушкина :-)

Сейчас в процедуре сохранения данных добавил (.Add) sntings в одномерный массив TStringList'ов (поскольку массив строк двумерный), подскажите как теперь записать этот массив TStringList'ов в файл.


Сергей М.   (2009-01-16 20:30:00) [27]


> Ell


TStringList для кого придуман ? для Пушкина ?


Ell   (2009-01-16 20:18:00) [28]

(предыдущее моё сообщение было для Ega23 - сообщения Anatoly Podgoretsky тогда еще не видел)


Ell   (2009-01-16 20:16:00) [29]

Спасибо, но не совсем тут разобрался. Не могли бы привести пример как задать файл и сохранить в него string используя указанное вами?


Anatoly Podgoretsky   (2009-01-16 20:12:00) [30]

> Ell  (16.01.2009 19:25:00)  [0]

Для строк предназначен TextFile


Ega23   (2009-01-16 19:42:00) [31]

type
 TBlockHeader = packed record
   ID : Cardinal;
   Size : Integer;
 end;

const

 c_IdStr  = $0101;
 c_IdInt  = $0102;
 c_IdDateTime = $0103;
 c_IdBool = $0104;
 c_IdGUID = $0105;

procedure StreamReadString(Stream : TStream; var Value : string; const Size : Integer);
procedure StreamWriteString(Stream : TStream; const Value : string; const TagID : Cardinal);
procedure StreamReadDateTime(Stream : TStream; var Value : TDateTime);
procedure StreamWriteDateTime(Stream : TStream; const Value : TDateTime; const TagID : Cardinal);
procedure StreamReadGUID(Stream : TStream; var Value : TGUID);
procedure StreamWriteGUID(Stream : TStream; const Value : TGUID; const TagID : Cardinal);
procedure StreamReadBoolean(Stream : TStream; var Value : Boolean);
procedure StreamWriteBoolean(Stream : TStream; const Value : Boolean; const TagID : Cardinal);
procedure StreamReadInteger(Stream : TStream; var Value : Integer);
procedure StreamWriteInteger(Stream : TStream; const Value : Integer; const TagID : Cardinal);

implementation

//*****************************************************************************

procedure StreamReadString(Stream : TStream; var Value : string;
   const Size : Integer);
begin
 SetLength(Value, Size);
 Stream.ReadBuffer(PANSIChar(Value)^, Size);
end;

//*****************************************************************************

procedure StreamWriteString(Stream : TStream; const Value : string;
   const TagID : Cardinal);
var
 bh : TBlockHeader;
begin
 bh.ID := TagID;
 bh.Size := Length(Value);
 Stream.WriteBuffer(bh, SizeOf(TBlockHeader));
 Stream.WriteBuffer(PANSIChar(Value)^, bh.Size);
end;

//*****************************************************************************

procedure StreamWriteGUID(Stream : TStream; const Value : TGUID;
   const TagID : Cardinal);
var
 bh : TBlockHeader;
begin
 bh.ID := TagID;
 bh.Size := SizeOf(TGUID);
 Stream.WriteBuffer(bh, SizeOf(TBlockHeader));
 Stream.WriteBuffer(Value, bh.Size);
end;

//*****************************************************************************

......


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо