Pliki typowane i TBitmap

Odpowiedz Nowy wątek
2006-11-07 09:40
0

Piszę program, w którym do pliku rekordowego chcę zapisać zmienną

var Obrazek:TBitmap;

Z tego co wyczytałem w googlach i na 4p. nie tak prosto zapisać ten typ bo to nie jest zmienna o stałym rozmiarze. Probowałem to jakoś obejść ale z marnym skutkiem. Ma ktoś może jakiś pomysł jak zapisać TBitmap do pliku rekordowego?Może jakaś biblioteka, fragment kodu, co kolwiek. Będę wdzięczny. Już pare tygodni się z tym męczę aż w SPACJA końcu piszę. Z góry dzięki. [email protected] gg:354534

Pozostało 580 znaków

2006-11-07 10:08
0

TBitamp to klasa, a zmienna jest wskażnikiem na konkretny egzemplarz tej klasy. Zapisując zmienną do pliku zapiszesz jedynie adres pod którym znajdue się ezgamplarz klasy.
Moja rada: próbuj strumieniami. Zapisuj po kolei pola rekordu do strumieniam, potem zapisz obrazek do oddzielnego strumienia i dopisz go do podstawowego strumienia. Pocztyjaw help'ie o klasa TMemoryStream i TFileStream i o metodzie TBitmap.SaveToStream.


Pozostało 580 znaków

2006-11-07 10:48
0

Do pliku typowanego za bardzo sie nie da, ale możesz spróbować strumieniem w ten sposób, że pierw podajesz wielkość bitmapy, a zaraz za wielkością zapisujesz strumień Bitmapy, potem wielkość kolejnej bitmapy i znow stumien Bitmapy i tak w kolko.

Możesz tez spróbować XMLa. Będzie to wygodniejszy i bezpieczniejszy sposób.

Pozostało 580 znaków

2006-11-07 13:20
0

było niedawno - szukaj


- Ciemna druga strona jest.
- Nie marudź Yoda, tylko jedz tego tosta.
Google NIE GRYZIE!
Pomogłem - kliknij

Pozostało 580 znaków

2006-11-07 17:43
0

Nie wiem nic o strumieniach ale widze ze bede musial sie nauczyc :) Dam znac jak roziwaze problem a tymczasem jakby cos ktos jeszcze wiedzial czy widzial gdzies to bede wdzieczny. Zabieram sie do pracy

Pozostało 580 znaków

2006-11-07 19:17
0

Może nie będzie to zbyt eleganckie rozwiązanie, ale plan jest taki:

1). Zapisujesz bitmapę za pomocą SaveToFile np:

Image1.Picture.SaveToFile('Plik.bmp');

2). Przez GetMem przydzielasz pamięć zmiennej typu Pointer o rozmiarze FileSize

GetMem(Buf, FileSize('Plik.bmp'));

3). Za pomocą BlockRead/BlockWrite możesz zapisywać kolejno obrazki w jeden plik
4). Potrzebujesz jeszcze informacji, gdzie się kończy pierwsza bitmapa, a zaczyna druga, tak więc na samym początku pliku zapisz tablicę, która będzie przechowywała rozmiary poszczególnych bitmap, dzięki temu obliczenie pozycji w pliku będzie dziecinnie proste.

Jak coś nie zrozumiałe to pisz.


<span style="color: blue">"Kolarstwo to jedna z najtrudniejszych dyscyplin sportu. Nawet najgorszy kolarz jest wciąż wybitnym sportowcem."
s.p. Marco Pantani
</span>

Pozostało 580 znaków

2006-11-07 22:57
0

w Delphi chyba jest parser XML albo mozna doinstalowac, a wtedy taki plik by wygladał tak:

<xml>
  <rekord>
    <pole1> wartosc </pole1>
    <pole2> wartosc </pole2>
    <bitmapa> tutaj zapisany plik </bitmapa>
  </rekord>
</xml>

bo o ile pamietam w XMLu można zapisywać pliki binarne, wiec bitmape tez tam wcisciesz.

Pozostało 580 znaków

2006-11-11 17:56
0

Ze strumieniami nic mi nie wychodzi wiec spróbuję z

BlockRead

BlockWrite


Dzieki za pomysly. Jesli jeszcze ktos ma jakies to piszcie smiało

Pozostało 580 znaków

2006-11-11 19:10
bobak
0

Może się przyda

http://delphi.about.com/od/graphics/l/aa101803a.htm

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0