Trzy pliki w jednym zasobie RES

0

Witam,
Mam taki o to problem mam trzy pliczki z których chciałbym stworzyć zasób RES. A obsługuje to w delphi mniej więcej tak:

  //pliki do wyplucia
  FileNames:=TStringList.Create;
  FileNames.Add('\jakisplik1.js');
  FileNames.Add('\jakisplik2.js');
  FileNames.Add('\jakisplik3.js');

 // wypluwanie plików jakisplik1.js itd.
  for i := 0 to FileNames.Count-1  do
  begin
    RS:=TResourceStream.Create(hInstance, UpperCase(ExtractFileName(FileNames[i])), 'CHR');
    RS.SaveToFile(GetSpecialFolder(0,38)+ext_name+LowerCase(FileNames[i]));
    RS.Free;
  end;

Akurat to działa dobrze natomiast mam problem teraz z tworzeniem pliku RES który będzie przechowywał te 3 pliki z StringList.
Mam nadzieje że zrozumiecie o co mi chodzi, jeżeli jednak ktoś nie zrozumiał to proszę zadawać pytania które pomogą w zrozumieniu tego co chce zrobić w delphi bo niestety nie wiem jak dokładniej to wytłumaczyć.

0

Jest jeszcze konstruktor CreateFromID i jego polecam użyć. Wtedy wpisy w pliku *.rc mogą wyglądać tak:

#1  rcdata  "CHT\cht_001.txt"
#2  rcdata  "CHT\cht_002.txt"
#3  rcdata  "CHT\cht_003.txt"
//...
#31337  rcdata  "CHT\gamelist.txt"

Konstruktor taki i sposób ten ma też zaletę opisaną w Helpie. Zajmuje mniej pamięci. Poza tym powyższe wpisy pochodzą z prostej "bazy cheatów" do gier, którą kiedyś popełniłem jeszcze na bazie plików znalezionych w sieci. Pisałem to daaawnooo temu pod Delphi 3.

Użycie takiego sposobu przechowywania zasobów było tutaj kluczowe, bo kiedy nazwałem je na przykład zzz1 i tak dalej. To mając ich kilka tysięcy tworzony był plik, który nie podobał się Windowsowi - za pewne ze względu na organizacje zaosobów. I system nie był w stanie go w ogóle uruchomić, zwracając błąd.

0

Akurat program mi działa bez zarzutów jakiś czas temu robiłem tego RES ale teraz aktualnie nie pamiętam jak to zrobiłem.

To co napisałeś :
#1 rcdata "CHT\cht_001.txt"
#2 rcdata "CHT\cht_002.txt"
#3 rcdata "CHT\cht_003.txt"

przypadkiem nie utworzy 3 plików RES a nie jednego ?

1

Niebardzo rozumiem w takim razie co chcesz osiągnąć. Nie wiem jak tworzysz zasoby. Gdyż ja wpisuje wszystko w pliku *.rc i tworzę go batchem poprzez brcc32.exe. I dlatego podałem Tobie przykładowe wpisy jakie podajesz w jednym, konkretnym pliku *.rc. W tym przypadku, to co zacytowałeś utworzy zasób z trzema wpisami o "nazwach numerowych". Także na pewno nie 3 pliki zasobów. Nie wiem skąd taki wniosek.

0

Dobra działa dzięki za pomoc. Źle wpisałem w BAT.

0

@rioma1990 - wyjaśnij dokładniej o co się rozchodzi, bo z powyższego posta nic nie można zrozumieć...

Nie wiem czy wiesz, ale do obsługi zasobów możesz wykorzystać klasę TResourceStream, która sama wyciągnie plik z zasobów aplikacji (czy biblioteki DLL) bez jakichś kombinacji; Ale do końca nie rozumiem o co chodzi, więc doprecyzuj pytanie.

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