Resourcen (ini,jpg,etc.) mit kompilieren



  • Servus Folks,

    ich hab in meinem aktuellen Projekt ein INI File in welchen verschiedene Farbcodierungen in HEX-Darstellung enthalten sind. Wie z.B. steelblue3 79,148,205 4f94cd .

    Wenn ich das Binary nun weiterreichen möchte, muß ich immer dieses INI File mitgeben... kann ich das nicht irgendwie im Executable einbetten ?

    Gruß Winn

    P.S.: Meine IDE ist Visual Studio .NET 2003



  • Hi, also du kannst beliebige Dateien als Resourcen dem Projekt hinzufügen, sie werden dann mitgelinkt.
    Dann musst du sie aber über entsprechende Windowsfunktionen auslesen,
    FindResource, LoadResource.

    Aber wenn man sich überlegt, dass man ja Headerdateien nicht mit .h enden lassen muss, könnte man das auch so realisieren.
    (Dann muss das .ini aber zur Compilezeit stehen und nicht erst zur Linkzeit.)



  • SeppSchrot schrieb:

    Hi, also du kannst beliebige Dateien als Resourcen dem Projekt hinzufügen, sie werden dann mitgelinkt.
    Dann musst du sie aber über entsprechende Windowsfunktionen auslesen,
    FindResource, LoadResource.

    Hmm, schlecht... weil das Projekt anschließend unter Windows, Linux und Mac laufen soll.

    SeppSchrot schrieb:

    Aber wenn man sich überlegt, dass man ja Headerdateien nicht mit .h enden lassen muss, könnte man das auch so realisieren.
    (Dann muss das .ini aber zur Compilezeit stehen und nicht erst zur Linkzeit.)

    Versteh ich nicht ? Das File steht zur Compilezeit... und wie geht's weiter ?



  • Guckst du hier:

    Du hast ein Headerfile "werte.h".

    #define ROTEFARBE 0xff0000
    

    Nu nennst du den Header um in "werte.ini"

    Im Programm schreibst du dann

    #include "werte.ini"
    
    myWindow->setColor(ROTEFARBE);
    

    🙂



  • Das würde nur fast passen, gg... denn ich habe

    Name RGB HEX
    

    Name/HEX gebe ich meiner "Suchfunktion" an und den RGB-Werte bekomme ich als Rückgabe. #define funktioniert nicht, zwei verschiedene Eingabewerte und es kommen immer 3 Rückgabewerte. Kann man das geschickter machen ?



  • test.h

    #define DEF_COUNT 3
    
    typedef struct
    {
       char Name[25];
       unsigned char R, G, B;
       unsigned long HEX;
    } Farbe;
    
    Farbe Definitionen[DEF_COUNT] = {	{"Rot",     255,   0,  0, 0x00FF0000},
    									{"Gelb",    255, 255,  0, 0x00FFFF00},
    									{"Kackbraun", 8, 145, 45, 0x12345678}	};
    

    main.cc

    #include <iostream>
    #include "test.h"
    
    int main()
    {
    	for(int i=0; i<DEF_COUNT; i++)
    	{
    		std::cout.setf(std::ios::dec);
    		std::cout << "#" << i << ": " << Definitionen[i].Name << " ("
    			<< (unsigned short)Definitionen[i].R << ","
    			<< (unsigned short)Definitionen[i].G << ","
    			<< (unsigned short)Definitionen[i].B << ") ";
    		std::cout.setf(std::ios::hex, std::ios::basefield);
    		std::cout << "0x" << Definitionen[i].HEX << std::endl;
    	}
    
    	return 0;
    }
    


  • Danke 🙂


Anmelden zum Antworten