Работа с файлами

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
Аватара пользователя
grigoreo
постоялец
Сообщения: 195
Зарегистрирован: 10.03.2009 14:43:43
Откуда: С нашей Раши

Работа с файлами

Сообщение grigoreo »

Уважаемые форумчане, поделитесь ноу хау в таком вот вопросе,
К примеру у меня на форме есть контролы с которыми надо ассоциировать файлы, причем содержимое надо загружать в память и держать там в случае надобности(по минимуму запоминать короткое имя файла и содержимое файла) , а потом при необходимости копировать из памяти в сетевой протокол для отсылки по сети или наоборот получать из сети в память , или сброс на диск если это понадобится в другое место, как организовать такой контейнер ?
Аватара пользователя
Nik
энтузиаст
Сообщения: 573
Зарегистрирован: 03.02.2006 23:08:09
Откуда: Киров
Контактная информация:

Сообщение Nik »

2grigoreo
Если число файлов заранее известно, можно не заморачиваться с классами и сделать как-то так:

Код: Выделить всё

type
  TMyFile=record
  xName: string;       // путь к файлу
  PriceBase: string;   // содержимое файла (можно TStringList использовать)
end;

var
 MyFiles: array [0..30] of TMyFile;
Аватара пользователя
grigoreo
постоялец
Сообщения: 195
Зарегистрирован: 10.03.2009 14:43:43
Откуда: С нашей Раши

Сообщение grigoreo »

Nik писал(а):Если число файлов заранее известно, можно не заморачиваться с классами и сделать как-то так:


Как раз неизвестно допустим решил через клас пойти и хранить это все в TMemoryStream , чет с непревычки не могу одну вещь сделать...
У меня есть заполненый стрим вначале идет имя файла (т.е длина строки потом сама строка),потом содержимое(т.е все в одном стриме), так вот достать имя я со стрима смогу, а как отдельно сбросить тело файла на диск?
Аватара пользователя
Brainenjii
энтузиаст
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46

Сообщение Brainenjii »

Сохранить перед телом файла его размер Int64, считать его, создать файловый поток и загрузить его из MemoryStream. Я бы так делал ^_^
Ответить