CYFROWY BARON • PROGRAMOWANIE • Zobacz wątek - Jak dołączyć obrazy do pliku .exe

Jak dołączyć obrazy do pliku .exe

dział ogólny

Jak dołączyć obrazy do pliku .exe

Nowy postprzez gregory » sobota, 4 grudnia 2010, 16:58

Witam.
Czy w builderze jest możliwość aby dołączyć pliki obrazów (.jpg) do głównego pliku .exe z programem? Chodzi mi abym nie musiał ładować plików z dysku, a program był jakby przenośny. Jeśli tak to w jaki sposób potem przypisać dane pliki do komponentu TImage? Proszę o pomoc.
Avatar użytkownika
gregory
Bladawiec
Bladawiec
 
Posty: 26
Dołączył(a): środa, 17 lutego 2010, 17:36
Podziękował : 8
Otrzymał podziękowań: 0
System operacyjny: Windows 7
Kompilator: C++ Builder
Gadu Gadu: 0
    Windows 7Firefox

Re: Jak dołączyć obrazy do pliku .exe

Nowy postprzez Cyfrowy Baron » sobota, 4 grudnia 2010, 18:22

Chcesz umieszczać pliki w zasobach programu. Jest na to kilak sposobów. Umieszczanie w zasobach i wczytywanie plików z zasobów opisałem w serwisie Cyfrowy Baron w dziale: porady -> grafika -> Umieszczanie grafiki w formacie JPEG w zasobach programu.

Opisana tam metoda jest przestarzała, gdyż dotyczyła środowiska C++Builder 4. Przestarzały jest sposób tworzenia plików zasobu. W nowszej wersji wystarczy za pomocą notatnika utworzyć plik tekstowy *.RC i poprzez menu Project -> Add to Project włączyć taki plik w zasoby programu.
Plik zasobów, dajmy na to zasoby.rc może mieć taką postać:


ID_JPEG RCDATA "IMAGE1.JPG"




gdzie ID_JPEG to nazwa dowolna jednowyrazowa zawierająca tylko liczny i znaki języka angielskiego. Po tej nazwie program identyfikuje zasób. RCDATA to typ zasobów, ten tym tyczy się wszelkiego rodzaju plików, a nie tylko plików graficznych. IMAGE1.JPG - to nazwa pliku dołączanego do zasobów. Jeżeli plik znajduje się w tym samym katalogu co plik zasobów to wystarczy podać tylko nazwę tego pliku, w przeciwnym razie trzeba podać całą ścieżkę dostępu do pliku.
Co się zaś tyczy wczytywania plików z zasobów, to tutaj postępuje się tak jak opisałem w poradzie.




Polecam również porady:

Różne -> Tworzenie pliku z zasobami i zapisywanie zasobów do pliku.
Różne -> Tworzenie tablicy łańcuchów znaków i umieszczenie jej w zasobach programu.
Różne -> Umieszczanie plików tekstowych w zasobach programu.
Różne -> Umieszczanie plików AVI w zasobach programu.
Audio - Video -> Umieszczanie plików wav w zasobach programu.
Grafika -> Umieszczanie bitmapy w zasobach programu.
Różne -> Wygląd kontrolek w Windows XP. Jak umieścić manifest w zasobach programu.
Różne -> Umieszczanie kursorów (*.cur, *.ani) w zasobach programu.
Różne -> Umieszczanie programu w programie, czyli coś w rodzaju instalatora.

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

Re: Jak dołączyć obrazy do pliku .exe

Nowy postprzez gregory » czwartek, 9 grudnia 2010, 17:45

Dzięki za pomoc. Teraz mam pytanie z innej beczki ale nie będę już zakładać nowego tematu. Mam napisać taki jakby system ekspertowy. Program na podstawie wybranych składników z pliku ma określić potrawę/y które da się z nich przyrządzić. Plik ma mieć taką postać:
Potrawa1:
skladnik1
skladnik2
skladnik3
Potrawa2:
skladnik1
skladnik2
Potrawa3:
... itd.

