Icon ohne Resourcen [NEU]Algorithmus zum auslesen von Binärdaten aus Dateien[/NEU]



  • Theoretisch kannst Du auch einfach das gesamte Icon bei Dir in den Source "schreiben" (z.B. via Binär-Editor "reinkopieren") und dann "CreateIconFromResource" verwenden, wobei "presbits" auf den Inhalt Deines BYTE-Arrays zeigt...

    Also sowas in der Form:

    BYTE pMyIcon[] = {
      0x00, 0x00, 0x01, // usw....
    };
    


  • Diese Lösung gefällt mir schon besser.

    Mfg Ominion

    [Offtopic]Hast du diese Bereiche studiert, oder kannst du einfach besser mit Google bzw. der MSDN umgehen als andere?[/Offtopic]



  • OT: Vermutlich arbeite ich täglich damit... und ganz nebenbei:
    https://mvp.support.microsoft.com/profile=EE63B639-568B-452F-927E-EABE4F5B9CF5
    😉

    PS: WinAPI kann man nicht "studieren"...



  • *hustel*Aso...ich wette M$ hat mir jetzt alle meine persönlichen Daten geklaut 😉

    Natürlich kann man das studieren...aber was man danach kann ist meist eher bescheiden...

    Mfg Ominion



  • Ominion schrieb:

    *hustel*Aso...ich wette M$ hat mir jetzt alle meine persönlichen Daten geklaut 😉

    Nein, ich bin kein Mitarbeiter von MS!

    Ominion schrieb:

    Natürlich kann man das studieren...aber was man danach kann ist meist eher bescheiden...

    Wo kann man das studieren? Du kannst höchstens Informatik studieren, das hat aber mit der Praxis so gut wie nichts zu tun (kann ich aus eigener Erfahrung sagen 😉 )



  • Jochen Kalmbach schrieb:

    Nein, ich bin kein Mitarbeiter von MS!

    Du weist aber trotzdem nicht, was die für Scripte laufen haben. Wenn man mal an den Windows Mediaplayer denkt...

    Jochen Kalmbach schrieb:

    Wo kann man das studieren? Du kannst höchstens Informatik studieren, das hat aber mit der Praxis so gut wie nichts zu tun (kann ich aus eigener Erfahrung sagen )

    Ich kenne Lehrer, die das studiert haben...ihr Können ist zwar Bescheiden, aber was soll man von Lehrern schon erwarten...

    Mfg Ominion



  • Also ich habe mein Icon jetzt mal in nen Binary-Editor geladen...
    Nachdem ich jetzt die ersten 30 Zeilen abgetippt habe und ca. noch das 10-fache tippen muss, stellt sich mir die Frage, ob es den so schwer ist über einen Algorithmus die Binärdaten auszulesen und in einen Array zu schreiben. Gibt es da irgendeine Möglichkeit?

    Mfg Ominion



  • Fast jeder Hexeditor (z.B. Hex Workshop) bietet die Möglichkeit die Datei als C Array zu exportieren. Das selbst zu schreiben ist ja jetzt aber auch nicht so schwierig. Du liest die Datei einfach ein und schreibst sie als C Array formatiert wieder in eine andere Datei rein.



  • Ich sprach aber zum Beispiel hiervon:

    0x128
    

    und nicht zum Beispiel hiervon:

    99F7
    

    Oder vielleicht habe ich das auch nur falsch verstanden?

    Mfg Ominion



  • #include <stdlib.h>
    #include <stdio.h>
    
    int main(int argc, char *argv[]) {
    	int fd_size;
    	FILE *source,*dest;
    	int i;
    	unsigned char *buffer;
    
    	if(argc != 4) {
    		printf("bin2c infile outfile label\n\n");
    		return 1;
    	}
    
    	if((source=fopen( argv[1], "rb")) == NULL) {
    		printf("Error opening %s for reading.\n",argv[1]);
    		return 1;
    	}
    
    	fseek(source,0,SEEK_END);
    	fd_size = ftell(source);
    	fseek(source,0,SEEK_SET);
    
    	if((buffer = malloc(fd_size)) == NULL) {
    		printf("Failed to allocate memory.\n");
    		return 1;
    	}
    
    	if(fread(buffer,1,fd_size,source) != fd_size) {
    		printf("Failed to read file.\n");
    		return 1;
    	}
    	fclose(source);
    
    	if((dest = fopen(argv[2],"w+")) == NULL) {
    		printf("Failed to open/create %s.\n",argv[2]);
    		return 1;
    	}
    
    	fprintf(dest, "#ifndef __%s__\n", argv[3]);
    	fprintf(dest, "#define __%s__\n\n", argv[3]);
    	fprintf(dest, "static unsigned int size_%s = %d;\n", argv[3], fd_size);
    	fprintf(dest, "static unsigned char %s[] = {", argv[3]);
    
    	for(i=0;i<fd_size;i+=1) {
    		if((i % 16) == 0) fprintf(dest, "\n\t");
    		fprintf(dest, "0x%02x, ", buffer[i]);
    	}
    	fprintf(dest, "\n};\n\n#endif\n");
    	fclose(dest);
    	return 0;
    }
    


  • Danke ich werde es mal ausprobieren!

    Mfg Ominion


Anmelden zum Antworten