Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.09.2007, 23:28   #1
EvgenMailRu
Новичок
Джуниор
 
Регистрация: 01.09.2007
Сообщений: 2
По умолчанию Проблемма сохранения потоков в файл

Не могу сохранить массив из потоков в файл
постановка задачи в процедуре: в единственный файл кроме всего прочего сохранить массив (размер массив меняется) "Стримов". В массив предварительно было сохранено содержимое компонентов похожих на "edit" только более продвинутых.
Вот фрагмент исходного кода
(полный исходник не привожу из-за его размера и наличия "Спецкомпонентов")
-----------------------------------------


Var
k, FileHead.AmountEdit, TmpInt: Intrger; // FileHead - Record
MemStream: TMemoryStream;
TaskEditFields: Array [1..4000] Of TMemoryStream;
FStream: TFileStream;

--------------------
Begin
if FileExists(AFileName) then
if MessageDlg(Format('Файл %s вже існує. Замінити?', [AFileName]), mtConfirmation, [mbYes,mbNo], 0)=mrNo then exit;
try
try
FStream:=TFileStream.Create(AFileNa me,fmCreate);
MemStream:=TmemoryStream.Create;

--------------------
// А тут все и начинается...
for k:=1 to FileHead.AmountEdit
do
begin
TmpInt:= sizeof(TaskEditFields[k]);
{Почему-то во время выполнения программы Tmpint всегда=4 при том,
что в Taskeditfields[k] успешно записан большой блок данных, который
нормально считывается на любом этапе выполнения программы}
FStream.Write(TaskEditFields[k], sizeof(TaskEditFields[k]));
result:=true;
end;

----------------------------------------

Подскажите: что я не правильно делаю, и как правильно

Последний раз редактировалось EvgenMailRu; 01.09.2007 в 23:32.
EvgenMailRu вне форума Ответить с цитированием
Старый 03.09.2007, 13:56   #2
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Цитата:
Var
k, FileHead.AmountEdit, TmpInt: Intrger; // FileHead - Record
странная запись, может так лучше?
Код:
Var 
k, TmpInt: Integer;
FileHead1: FileHead;
Цитата:
Почему-то во время выполнения программы Tmpint всегда=4
попробуйте поэксперементировать с sizeof(TMemoryStream) в разных случаях, один поток, массив, различные размеры и выявите в каких случаях она некорректно работает
result:=true; внутри цикла, это так надо?
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог

Последний раз редактировалось mutabor; 03.09.2007 в 14:02.
mutabor вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функции сохранения TStringList в Ini-файл Air Свободное общение 0 29.06.2008 22:37
Функции сохранения OutList в Ini-файл Air Свободное общение 0 26.06.2008 17:58
формат для сохранения окон vitalik007 Общие вопросы Delphi 9 26.05.2008 09:24
Компонент для сохранения настроек OrdJONY Общие вопросы Delphi 8 24.08.2007 10:36
Сохранения программы niva622 Помощь студентам 8 21.01.2007 09:10