CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - Dodawanie resourców do projektu w BCB 6

Dodawanie resourców do projektu w BCB 6

dział ogólny

Dodawanie resourców do projektu w BCB 6

Nowy postprzez Arnold_S » poniedziałek, 13 czerwca 2016, 22:00

Witam!
Na wstępie chciałbym krótko nadmienić, że od dość dawna jestem czytelnikiem strony oraz forum. Składam wielki szacunek i podziękowanie za świetne opisy i tutoriale przy użyciu środowiska BCB. Dobra dość wazeliny :] przejdźmy do meritum.
Jestem początkującym pasjonatem C++ i po tym jak skończyłem się bawić strukturalnie w konsoli, spróbowałem stworzyć jakiś mały programik wyglądający bardziej jak "pod łindołsem". DO tej pory wszystkie bitmapy dla przycisków oraz inne zasoby mojego programu, dołączałem z utworzonego w tym celu katalogu (odpowiednią funkcją). Konsekwencje były takie, że wraz z przeniesieniem programu na inny komputer, musiałem przenieść katalogi z grafiką i dźwiękami. Zacząłem szukać sposobu na dołączanie do projektu zasobów tak aby były zawarte w pliku wykonywalnym programu. Znalazłem kilka opisów po angielsku i niezbyt dokładnych po polsku. Jedni piszą o skompilowaniu pliku *.rc do pliku *.res, inni podają przykłady w których tworzą plik.rc oraz plik nagłówkowy plik.h oraz inkludują go w programie. Mi nie specjalnie to działa. Wiem, że popełniam gdzieś błąd ale gotująca krew zaczyna wylewać mi się uszami i nie pozwala mi myśleć. Dotarłem również do opisu na stronie Cyfrowy Baron ale przykład odnosi się do BCB 4.0. Poszperałem też w moim BCB 6.0, w Image Editorze i widzę, że tam można otwierać i zapisywać pliki w formacie *.res.

Czy po dołączeniu do projektu pliku res (i odpowiednim skompilowaniu) wszystkie zasoby staną się integralną częścią pliku exe?
Bardzo proszę o pomoc...a szczerzej mówiąc, łopatologiczne wytłumaczenie procedury dołączania tego pliku res.
Proszę nie odsyłajcie mnie do google :]

Jestem posiadaczem BCB 6.0 na Win7 32b.
Avatar użytkownika
Arnold_S
Homos antropiczny
Homos antropiczny
 
Posty: 58
Dołączył(a): niedziela, 12 czerwca 2016, 23:22
Podziękował : 15
Otrzymał podziękowań: 0
System operacyjny: Win7 64b
Kompilator: C++ Builder 6, Rad Studio XE2
Gadu Gadu: 0
    Windows 7Firefox

Re: Dodawanie resourców do projektu w BCB 6

Nowy postprzez Mironas » wtorek, 14 czerwca 2016, 10:15

Opisy na stronie Cyfrowy Baron tak samo będą działały pod BCB 6. Napisz z czym konkretnie masz problem.
Do edycji plików RES możesz też użyć innych programów, np.: XN Resource Editor.
Avatar użytkownika
Mironas
Programista I
Programista I
 
Posty: 427
Dołączył(a): poniedziałek, 2 stycznia 2012, 19:02
Podziękował : 17
Otrzymał podziękowań: 61
System operacyjny: Windows 10
Kompilator: C++Builder 10.3 Rio
TMS Components Pack
Gadu Gadu: 0
    Windows XPChrome

Re: Dodawanie resourców do projektu w BCB 6

Nowy postprzez Cyfrowy Baron » wtorek, 14 czerwca 2016, 14:27

Arnold_S napisał(a):Czy po dołączeniu do projektu pliku res (i odpowiednim skompilowaniu) wszystkie zasoby staną się integralną częścią pliku exe?
Bardzo proszę o pomoc...a szczerzej mówiąc, łopatologiczne wytłumaczenie procedury dołączania tego pliku res..


Tak plik zasobów RES stanie się integralną częścią aplikacji. Można jednak wciąż edytować takie zasoby np. za pomocą programu "Resource Hacker".

Tworzenie pliku z zasobami i zapisywanie zasobów do pliku.
Edycja zasobów (modyfikacja, usuwanie, wstawianie).
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows 7Firefox

Re: Dodawanie resourców do projektu w BCB 6

Nowy postprzez Arnold_S » wtorek, 14 czerwca 2016, 23:48

Dobra...jest plik zasoby.res, wszystko pięknie. Dodałem go do projektu (Shift+F11).
Dołączyłem definicję funkcji "SaveResourceToFile" do unit1.cpp

Utworzyłem na formatce SpeedButton1. Do tej pory na zdarzenie OnClick wywoływałem funkcję:
SpeedButton1->Glyph->LoadFromFile("on.bmp");

Teraz jak wydobyć po nowemu on.bmp z pliku zasobów aby ustawić go jako Glyph przycisku?
I jeszcze jedno głupie pytanie: dlaczego funkcja wydobywająca cokolwiek, nosi nazwę "SaveToFile"?
Patrząc na opis wydobywania z pliku tych zasobów wszystko jest jasne...ale serio nie wiem gdzie jestem. heh
Avatar użytkownika
Arnold_S
Homos antropiczny
Homos antropiczny
 
Posty: 58
Dołączył(a): niedziela, 12 czerwca 2016, 23:22
Podziękował : 15
Otrzymał podziękowań: 0
System operacyjny: Win7 64b
Kompilator: C++ Builder 6, Rad Studio XE2
Gadu Gadu: 0
    Windows 7Firefox

Re: Dodawanie resourców do projektu w BCB 6

Nowy postprzez Mironas » środa, 15 czerwca 2016, 09:19