Tworzę dynamicznie w programie checkboxy w zależności od ilości składników. Nie wiem natomiast jak sprawdzić czy z danych składników da się zrobić potrawę, tj aby po wybraniu danych pozycji program wskazało potrawę np nr3, lub też po zaznaczeniu wielu pozycji wskazał potrawy, które da się przyrządzić. Na początku myślałem by to zrobić ifami ale jeśli dodam kolejna potrawę i składniki do pliku to program będzie bezużyteczny itd. Mam nadzieję że napisałem zrozumiale. Proszę o pomoc.
Avatar użytkownika
gregory
Bladawiec
Bladawiec
 
Posty: 26
Dołączył(a): środa, 17 lutego 2010, 17:36
Podziękował : 8
Otrzymał podziękowań: 0
System operacyjny: Windows 7
Kompilator: C++ Builder
Gadu Gadu: 0
    Windows 7Firefox

Re: Jak dołączyć obrazy do pliku .exe

Nowy postprzez Cyfrowy Baron » czwartek, 9 grudnia 2010, 19:32

Plik ma mieć taką postać:


Bzdura! Plik musi mieć taka postać by dało się przeszukiwać bazę danych. Konstrukcja pliku to sprawa pierwszorzędna, więc nie można sobie wymyślić, że plik ma taką konstrukcję, a potem szukać sposobu na obsługę pliku. Plik musi oczywiście zawierać taki dane, czyli: nazwa potrawy musi być powiązana z surowcami.

Tworzę dynamicznie w programie checkboxy w zależności od ilości składników.


Pola wyboru typu TCheckBox zupełnie się do takiego celu nie nadają, ze względu na dużą liczbę potraw i surowców. Należy posłużyć się listami.

Może jutro zrobię jakiś przykład.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4731
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 445
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Jak dołączyć obrazy do pliku .exe

Nowy postprzez gregory » czwartek, 9 grudnia 2010, 19:54

No rzeczywiście przesadziłem narzucając jakąś daną strukturę pliku. W każdym razie dobrze, że udało Ci się zrozumieć to co napisałem, a wydawało mi się że może niedokładnie opisałem ogólną ideę.
czyli: nazwa potrawy musi być powiązana z surowcami.

No właśnie, z tym głównie mam problem. Potrafił bym wczytać składniki z pliku, ale nie mam pomysłu jak później zidentyfikować potrawę na ich podstawie, a długo nad tym myślałem i dalej mam pustkę w głowie. Bardzo prosiłbym o jakiś szczegółowy przykład, oczywiście jeśli jest taka możliwość.
Avatar użytkownika
gregory
Bladawiec
Bladawiec
 
Posty: 26
Dołączył(a): środa, 17 lutego 2010, 17:36
Podziękował : 8
Otrzymał podziękowań: 0
System operacyjny: Windows 7
Kompilator: C++ Builder
Gadu Gadu: 0
    Windows 7Firefox

Program do przepisów kulinarnych

Nowy postprzez Cyfrowy Baron » piątek, 10 grudnia 2010, 14:11

Problem jest trochę złożony, więc nie będę tutaj przytaczał kodu, gdyż to nic by nie dało bez szczegółowych wyjaśnień, a tego robić mi się nie chce.
Tak na szybkiego - godzina pracy - napisałem prosty program, który robi to co chciałeś. Program posiada również dodatkowe okno służące do dodawania nowych potraw i edytowania istniejących. Bazę danych programu zbudowałem na pliku typu *.INI. W przykładzie jest to plik Potrawy.txt. Zostawiłem mu rozszerzenie pliku tekstowego, gdyż plik INI to również plik tekstowy, a rozszerzenie nie ma znaczenia i jest dowolne.

Ktoś mógłby zapytać, po co zadałem sobie tyle trudu, by napisać ten program. Zrobiłem to by nie wyjść z wprawy, a program jest prosty i nie wymagał wiele pracy. Wymaga dopracowania, ale tego to już nie chciało mi się robić.



Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.

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

Re: Jak dołączyć obrazy do pliku .exe

