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.
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.
Ahoj, nehledáš něco podobného:
Tipy_a_triky.htm
je to jen na EXE. Ale příklad na to jak dostat soubor do .res to je.
Z tohto by som dokázal vytvoriť súbor s obrázkom na disku a ten vložiť do TImage. Dá sa to ešte takým spôsobom otvoriť, že zo smerníka to vložím priamo do TImage? Na zvuky je na to:
Na obrázok čo použiť? BTW, bude to, čo dostanem zo smerníka pri použití *.RC kompatibilné s tým, čo by som dostal, keby to načítam zo súboru na disku? Viď uvedený príklad.
Edit:
Pokud chces data z Resource cist, obvykle ma kazdy typ dat svou API funkci na cteni, napr. LoadIcon(), LoadImage(), LoadString(), LoadCursor(), ...
Napr. nacteni bitmapy:
Dobre, tak to skúsim. To PChar je tam prečo? v príkladoch, čo som sem dal to nič také nie je.
To PChar je tam proto, protoze do API funkci se retezce nepredavaji. Pokud tam posilas promennou, musis ji pretypovat na PChar, pokud tam posles primo retezec, Delhi si to pretypuje za tebe.
Ešte otázka: Čo je pre obrázok?
zvuk -> WAVE
program -> EXEFILE
obrázok -> ???
iné -> ???
Zkousel jsi se divat do helpu na funkce, ktere jsem ti napsal ?
Tam ty datove typy v resource mas uvedeny:
BITMAP
CURSOR
ICON
Jinak obecne je to DATA
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:
A toto bol vstupný súbor:
Teraz som ho upravil takto:
A dostal som toto:
Stahni si resource hacker a vyrob si primo RES soubor. Budes to mit mnohem rychleji a bez problemu
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.
P.S. tie subory mas v
c:\Program Files\Borland\Delphi7\Bin\Sources\_blabla_.bmp ???
Musis mu dat spravnu cestu na tie subory uz pri kompilacii toho .rc suboru, vtedy sa tie subory nacitaju a spoja do resources.
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
Skompilovat ho... a potom v delphi nacitat:
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...
Mne to nejde skompilovať.
Takže problém s kompiláciou bol kvôli číslam na začiatku názvov súborov. Vyriešené. Ďakujem zúčastnením za pomoc.