Jeśli masz bitmapę w pliku zasobów to najlepiej wczytać ją bezpośrednio (z zasobów do SpeedButton1) z pominięciem pliku na dysku:
KOD cpp:     UKRYJ  
  // Wczytanie bitmapy z pliku zasobow do 'Image1'
  SpeedButton1->Glyph->LoadFromResourceName(0, "NAZWAZASOBU");
 

Funkcja "SaveResourceToFile" jest w tym przypadku zbędna. Ona służy do innego celu.

Za ten post autor Mironas otrzymał podziękowanie od:
Arnold_S
Avatar użytkownika
Mironas
Programista I
Programista I
 
Posty: 427
Dołączył(a): poniedziałek, 2 stycznia 2012, 19:02
Podziękował : 17
Otrzymał podziękowań: 61
System operacyjny: Windows 10
Kompilator: C++Builder 10.3 Rio
TMS Components Pack
Gadu Gadu: 0
    Windows XPChrome

Re: Dodawanie resourców do projektu w BCB 6

Nowy postprzez Arnold_S » środa, 15 czerwca 2016, 19:03

Panowie wszystko pięknie działa. Dodałem również WAV-a do zasobu i też śmiga.
Szkoda tylko, że BMPy muszą być w 256 kolorach, inaczej brcc32 krzyczy. Czy da się to jakoś ominąć?

Do czego służy ta funkcja SaveToFile?
Avatar użytkownika
Arnold_S
Homos antropiczny
Homos antropiczny
 
Posty: 58
Dołączył(a): niedziela, 12 czerwca 2016, 23:22
Podziękował : 15
Otrzymał podziękowań: 0
System operacyjny: Win7 64b
Kompilator: C++ Builder 6, Rad Studio XE2
Gadu Gadu: 0
    Windows 7Firefox

Re: Dodawanie resourców do projektu w BCB 6

Nowy postprzez Cyfrowy Baron » czwartek, 16 czerwca 2016, 04:56

Jak nazwa wskazuje SaveToFile służy do zapisywania do pliku. Bitmapy wcale nie muszą być w 256 kolorach, może po prostu źle tworzysz bitmapę. Bitmapa musi być w 8 bitach na kanał -> czyli 3x8=24 -> czyli 24 bitowa.

Za ten post autor Cyfrowy Baron otrzymał podziękowanie od:
Arnold_S
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows 7Firefox

Re: Dodawanie resourców do projektu w BCB 6

Nowy postprzez Arnold_S » poniedziałek, 20 czerwca 2016, 21:56

Wszystko się zgadza. Nie była 24 bitowa.
Avatar użytkownika
Arnold_S
Homos antropiczny
Homos antropiczny
 
Posty: 58
Dołączył(a): niedziela, 12 czerwca 2016, 23:22
Podziękował : 15
Otrzymał podziękowań: 0
System operacyjny: Win7 64b
Kompilator: C++ Builder 6, Rad Studio XE2
Gadu Gadu: 0
    Windows 7Firefox

Re: Dodawanie resourców do projektu w BCB 6

Nowy postprzez Arnold_S » czwartek, 31 sierpnia 2017, 23:31

Witam!
Mam kolejną zagwozdkę z resourcami. (Korzystam z C++B XE2)
Otóż w moim programie chciałbym pobrać (wylosować) z pliku (na przykład tekstowego), kilka wybranych wyrazów (stringów).
Niestety taki plik musiałbym dołączać do mojej aplikacji.
- Czy da się dołączyć go do pliku *.rc, tak jak wyżej opisane bitmapy lub wav-y?
- Jeśli tak to jak wyglądałaby linijka w tym pliku? Na przykład:
KOD cpp:     UKRYJ  
TLO_FORMY               BITMAP          "img/TLO_FORMY.bmp"
PLIK_Z_WYRAZAMI         /*co tutaj?*/   "teksty/jakies_teksty.txt"

- Jeśli to poprawna forma, to jak wylosować z takiego pliku jakiś wyraz? Załóżmy, że są oddzielone przecinkami.

W aplikacjach konsolowych korzystałem z operacji we/wy, np.:
KOD cpp:     UKRYJ  
#include <iostream>
using namespace std;
#include <fstream>
#include <string>

int main()
{
string nazwa_pliku = "jakies_teksty.txt";
ifstream czyt;
czyt.open(nazwa_pliku.c_str(), ios::in);
// dalsze operacje czytania zawartosci tego pliku
czyt.close();
}
 


Jeśli udałoby mi się umieścić zawartość takiego pliku tekstowego w pliku *.res, to jak się do niego odnieść poprzez operacje we/wy?
Jak napisałem na początku, chciałbym wylosować kilka wyrazów, które są oddzielone przecinkiem.
Avatar użytkownika
Arnold_S
Homos antropiczny
Homos antropiczny
 
Posty: 58
Dołączył(a): niedziela, 12 czerwca 2016, 23:22
Podziękował : 15
Otrzymał podziękowań: 0
System operacyjny: Win7 64b
Kompilator: C++ Builder 6, Rad Studio XE2
Gadu Gadu: 0
    Windows 7Firefox

Re: Dodawanie resourców do projektu w BCB 6

Nowy postprzez Mironas » piątek, 1 września 2017, 09:10

Opis jak umieszczać pliki tekstowe w zasobach i jak je wczytywać masz tutaj.
Avatar użytkownika
Mironas
Programista I
Programista I
 
Posty: 427
Dołączył(a): poniedziałek, 2 stycznia 2012, 19:02
Podziękował : 17
Otrzymał podziękowań: 61
System operacyjny: Windows 10
Kompilator: C++Builder 10.3 Rio
TMS Components Pack
Gadu Gadu: 0
    WindowsChrome


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 10 gości

cron