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

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

Сохранения в файл


Страницы:   1 2

Profi ©   (2004-12-02 00:49:00) 

Столкнулся тут с проблемой! Как за раз сохранить динамический список в файл?


GuAV   (2004-12-03 01:27:00) [1]

Я понял. Вот так и пиши:
-длина массива extended
-сам массив
-длина строки
-строка
...

читать так:
BlockRead(F, L, SizeOf(S));
SetLength(S, L);
BlockRead(F, S[0], L * SizeOf(S[0]));


Profi   (2004-12-03 01:07:00) [2]

GuAV ©   (03.12.04 1:04) [32]
Пойми, мне все это надо запихнуть в одинфайл! И строки, и списки!


GuAV   (2004-12-03 01:04:00) [3]

ок.
тогда пиши размер перед строкой.
L := Length(S);
BlockWrite(F, L, SizeOf(S));
BlockWrite(F, A[0], L * SizeOf(Char));


Profi   (2004-12-03 00:56:00) [4]

GuAV ©   (03.12.04 0:55) [30]
Я же сказал пять!


GuAV   (2004-12-03 00:55:00) [5]

Profi ©   (03.12.04 0:43) [29]
Может быть любой!


Хорошо. Сколько ? Одна ? Или опять неизвесно сколько ?


Profi   (2004-12-03 00:43:00) [6]

GuAV ©   (02.12.04 22:36) [27]
Опять же таки, не известно! Может быть любой! У меня уже голова пухнит, как все это совместить!


TButton   (2004-12-02 22:44:00) [7]


> А со string что делать?

выкини его сейчас же!
и не забудь вымыть руки!
тащут сюда всякую гадость...


GuAV   (2004-12-02 22:36:00) [8]

Profi ©   (02.12.04 22:34) [26]
А со string что делать?


сколько, какой длины ?


Profi   (2004-12-02 22:34:00) [9]

GuAV ©   (02.12.04 22:31) [24]
А со string что делать?


GuAV   (2004-12-02 22:34:00) [10]

Кстати 2048 extended - это 2048*12, 1024 integer это 1024*4... не так уж много, можно и как со статическим массивом.

Можно ещё массив extended отдельно, массив Integer отдельно.


GuAV   (2004-12-02 22:31:00) [11]

Profi ©   (02.12.04 22:11) [23]
неопределенное кол-во (но более 2048) элементов extended, ровно в два раза меньше integer, и еще штук двадцать extended. Как все это запихнуть в один файл? Ваши мысли!


Дин массив из записей из двух extended и одного Integer. Если нужно записывать элементы в массив а их число неизвестно, то установить его длинц в 1024. Когда станет ясна длина, установить длину к актуальному значению.
Записывать в файл BlockWrite или TFileStream.WriteBuffer. длину лучше тоже записать.


Profi   (2004-12-02 22:11:00) [12]

Блин, все равно не выходит!
ТЗ: есть пять строк, неопределенное кол-во (но более 2048) элементов extended, ровно в два раза меньше integer, и еще штук двадцать extended. Как все это запихнуть в один файл? Ваши мысли!


Profi   (2004-12-02 17:53:00) [13]

Да я уже на работе все понял! Спасибо за советы (особенно: " указатели в файл")!


GuAV   (2004-12-02 14:22:00) [14]

Anatoly Podgoretsky ©   (02.12.04 9:20) [20]

Я понимаю, но автор хотел одной записью в файл через BlockWrite :)


Anatoly Podgoretsky   (2004-12-02 09:20:00) [15]

GuAV ©   (02.12.04 01:07) [3]
S := TMemoryStream.Create;
try
S.WriteBuffer(MyVar, SizeOf(MyWar));
Image1.Picture.Bitmap.SaveToStream(S);
Memo1.Lines.SaveToStream(S);
BlockWrite(F, S.Memory^,  S.Size);
finally
S.Free;
end;

А это сводится до одной строчки Memo1.Lines.SaveToFile(FN);

Profi ©   (02.12.04 01:17) [7]
А никакого смысла нет в запихивать указатели в файл.


ЮЮ   (2004-12-02 08:00:00) [16]

>Опять же, я точно не знаю, сколько будет элементов, следовательно нужен список

Почему, думешь, массив называют динамическим

>За одну запись! Без циклов!

Невозможно, т.к. только в цикле можно найти реальное мксто в памяти очередного record


TButton   (2004-12-02 07:44:00) [17]


> виноваты естественно циклы. :-)

Я вас попрошу птичку нашу не обижать© Кот Матроскин


GuAV   (2004-12-02 01:46:00) [18]

ачто тут непонятного. если проблемы с быстродействием, то виноваты естественно циклы. :-)


Gero   (2004-12-02 01:43:00) [19]

Я только не понял, чем не подходит цикл.


Profi   (2004-12-02 01:37:00) [20]

GuAV ©   (02.12.04 1:33) [13]
Ладно, завтра попарюсь, а сейчас спать. На работу завтра.


Страницы:   1 2

Наверх

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