Toon posts:

[vb] meerdere bestanden in één file-pack

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben in VB een progje aan het maken, het probleem is alleen dat het erg veel files heeft (vooral graphics e.d.).

Deze wil ik graag in 1 bestand stoppen, maar wel een apart bestand, wat veel makkelijk aan te passen is e.d. :P

De bestanden worden voornamelijk met het LoadPicture commando aangeroepen. Maar ze moeten natuurlijk direct uitgelezen kunnen worden uit dat "package" bestand, niet dan je ze eerst moet extracten naar de hd en dan inlezen, wat enorm traag gaat.

Heeft iemand suggesties?

Bedankt! :)

Verwijderd

De meeste spellen gebruiken gewoon zip-files voor dit, probeer eens een zip-dll te gebruiken.

  • The - DDD
  • Registratie: Januari 2000
  • Laatst online: 03-09 16:40
D'r zijn vast standaard dingen te vinden die met zip files kunnen werken. Pleer vervolgens je bestanden ongecomprimeerd in die zip file.

Of je zou je eigen file packer kunnen maken. Een progje wat alle bestanden bij elkaar raapt en achter elkaar in een binair bestand zet. Er ondertussen natuurlijk wel een header voor schrijvend. Zodat je weet waar elk bestand begint en eindigt. Deze catalogus kun je vervolgens in een apart bestand bij sluiten of integreren met je datafile.

Verwijderd

Maak een dll met alleen resources?

  • The - DDD
  • Registratie: Januari 2000
  • Laatst online: 03-09 16:40
Op zaterdag 24 november 2001 21:42 schreef Hdez het volgende:
De meeste spellen gebruiken gewoon zip-files voor dit, probeer eens een zip-dll te gebruiken.
Sleep een .pak file van Quake maar is in Winzip.. :) Werkt perfect.

Verwijderd

Topicstarter
Precies wat ik bedoel, zo'n pak file. Zip zonder compressie is idd een prima. Het probleem is het direct inlezen van files uit zo'n zip file ipv LoadPicture(blaat.jpg) LoadPicture(blaat.jpg from blaat.pak) oid :)

Als ik de gewone zip dll's e.d. gebruik moet ik ze eerst extracten naar de HD voor ik ze kan inlezen.

  • Onno
  • Registratie: Juni 1999
  • Niet online
Op zaterdag 24 november 2001 21:45 schreef The - DDD het volgende:
Sleep een .pak file van Quake maar is in Winzip.. :) Werkt perfect.
Een .pk3 van Quake III bedoel je. Quake gebruikte nog gewoon een eigen formaat, Quake II idem. :)

Verwijderd

Topicstarter
Ik heb even zo'n pk3 bekeken, t is precies wat ik, nu nog in VB :)

Verwijderd

Topicstarter
Gerco is hier ook mee bezig geweest zo te zien:[topic=192718/1/25]
Encrypten is in mijn situatie alleen niet nodig.

Eigenlijk is het systeem niet het probleem (gewoon ZIP), maar het direct uitlezen.

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 16-09 23:59
Op zaterdag 24 november 2001 21:45 schreef Yarvieh het volgende:
Maak een dll met alleen resources?
Volgens mij zagen jullie deze over het hoofd....

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Verwijderd

Topicstarter
Ik denk dat ik nu wat code heb om plaatjes direct uit een recource-only dll te halen. Maar nu nog die resource only DLL bouwen, in VB kan je alleen ActiveX DLL's maken, dat zou ik dus in MS C++ moeten doen denk ik :?

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 14-09 17:42

Gerco

Professional Newbie

Op zaterdag 24 november 2001 23:55 schreef dev het volgende:
Ik denk dat ik nu wat code heb om plaatjes direct uit een recource-only dll te halen. Maar nu nog die resource only DLL bouwen, in VB kan je alleen ActiveX DLL's maken, dat zou ik dus in MS C++ moeten doen denk ik :?
Waarschijnlijk wel. Is niet zo moeilijk lijkt me. Start een Win32 dll project en zet er geen code in. Open de resource editor en leef je uit. Build en presto!

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Verwijderd

