Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Delphi - Ako dostať užívateľské dáta do *.RES?

Ako dostať do resources akýkoľvek objekt (obrázok, zvuk, dáta a podobne)? Ide mi o uloženie obrázkov a zvukov, aby som nemal zbytočné súbory na disku a program bol samostatný. Mám tu aj nejaký text o tom ako prehrať zvuk z resources, ale nie je tam vysvetlené, ako to tam vložiť a podobne. Potrebujem niečo univerzálne, čiže nie závislé od obsahu súboru.

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Bud si to udelas pomoci ResourceHackeru, nebo pomoci textoveho souboru neco.RC, kde napises co a odk…
Jan Fiala 11.06.2006 17:38
Jan Fiala
To je na mňa trochu veľa. Dá sa zapísať aj nejaký príklad na *.RC (uloženie a otvorenie)? Ak si dob…
msx. 11.06.2006 17:47
msx.
Pokud chces data z Resource cist, obvykle ma kazdy typ dat svou API funkci na cteni, napr. LoadIcon(… nový
Jan Fiala 11.06.2006 18:08
Jan Fiala
Dobre, tak to skúsim. To PChar je tam prečo? v príkladoch, čo som sem dal to nič také nie je. nový
msx. 11.06.2006 18:13
msx.
To PChar je tam proto, protoze do API funkci se retezce nepredavaji. Pokud tam posilas promennou, mu… nový
Jan Fiala 11.06.2006 18:47
Jan Fiala
Ešte otázka: Čo je pre obrázok? zvuk -> WAVE program -> EXEFILE obrázok -> ??? iné -> ??? nový
msx. 11.06.2006 18:16
msx.
Zkousel jsi se divat do helpu na funkce, ktere jsem ti napsal ? Tam ty datove typy v resource mas uv… nový
Jan Fiala 11.06.2006 18:49
Jan Fiala
Ja somár som v helpe hľadal priamo: exefile, wave atď. a nič mi nenašlo, potom som to hľadanie vzdal… nový
msx. 11.06.2006 22:49
msx.
Stahni si resource hacker a vyrob si primo RES soubor. Budes to mit mnohem rychleji a bez problemu nový
Jan Fiala 11.06.2006 23:27
Jan Fiala
Za prve necisluj to priamo cislami ale urob si header so symbolmi, ktore budes pouzivat aj v program… nový
MM.. 12.06.2006 00:56
MM..
P.S. tie subory mas v c:\Program Files\Borland\Delphi7\Bin\Sources\_blabla_.bmp ??? Musis mu dat spr… nový
MM.. 12.06.2006 01:00
MM..
A co keby si pouzil miesto "BITMAP" slovicko "RCDATA"... pri BMP, JPG... pri hocijakych obrazkoch po… nový
Intex 12.06.2006 08:41
Intex
Alebo: *.rc flag bitmap flag.bmp krizik bitmap krizik.bmp kvet bitmap kvet.bmp mina bitmap mina.bm… nový
Intex 12.06.2006 08:47
Intex
Mne to nejde skompilovať. nový
msx. 12.06.2006 09:10
msx.
Takže problém s kompiláciou bol kvôli číslam na začiatku názvov súborov. Vyriešené. Ďakujem zúčastne… poslední
msx. 12.06.2006 09:20
msx.

Bud si to udelas pomoci ResourceHackeru, nebo pomoci textoveho souboru neco.RC, kde napises co a odkud budes cerpat a staci jej pridat do projektu. O kompilaci do RES se postaraji Delphi, popr. si to zkompiluj rucne pomoci BRC32.exe (adresar Delphi\BIN)

To je na mňa trochu veľa. Dá sa zapísať aj nejaký príklad na *.RC (uloženie a otvorenie)?

Ak si dobre spomínam, tak nejako takto sa robilo prostredie WinXP v DElphi 6 cez súbor *.manifest. Pokúsim sa to vyhľadať, možno mi to pomôže.

Edit: Tak som našiel, ale zrejme je to niečo iné:
www.pcsvet.cz/art/article.php?id=2383&search=manife st

Edit 2: Vlastne to pridávanie do súboru *.RC to asi vyvetľuje, ale ako k tomu pristupovať, to nie. No teraz mi nie je celkom jasné, ako priradť obázok do TImage, ak mám len smerník na obrázok v pamäti. Z *.RES ako som už pred tým zistil dostanem len smerník na objekt a nič viac.

Pokud chces data z Resource cist, obvykle ma kazdy typ dat svou API funkci na cteni, napr. LoadIcon(), LoadImage(), LoadString(), LoadCursor(), ...

Napr. nacteni bitmapy:

Image.Picture.Bitmap.LoadFromResourceName(HInstance, PChar(AResourceName));

Ja somár som v helpe hľadal priamo: exefile, wave atď. a nič mi nenašlo, potom som to hľadanie vzdal. Totiž, bol som zvyknutý z dôb TP, že v helpe boli aj konštanty a nie len procedúry a funkcie, prípadne typy.

Skúsil som len tak pokusne BITMAP, ale zahlásilo mi toto:

c:\Program Files\Borland\Delphi7\Bin>brcc32 wurmi.rc
Borland Resource Compiler  Version 5.40
Copyright (c) 1990, 1999 Inprise Corporation.  All rights reserved.

Error wurmi.rc 1 3: Not a positive short integer

c:\Program Files\Borland\Delphi7\Bin>

A toto bol vstupný súbor:

0 BITMAP Sources\0-free.bmp
1 BITMAP Sources\1-head.bmp
2 BITMAP Sources\2-body.bmp
3 BITMAP Sources\3-eat.bmp
4 BITMAP Sources\4-poison.bmp
5 BITMAP Sources\5-paling.bmp

Teraz som ho upravil takto:

W0 BITMAP Sources\0-free.bmp
W1 BITMAP Sources\1-head.bmp
W2 BITMAP Sources\2-body.bmp
W3 BITMAP Sources\3-eat.bmp
W4 BITMAP Sources\4-poison.bmp
W5 BITMAP Sources\5-paling.bmp

A dostal som toto:

c:\Program Files\Borland\Delphi7\Bin>brcc32 wurmi.rc
Borland Resource Compiler  Version 5.40
Copyright (c) 1990, 1999 Inprise Corporation.  All rights reserved.

Error wurmi.rc 1 20: Expecting filename

Za prve necisluj to priamo cislami ale urob si header so symbolmi, ktore budes pouzivat aj v programe.
Najlepsie je pouzivat nejaky resource editor (to Borland neobsahuje resource editor?? ::)) pretoze rucne to pisat je na zblbnutie, hlavne ak clovek potrebuje zlozitejsi dialog (musel by si rucne vypisovat vsetky suradnice), alebo menu, apod.

