Перейти к содержанию
Fire Monkey от А до Я
  • 0

Загрузка и сохранение данных компонента в файл (.fmx)


Серж

Вопрос

Опубликовано (изменено)

 

Компонент в основном состоит из динамического двумерного массива, который является банком для рисунков. Компонент в Windows -приложении работает нормально, без ошибок.Только при заполнении массива (используется BMP, размером 48х48 px) с помощью Edit banka, используются другие процедуры.

В FMX- приложении при сохранении изменений, произведенные в приложении,данные компонента с массивом сохраняются в файле (.fmx), а при загрузке загружает в массив только первую картинку, после этого появляется ошибка:

Error loading the Bitmap failed.

 

Я не могу понять, где я допустил ошибку.

 

 

procedure TBitmapCellBank.DefineProperties(File:TFiler);
begin
   inherited;
   Filer.DefineBinaryProperty('Pictures', LoadPictures, SavePictures, True);
end;
procedure TBitmapCellBank.SavePictures(Stream:TStream);
var I,J,Buf:Integer;
begin
   Stream.WriteBuffer(FImageWidth, SizeOf(FImageWidth));
   Stream.WriteBuffer(FImageHeight, SizeOf(FImageHeight));
   Buf:= Length(FImages);
   Stream.WriteBuffer(Buf, SizeOf(Buf));
   for I:= 0 to High(FImages) do
   begin
     Buf:= Length((FImages[I]);
     Stream.WriteBuffer(Buf, SizeOf(Buf));
     for J:= 0 to High(FImages[I]) do
     begin
       FImages[I,J].SaveToStream(Stream);
     end;
   end;
end;
procedure TBitmapCellBank.LoadPictures(Stream:TStream);
var Buf,I,J:Integer;
begin
   Stream.ReadBuffer(Buf, SizeOf(Buf));
   ImageWidth:= Buf;
   Stream.ReadBuffer(Buf, SizeOf(Buf));
   ImageHeight:= Buf;
   Stream.ReadBuffer(Buf, SizeOf(Buf));
   SetLength((FImages,Buf);
   try
     for I:= 0 to High(FImages) do
     begin
       Stream.ReadBuffer(Buf, SizeOf(Buf));
       SetLength(FImages[I], Buf);
       for J:= 0 to High(FImages[I]) do
       begin
         FImages[I,J]:= TBitmap.Create;
         FImages[I,J].LoadFromStream(Stream);
       end;
     end;
   except
     on E.Exception do
     begin
       ShowMessage('Ошибка' + E.Message);
     end;
   end;
end;

 

 

CellBanks.zip

Изменено пользователем Серж
устранить ошибки

Рекомендуемые сообщения

Ответов пока нет

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...