Nowy postprzez gregory » piątek, 10 grudnia 2010, 15:03

Wielkie dzięki za program. Pewnie tego nie napisałem, ale program ma umożliwiać zaznaczenie wielu składników jednocześnie (stąd wcześniej chciałem zrobić to w checkboxach), i potrawa bądź potrawy mają się pokazać tylko jeśli odpowiednie składniki są zaznaczone, w przeciwnym wypadku powinna wyświetlić się informacja typu nie wybrałeś odpowiednich składników czy coś w ten deseń,(np po zaznaczeniu wszystkich składników powinny się ukazać wszystkie potrawy). Mam nadzieje, że teraz napisałem zrozumiale. Przeanalizuje ten kod i może akurat uda mi się go przerobić.
Avatar użytkownika
gregory
Bladawiec
Bladawiec
 
Posty: 26
Dołączył(a): środa, 17 lutego 2010, 17:36
Podziękował : 8
Otrzymał podziękowań: 0
System operacyjny: Windows 7
Kompilator: C++ Builder
Gadu Gadu: 0
    Windows 7Firefox

Re: Jak dołączyć obrazy do pliku .exe

Nowy postprzez Cyfrowy Baron » piątek, 10 grudnia 2010, 17:08

Dalej to już sam sobie radź, w programie masz wszystko co potrzebne, a zamiast wielu CheckBox'ów użyj listy typu TListBox z CheckBox'ami.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4731
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 445
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox

Re: Jak dołączyć obrazy do pliku .exe

Nowy postprzez gregory » sobota, 18 grudnia 2010, 20:52

Wczoraj zacząłem dokańczać swój program. Niestety mam błąd, z którym nie potrafię się uporać. Mianowicie mam taki kod:
KOD cpp:     UKRYJ  
for(int i = 0; i < CheckListBox1->Count; i++)
        {
                if (CheckListBox1->Checked[i])
                {
                        listsklad->Add(CheckListBox1->Items->Strings[i]);
                        ShowMessage(listsklad->Strings[i]);                 // tu jest błąd
                }
        }
        ListBox1->Items->Assign( SetDish() );

Metoda sprawdza, który element na liście CheckListBox jest zaznaczony i dodaje go do listy TStringList. Niestety podczas próby wyświetlenia elementów załadowanych do listy program się wywala z błędem: List index out of bounds. Nie wiem o co chodzi. Czy elementy nie są dodawane do listy?
Avatar użytkownika
gregory
Bladawiec
Bladawiec
 
Posty: 26
Dołączył(a): środa, 17 lutego 2010, 17:36
Podziękował : 8
Otrzymał podziękowań: 0
System operacyjny: Windows 7
Kompilator: C++ Builder
Gadu Gadu: 0
    Windows 7Firefox

Re: Jak dołączyć obrazy do pliku .exe

Nowy postprzez Cyfrowy Baron » sobota, 18 grudnia 2010, 21:46

List index out of bounds.


To znaczy, że czytasz poza listą, czyli lista ma np. 10 elementów licząc 0-9, a ty próbujesz czytać element 11, czyli index 10, który nie istnieje.

Problem w tym, że do listy dodajesz tylko elementy zaznaczone w CheckListBox, ale z listy listsklad próbujesz czytać indeks o numerze i, a przecież i to całkowita wartość elementów na liście CheckListBox, a nie na liście listsklad. Co najwyżej możesz to zrobić tak:

KOD cpp:     UKRYJ  
for(int i = 0; i < CheckListBox1->Count; i++)
{
    if (CheckListBox1->Checked[i])
    {
       listsklad->Add(CheckListBox1->Items->Strings[i]);
       ShowMessage( listsklad->Strings[ listsklad->Count - 1 ] );
    }
}
        ListBox1->Items->Assign( SetDish() );
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4731
Dołączył(a): niedziela, 13 lipca 2008, 15:17
Podziękował : 12
Otrzymał podziękowań: 445
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    Windows XPFirefox


  • 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 1 gość

cron