Вниз
Скачать: CL | DM;

Нетипизированный файл и Tbitmap   Найти похожие ветки 

← →
ghg ©   (2003-03-13 08:41) [0]

Записываю в файл так:


map : Tbitmap;
...
ddd:=TMemoryStream.Create;
map.SaveToStream(ddd);
map_size:=ddd.size;
blockwrite(ooo,map_size,sizeof(map_size));
setlength(a,ddd.size);
for i:=0 to ddd.size-1 do
begin
ddd.write(a[i], 1);
blockwrite(ooo, a[i], 1);
end;
setlength(a,0);
...


А вынимаю так:

ddd:=TMemoryStream.Create;
blockread(ooo,map_size,sizeof(map_size));
position:=filepos(ooo);
setlength(a, map_size);
for i:=0 to map_size-1 do
begin
ddd.read(a[i],1);
end;
if map_size<>0 then map.loadfromstream(ddd);
setlength(a,0);


И после выемки Tbitmap из файла в переменной map нет ничего.
Вопрос: что не так и как надо?

С наилучшими ...


← →
icWasya ©   (2003-03-13 10:10) [1]

попробуй писать так
map : Tbitmap;
ooo : file;
...
rewrite(ooo,1);
...
ddd:=TMemoryStream.Create;
map.SaveToStream(ddd);
map_size:=ddd.size;
blockwrite(ooo,map_size,sizeof(map_size));
setlength(a,ddd.size);
ddd.seek(0,0);

ddd. read(a[0], map_size);
blockwrite(ooo, a[0], map_size);
setlength(a,0);
...


А вынимать так:

ddd:=TMemoryStream.Create;
blockread(ooo,map_size,sizeof(map_size));
position:=filepos(ooo);
setlength(a, map_size);
ddd. write(a[0],map_size);
ddd.seek(0,0);
if map_size<>0 then map.loadfromstream(ddd);
setlength(a,0);




← →
ghg ©   (2003-03-13 11:03) [2]

При использовании вышеописанного кода, в строке:
if map_size<>0 then map.loadfromstream(ddd);

вылазит ошибка EInvalidGraphic. message:"Bitmap image is not valid "

Естественно при извлечении. При записи проблем нет и по байтам все в порядке.


← →
Palladin ©   (2003-03-13 11:14) [3]

ну конечено выдаст, прочитать то массив забыли :)


← →
Palladin ©   (2003-03-13 11:16) [4]


ddd:=TMemoryStream.Create;
blockread(ooo,map_size,sizeof(map_size));
setlength(a, map_size);
blockread(ooo,a[0],map_size);
ddd.write(a[0],map_size);
ddd.seek(0,0);
if map_size<>0 then map.loadfromstream(ddd);
setlength(a,0);


← →
ghg ©   (2003-03-13 11:30) [5]

Ну в общем тоже что было и в начале. Такое ощущение что ничего нет в Tbitmap.

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


← →
ghg ©   (2003-03-13 11:33) [6]

>Palladin © (13.03.03 11:16)
Все спасибо.


← →
theodor_iv ©   (2003-03-13 14:47) [7]

> ghg
При записи в файл у тебя записывается содержимое массива а, который в приведенном тобой коде НЕ ЗАПОЛНЯЕТСЯ.

Кроме того, все нижеследующие строки

> setlength(a,ddd.size);
> for i:=0 to ddd.size-1 do
> begin
> ddd.write(a[i], 1);
> blockwrite(ooo, a[i], 1);
> end;
> setlength(a,0);

можно заменить одной строкой:

blockwrite(ooo, ddd.Memory^, ddd.size);



← →
now_aleks ©   (2003-03-13 19:34) [8]

Записать например так :

var
Rys : TBitMap;
MemStream : TMemoryStream;
begin
MemStream:=TMemoryStream.Create;
Rys:=TBItMap.Create;
Rys.LoadFromFile("c:\LubojFail.bmp");
Rys.SaveToStream(MemStream);
MemStream.Position:=0;
MemStream.SaveToFile("c:\OutFail");
MemStream.Free;
Rys.Free;
end;


А загрузить так :

begin
MemStream:=TMemoryStream.Create;
MemStream.LoadFromFile("c:\OutFail");
Rys:=TBItMap.Create;
Rys.LoadFromStream(MemStream);
Canvas.Draw(0,0,Rys);
MemStream.Free;
Rys.Free;
end;


← →
now_aleks ©   (2003-03-13 19:38) [9]

Записать например так :

var
Rys : TBitMap;
MemStream : TMemoryStream;
begin
MemStream:=TMemoryStream.Create;
Rys:=TBItMap.Create;
Rys.LoadFromFile("c:\LubojFail.bmp");
Rys.SaveToStream(MemStream);
MemStream.Position:=0;
MemStream.SaveToFile("c:\OutFail");
MemStream.Free;
Rys.Free;
end;


а загрузить так :

begin
MemStream:=TMemoryStream.Create;
MemStream.LoadFromFile("c:\OutFail");
Rys:=TBItMap.Create;
Rys.LoadFromStream(MemStream);
Canvas.Draw(0,0,Rys); // демонстрация
MemStream.Free;
Rys.Free;
end;



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.011 c
8-88076
Den-X
2002-12-16 17:39
2003.03.27
Как проиграть потоковую mp3?


7-88277
BJValentine
2003-02-04 18:45
2003.03.27
Событие Scroll


1-88067
Stream2k
2003-03-15 20:57
2003.03.27
Применение изм. настроек программы во время её выполнения без...


14-88170
R
2003-03-11 03:57
2003.03.27
Как вставить в свой компонент иконку


14-88152
xxxCrazyManxxx
2003-03-13 02:13
2003.03.27
Help IPScaner




   Наверх