Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Графика и игры
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.03.2010, 19:30
ArtemTmn ArtemTmn вне форума
Прохожий
 
Регистрация: 18.03.2010
Сообщения: 1
Репутация: 10
По умолчанию проблема с записью с полем типа TBitmap

есть запись
Код:
  RScheme = record
    Image: TBitmap;
    Mass: array [1..10,1..10]of String[10];
  end;

обьявлем
Код:
  
var
  SchemeTmp: RScheme;
  SchemeFile: file of RScheme;

создаю типизированный файл и пытаюсь туда сохранить эту запись
вот сохранение:
Код:
procedure TForm1.Button4Click(Sender: TObject);     {**SAVE FILE**}
var
  i,j:Byte;
  FilePath: String;
begin
  if SaveDialog1.Execute then
    begin
      FilePath:= SaveDialog1.FileName;
      SchemeTmp.Image:= TBitmap.Create;
      SchemeTmp.Image.Assign(Image1.Picture);
      for i:= 1 to 10 do
        for j:= 1 to 10 do
          SchemeTmp.Mass[i,j]:= ShemMass[i,j];
      AssignFile(SchemeFile,FilePath+'.bin');
      Rewrite(SchemeFile);
      Write(SchemeFile,SchemeTmp);
      CloseFile(SchemeFile);
    end;
end;

вот открытие
Код:
procedure TForm1.Button5Click(Sender: TObject);          {**OPEN FILE**}
var
  i,j: Byte;
  FilePath: String;
  TmpImage: TBitmap;
begin
  if OpenDialog1.Execute then
    begin
      FilePath:= OpenDialog1.FileName;
      AssignFile(SchemeFile,FilePath);
      Reset(SchemeFile);
      Read(SchemeFile,SchemeTmp);
      TmpImage:= TBitmap.Create;
      TmpImage:= SchemeTmp.Image;
      Image1.Picture.Assign(SchemeTmp.Image);
      for i:= 1 to 10 do
        for j:= 1 to 10 do
          ShemMass[i,j]:=  SchemeTmp.Mass[i,j];
    end;
end;

сохранение проходит успешно, а вот при открытии Изображения нету

Последний раз редактировалось ArtemTmn, 18.03.2010 в 19:33.
Ответить с цитированием
  #2  
Старый 18.03.2010, 21:14
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Не выйдет так ничего хорошего т.к. битмап у вас произвольной длины, а типизированный файл требует одинаковую длину для всех записей.
Используйте TFileStream.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #3  
Старый 18.03.2010, 22:47
Аватар для s0Creator
s0Creator s0Creator вне форума
Местный
 
Регистрация: 20.02.2008
Адрес: Московская область
Сообщения: 420
Репутация: 884
По умолчанию

попробуйте вывести размер SchemeTmp.Image
например
Код:
Caption := IntToStr(SizeOf(SchemeTmp.Image));
Для 32-х битноги процессора это будет 4 байта потому что там только ссылка на объект.
Можно также открыть записаный файл в 16-ти ричном редакторе и посмотреть, что же там записалось.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:20.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter