Autor Téma: Resource  (Přečteno 2057 krát)

Offline Fala

  • Plnoletý
  • ***
  • Příspěvků: 168
  • Karma: 2
    • Verze Delphi: XE2
    • Software pro poskytování technické podpory
Resource
« kdy: 27-07-2012, 09:17:05 »
V delphi se dá přikompilovat do EXE také resource zřejmě v podobě jakéhokoliv souboru. Mě by zajímalo, jak se s tím potom dá pracovat (jestli jsou na to rozumné komponenty) a jak to jednoduše přikompilovat do EXE.

Co s tím potřebuji vyřešit:
mám v jednom adresáři několik desítek XML souborů, které bych nechtěl jen tak nechat válet u klienta na disku. Jsou pouze Read-only.

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 2309
  • Karma: 102
    • Verze Delphi: D5,D2007, DXE, DXE2 + 2 poslední (Tokyo)
    • O Delphi v češtině
Re:Resource
« Odpověď #1 kdy: 27-07-2012, 09:42:29 »
Ne ze by to neslo, ale nechces to radeji vsechno zazipovat do jednoho souboru a pak to jen pres zip podporu v XE2 nacitat? Samozrejme ten soubor se nemusi jmenovat .zip. Lepsi se ti to bude aktualizovat.
Embarcadero MVP - Czech republic

Offline Fala

  • Plnoletý
  • ***
  • Příspěvků: 168
  • Karma: 2
    • Verze Delphi: XE2
    • Software pro poskytování technické podpory
Re:Resource
« Odpověď #2 kdy: 27-07-2012, 09:54:16 »
já vím, se zipem v XE2 se pracuje parádně, ale nejde tam hodit heslo.

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1412
  • Karma: 34
    • Pepak.net
Re:Resource
« Odpověď #3 kdy: 27-07-2012, 09:57:36 »
Viz TResourceStream. Předáš jméno nebo ID resourcu a pak už se s tím pracuje jako s každým jiným streamem.

Offline Fala

  • Plnoletý
  • ***
  • Příspěvků: 168
  • Karma: 2
    • Verze Delphi: XE2
    • Software pro poskytování technické podpory
Re:Resource
« Odpověď #4 kdy: 27-07-2012, 10:16:51 »
Viz TResourceStream. Předáš jméno nebo ID resourcu a pak už se s tím pracuje jako s každým jiným streamem.
to vypadá dobře, nicméně k dokonalosti bych potřeboval ještě procházet seznam těch souborů.

Druhá věc je ta, jak to do .res dostat jednoduše cca 100 souborů

Offline starous

  • Mladík
  • **
  • Příspěvků: 58
  • Karma: 2
Re:Resource
« Odpověď #5 kdy: 27-07-2012, 10:24:11 »
Přidat si do projektu nový soubor typu RC (myslím, že je to pod txt soubory).

Co řádek, to jeden soubor, v první sloupci bude název, podle kterého to dohledáš v resource, v druhém sloupci typ souboru (dávám XML) a ve třetím sloupci skutečný název souboru.

Zkus na webu pohledat příklady, jak se do resource vkládají obrázky, je to prakticky stejné. Nejsem bohužel teď u toho správného počítače, abych sem dal ukázku.

Offline Fala

  • Plnoletý
  • ***
  • Příspěvků: 168
  • Karma: 2
    • Verze Delphi: XE2
    • Software pro poskytování technické podpory
Re:Resource
« Odpověď #6 kdy: 27-07-2012, 10:49:39 »
Tohle by mohlo řešit Kompilaci a načtení konkrétního souboru. Nicméně nevím, jak získat ten seznam souborů uložených v resource.

Možné řešení by mohlo být, že bych tam měl ten TXT ve kterém by se nacházel seznam názvů, ale to se mi moc nelíbí.

-----------------------------
Load it directly into a TBitmap instead, like you tried:

// Create your resource like this:
// MyResource.rc
SPLASHBKGND BITMAP YourSplashscreen.bmp
Compile it:

C:\YourResFolder\Brcc32 MyResource.rc MyResource.res
or in later versions of Delphi:

{$R MyResource.res MyResource.rc}
Use it:

procedure TForm1.FormCreate(Sender: TObject);
var
  Bmp: TBitmap;
begin
  Bmp := TBitmap.Create;
  try
    Bmp.LoadFromResourceName(MainInstance, 'SPLASHBKGND');
    Image1.Picture.Assign(Bmp);
  finally
    Bmp.Free;
  end;
end;
NOTE: You should use MainInstanceinstead ofHInstance`. The latter is a holdover from Win16; the first is guaranteed to be the executable instead of a library or package.

Offline pepak

  • Guru
  • *****
  • Příspěvků: 1412
  • Karma: 34
    • Pepak.net
Re:Resource
« Odpověď #7 kdy: 27-07-2012, 12:05:41 »
Tohle by mohlo řešit Kompilaci a načtení konkrétního souboru. Nicméně nevím, jak získat ten seznam souborů uložených v resource.
To IMHO normálními prostředky nezískáš. Samozřejmě by šlo zparsovat exáč, najít si resourcy, projít si jejich seznam, nějak poznat, že i-tý resource je ten, který tě zajímá, a uložit si identifikátor. Ale fakt mi není jasné, k čemu by ti to jako mělo být - ty resourcy tam nevzniknou jen tak náhodou, abys o nich nevěděl, už při kompilaci víš seznam resourců, které sis přilinkoval. Takže pokud to děláš nějak strojově (že si necháš vygenerovat .rc soubor na zkompilování), tak si uprav ten svůj generátor, aby ti rovnou někde stranou vygeneroval i konstantní pole.

Offline leonell

  • Mladík
  • **
  • Příspěvků: 99
  • Karma: 3
Re:Resource
« Odpověď #8 kdy: 27-07-2012, 12:12:45 »
Koukni tady:
http://www.swissdelphicenter.ch/torry/showcode.php?id=1710
Ale jinak mi to taky přijde zbytečný vypisovat si něco, co si tam sám organizuješ.