Op zaterdag 24 november 2001 23:55 schreef dev het volgende:
Ik denk dat ik nu wat code heb om plaatjes direct uit een recource-only dll te halen. Maar nu nog die resource only DLL bouwen, in VB kan je alleen ActiveX DLL's maken, dat zou ik dus in MS C++ moeten doen denk ik :?
Maakt toch niet uit, gewoon activeX dll maken, Bij de addin manager de Resource editor laden, met de resource editor je bitmaps adden, compileren. *klaar* .Goed je hebt wel een klein beetje overhead van 'n nuteloos activeX component maar je hoeft niet met VC of iets wat je niet gewent bent aan de gang en das ook wel weer wat waard toch?!

Verwijderd

Topicstarter
T zijn geen bitmaps maar jpeg/gif e.d., dus m moet even kijken hoe ik die direct kan laden. Om m ff in C++ te maken is niet zo'n probleem, k kan er wel een beetje mee overweg :)

Verwijderd

c++ is ook niet nodig hoor, gewoon met een resource editor naar keus aan de gang. en daarna linken met:
code:
1
2
rc blaat.rc /v
link blaat.res /noentry /dll

Verwijderd

Topicstarter
Klopt, nu even kijken hoe ik direct JPEG/GIF bestanden uit die DLL kan plukken, want standaard doet alleen BMP's t :)

[edit]
Weer wat nieuwe code gevonden, een sample lijkt t te doen :P Morgen ga ik weer ns verder :)

  • The - DDD
  • Registratie: Januari 2000
  • Laatst online: 03-09 16:40
Op zaterdag 24 november 2001 23:55 schreef dev het volgende:
Ik denk dat ik nu wat code heb om plaatjes direct uit een recource-only dll te halen. Maar nu nog die resource only DLL bouwen, in VB kan je alleen ActiveX DLL's maken, dat zou ik dus in MS C++ moeten doen denk ik :?
Nadeel hiervan is zodra je de DLL in je app linked, dat het hele ding dat gelijk in zijn geheel in het geheugen staat. 't Is de vraag of je dat wil hebben.

Verwijderd

Topicstarter
Worden ook alle resources uit een DLL in het geheugen gezet als je een DLL laad? Lijkt me vreemd.

Dat moet ik echt niet hebben, de graphics moeten alleen in het geheugen geplaatst worden als ze gebruikt worden natuurlijk.

Verwijderd

Je laad 'm gewoon als je 'm nodig hebt dmv loadlibrary, zoekt je resource dmv find en loadresource en daarna unload je 'm weer met free library. Op het moment dat je een load library doet word de dll in je eigen process gemapped maar pas op het moment dat je daadwerkelijk iets aanspeekt wordt het gedeeldte wat je nodig hebt in blokjes van 4k het fysieke geheugen in gepaged.

Verwijderd

Topicstarter
Dat is precies hoe ik het doe. Na het opvragen van een plaatje doet ik n FreeLibrary. Dus alleen het plaatje wat ik nodig heb komt dan in t geheugen?

Verwijderd

Topicstarter
K heb nu helaas een ander probleem :'(

Het direct uit de DLL halen van JPEG/GIF bestanden, de enige mogelijkheid die ik tot nu toe gevonden heb is het eerst dumpen in een temp file en dan met LoadPicture inladen :( Bitmaps kunnen gewoon direct natuurlijk, maar JPEG/GIF bestanden niet.

Het enige wat ik kan vinden is dit:
http://www.kolumbus.fi/eevkop/vrk.htm
Maar dat gaat weer geld kosten, en t is gewoon voor een freeware progje...

Verwijderd

Topicstarter
Thanx! Zier t er leuk uit, via LoadResData de images direct laden, ik denk dat dit de oplossing is :)

[edit]
Wat aan het testen geweest, lijkt idd goed te zijn :) Nu ga ik het DLL-lees systeem aan dit systeem koppelen, zodat ik de resources ook uit DLL's kan halen.
Pagina: 1