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

Delphi Sources



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

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 26.01.2013, 20:19
zibert zibert вне форума
Прохожий
 
Регистрация: 28.08.2012
Адрес: NikolayevCity
Сообщения: 40
Версия Delphi: Семерка))
Репутация: 10
Лампочка Запись\чтение Битмапа

Здравствуйте форумчане! Есть небольшой но очень интересный вопрос:
Можно ли записать в файл действительные числа (real) с последующим их считыванием.. Желательно без сильных потерь. Надеюсь на вашу помощь..
PS
У меня есть тип BmpInfo:
Код:
type
  TBmpInfo = record
    Buf:packed array[1..2] of Char;
    offset:Integer;
    size:Integer;
    bits:Word;                                                                   
    comp:Integer;
    Width:Integer;
    Heigth:Integer;
    Gor:Integer;
    Vert:Integer;
    NumCol:Integer;
    NumColM:Integer;
    Colors: packed array [1..1000,1..1000] of Integer;
  end;
Чтение произвожу с помощью Blockread:

Код:
AssignFile(bitmap, newfilename);
FileMode:=fmOpenRead;
Reset(bitmap,1);
BlockRead(bitmap,BmpInfo.Buf,2);
if BmpInfo.Buf<>'BM'then Application.Terminate;
BlockRead(bitmap,BmpInfo.size,4);
BlockRead(bitmap,BmpInfo.offset,4);
BlockRead(bitmap,BmpInfo.offset,4);
BlockRead(bitmap,BmpInfo.Width,4);
BlockRead(bitmap,BmpInfo.Width,4);
BlockRead(bitmap,BmpInfo.Heigth,4);
BlockRead(bitmap,BmpInfo.bits,2);
BlockRead(bitmap,BmpInfo.bits,2);
BlockRead(bitmap,BmpInfo.comp,4);
BlockRead(bitmap,BmpInfo.Gor,4);
BlockRead(bitmap,BmpInfo.Gor,4);
BlockRead(bitmap,BmpInfo.Vert,4);
BlockRead(bitmap,BmpInfo.NumCol,4);
BlockRead(bitmap,BmpInfo.NumColM,4);
Seek(bitmap,BmpInfo.offset);
    for x:=1 to BmpInfo.Heigth do
     begin
       for y:= 1 to BmpInfo.Width do
       begin
       BlockRead(bitmap,buf2,3);
       color:=RGB(buf2[3],buf2[2],buf2[1]);
       BmpInfo.Colors[x,y]:= ColorToRGB(color);
       end;
     end;

Запись проводиться через FileStream:
Код:
rez:=0;
fs:= TFileStream.Create(filename, fmCreate);
fs.WriteBuffer(BmpInfo.Buf,2);
fs.WriteBuffer(BmpInfo.size,4);
fs.WriteBuffer(rez,2);
fs.WriteBuffer(rez,2);
fs.WriteBuffer(BmpInfo.offset,4);
rez:=40;
fs.WriteBuffer(rez,4);
fs.WriteBuffer(BmpInfo.Width,4);
fs.WriteBuffer(BmpInfo.Heigth,4);
rez:=1;
fs.WriteBuffer(rez,2);
fs.WriteBuffer(BmpInfo.bits,2);
fs.WriteBuffer(BmpInfo.comp,4);
rez:=0;
fs.WriteBuffer(rez,4);
fs.WriteBuffer(BmpInfo.gor,4);
fs.WriteBuffer(BmpInfo.vert,4);
fs.WriteBuffer(BmpInfo.numcol,4);
fs.WriteBuffer(BmpInfo.numcolm,4);
i:=0;
for x:=1 to BmpInfo.Heigth do
   begin
       for y:= 1 to BmpInfo.Width do
           begin
            Inc(i);
            fs.WriteBuffer(z[i],3);
           end;
    end;
fs.Free;
__________________
Если новая программа с первого раза компилируется без ошибок, значит, она написана принципиально неправильно.
 


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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