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

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

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

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

Сообщение grigoreo » 10.08.2011 12:58:02

Уважаемые форумчане, поделитесь ноу хау в таком вот вопросе,
К примеру у меня на форме есть контролы с которыми надо ассоциировать файлы, причем содержимое надо загружать в память и держать там в случае надобности(по минимуму запоминать короткое имя файла и содержимое файла) , а потом при необходимости копировать из памяти в сетевой протокол для отсылки по сети или наоборот получать из сети в память , или сброс на диск если это понадобится в другое место, как организовать такой контейнер ?
Аватара пользователя
grigoreo
постоялец
 
Сообщения: 195
Зарегистрирован: 10.03.2009 15:43:43
Откуда: С нашей Раши

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

Сообщение Nik » 10.08.2011 19:13:09

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

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

var
MyFiles: array [0..30] of TMyFile;
Аватара пользователя
Nik
энтузиаст
 
Сообщения: 573
Зарегистрирован: 04.02.2006 00:08:09
Откуда: Киров

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

Сообщение grigoreo » 11.08.2011 10:31:52

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


Как раз неизвестно допустим решил через клас пойти и хранить это все в TMemoryStream , чет с непревычки не могу одну вещь сделать...
У меня есть заполненый стрим вначале идет имя файла (т.е длина строки потом сама строка),потом содержимое(т.е все в одном стриме), так вот достать имя я со стрима смогу, а как отдельно сбросить тело файла на диск?
Аватара пользователя
grigoreo
постоялец
 
Сообщения: 195
Зарегистрирован: 10.03.2009 15:43:43
Откуда: С нашей Раши

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

Сообщение Brainenjii » 11.08.2011 11:41:35

Сохранить перед телом файла его размер Int64, считать его, создать файловый поток и загрузить его из MemoryStream. Я бы так делал ^_^
Аватара пользователя
Brainenjii
энтузиаст
 
Сообщения: 1351
Зарегистрирован: 10.05.2007 00:04:46


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot], MailRu[bot] и гости: 17

Рейтинг@Mail.ru