O .rc suboroch najdes kopu informacii cez google (je to univerzalnejsie, pre Win32, nie je to definovane borlandom), napr. zacat mozes tu
http://msdn.microsoft.com/library/default.asp?url=/ library/en-us/tools/tools/about_resource_files.asp
hlavne teda ta asi bude zaujimat toto
http://msdn.microsoft.com/library/default.asp?url=/ library/en-us/tools/tools/resource_definition_state ments.asp

meno bitmapy je bud plna cesta alebo relativna mozno musi zacinat bodkou lomitkom apod. a mala by byt v uvodzovkach. Ak chces cislovat tak skus nezacat od nuly.

Najlepsie urobis ak si pozries priamo help k tomu tvojmu resource compileru ktory pouzivas, aby si vedel ako presne to ma vyzerat.

A co keby si pouzil miesto "BITMAP" slovicko "RCDATA"... pri BMP, JPG... pri hocijakych obrazkoch pouzivam RCDATA... pre mna osobne je to najlepsi typ... pomocou toho si prehravam aj MP3... vies v ktorom programe... :-)

Alebo:

*.rc

flag bitmap flag.bmp
krizik bitmap krizik.bmp
kvet bitmap kvet.bmp
mina bitmap mina.bmp
otaznik bitmap otaznik.bmp
tile bitmap tile.bmp
trava bitmap trava.bmp
ico1 bitmap ico1.bmp
ico1b bitmap ico1b.bmp
ico2 bitmap ico2.bmp
ico2b bitmap ico2b.bmp
ico3 bitmap ico3.bmp
ico3b bitmap ico3b.bmp

Skompilovat ho... a potom v delphi nacitat:

krizik:= TBitmap.Create;
krizik.LoadFromResourceName(HInstance, 'krizik');

flag:= TBitmap.Create;
flag.LoadFromResourceName(HInstance, 'flag');

kvet:= TBitmap.Create;
kvet.LoadFromResourceName(HInstance, 'kvet');

...


edit: samozrejme, ze tie subory musia byt v adresari "/bin" kde je delphi... alebo si vytvor v tom adresari dalsi, kde si naukladas vsetky obrazky a potom zmen aj subor *.rc, kde pridas ten adresar, ktrory si v tom "/bin" vytvoril...

Zpět do poradny Odpovědět na původní otázku Nahoru