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

Серж

Пользователи
  • Постов

    1
  • Зарегистрирован

  • Посещение

Весь контент Серж

  1. Компонент в основном состоит из динамического двумерного массива, который является банком для рисунков. Компонент в 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
×
×
  • Создать...