Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24
  1. #1

    [C] Inserire file in un exe

    Ciao, è sempre il vostro testa di Mucca che vi parla !!

    Mettiamo caso che io, alla fine, voglia avere 2 files dentro la cartella C:\prova\

    I files sono, ad esempio, 1.jpg e 2.jpg

    Io vorrei fare un exe che contenga i suddetti file e che se eseguito, li crei e metta dentro la cartella C:\prova\

    Ho cercato ma non ho idea di come inserire nell'exe le immagini, in modo che eseguendolo, loro vadano al loro posto in automatico..( mi semplicherebbe di brutto la vita con i backup )

    Grazie dell'eventuale aiuto amici !

  2. #2
    Aiutoo !! Nessuno sa aiutarmi ??
    Perfavore !

  3. #3
    non so se ho capito bene quello che chiedi...

    questo codice crea un nuovo file immagine bitmap
    con scritto [CIAO] (anche se per fare una cosa di questo genere, ti consiglio vivamente di utilizzare altre soluzioni...)

    codice:
    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
        int i;
        FILE *p;
        
        int bmp[]={
                   66, 77, 122, 4, 0, 0, 0, 0, 0, 0, 54, 0, 0, 0, 40, 0,
                   0, 0, 27, 0, 0, 0, 13, 0, 0, 0, 1, 0, 24, 0, 0, 0,
                   0, 0, 68, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
                   0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
                   255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
                   255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 
                   255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
                   255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 
                   255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 255, 255, 255, 255, 255, 255,
                   255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
                   255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
                   255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
                   255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
                   255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 255, 255,
                   255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                   0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 0, 255, 0, 0, 255, 255,
                   255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 0, 0,
                   0, 0, 0, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                   0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 0, 0,
                   0, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                   0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 0, 255, 0,
                   0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255,
                   255, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0,
                   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255,
                   255, 255, 0, 0, 0, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0,
                   0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
                   0, 0, 255, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0,
                   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 255,
                   255, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 0, 0, 0,
                   255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255,
                   255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 0, 0, 
                   255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 
                   255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 0, 0,
                   0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 0, 0, 0, 255, 255, 255, 255, 255, 255,
                   0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
                   255, 255, 0, 0, 255, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255,
                   255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255,
                   0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 0, 0, 0, 255, 255, 255, 255, 255, 255,
                   0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
                   255, 255, 0, 0, 255, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255,
                   255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 0, 0, 
                   0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 0, 0, 0, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0,
                   0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 255, 0,
                   0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 255,
                   255, 255, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 255, 255,
                   255, 255, 255, 255, 0, 0, 0, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                   0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 0, 255, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0,
                   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                   0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 0, 0, 0, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0,
                   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 0, 255, 0, 0, 255, 255, 255, 255, 0,
                   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                   0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255,
                   255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
                   255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
                   255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
                   255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 255, 255, 255,
                   255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
                   255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
                   255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
                   255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0
                  };                                     
                                                    
        p = fopen("./bitmap.bmp", "wb");
        
        for(i=0; i<=1146; i++)
            fprintf(p, "%c", bmp[i]);
                            
        fclose(p);
    
        printf("Bitmap creata\n");
        system("start bitmap.bmp");
        system("PAUSE"); 
        return 0;
    }
    n.b. non ti spaventare, tutti quei numerini non sono
    altro che la rappresentazione in base DECIMALE dell'immagine da creare.

    Se non è esattamente quello che cercavi, spiegaci meglio.
    ...Terrible warlords, good warlords, and an english song

  4. #4
    ma metti caso che fosse un jpg o in generale un altro file ?
    il contenuto decimale come lo estrapolo ? ti prego, perdona la mia ignoranza, sarà sicuramente facile ma io non lo so fare, sono un pivello col cervello di una mucca
    però sto imparando anche grazie a questo bel forum

  5. #5
    ok, in teoria da quello che ho visto funziona per ogni files e non solo bmp giusto ?
    e però non ho trovato da nessuna parte come trovare i numerelli decimali che fanno il file..
    cmq grazie per il codice sopra mi è stato molto utile per iniziare a muovermi

  6. #6
    hem sono ancora io, cacchio mica ci riesco ! :master:
    non trovo come ottenere il contenuto decimale !

    guarda, io quello che riesco a fare è contenuto in questo shot :



    credo che tu usi qualche trucchetto.....magari che ti permetta pure di fare copia incolla sennò sai che 2 maranza di palle copiare i valori a mano !!

    ciao e grazie ancora per il tuo prezioso aiuto !

  7. #7
    1)Apri PAINT e crea/salva un file di nome "origine.bmp"

    2)ORA da C/C++, devi aprire il file origine.bmp in modalità binaria... (non ascii)

    Questa routine C, legge il tuo file bitmap (chiamato "origine.bmp")
    e crea un file C/C++ (eseguibile.cpp) pronto per essere compilato in EXE e distribuito. Questo ultimo conterra l'array con il codice decimale per creare la bitmap (identica a quella mappata dal primo programma (che non è altro che un "caricatore").

    codice:
    #include <stdio.h>
    #include <stdlib.h> 
    
    int main()
    {
        FILE *in, *out;
        int i=0, j=0;
        
        out = fopen("./origine.bmp", "rb");
        in = fopen("./eseguibile.cpp", "wb");
    
        //creo/scrivo il file eseguibile.cpp
        fprintf(in, "#include <stdio.h>\n");
        fprintf(in, "#include <stdlib.h>\n\n");
        fprintf(in, "int main(){\n");
        fprintf(in, "int i;\n");
        fprintf(in, "FILE *p;\n");
        fprintf(in, "int bmp[]={");
        
        //creo l'array contenente il codice decimale della bitmap di origine
        while(!feof(out))
        {
            fread(&i, sizeof(char), 1, out);
            fprintf(in, "%d, ", i);
            j++;
        }
       
        fseek(in, -2, 1);
    
        fprintf(in, "};\n");
        
        //continuo a scrivere il listato per il secondo eseguibile  
        fprintf(in, "p = fopen(\"./bitmap.bmp\", \"wb\");\n");
        fprintf(in, "for(i=0; i<%d; i++) fprintf(p, \"%%c\", bmp[i]);\n", j); 
        fprintf(in, "fclose(p);\n");
        fprintf(in, "printf(\"Bitmap creata\\n\");\n");
        fprintf(in, "system(\"start bitmap.bmp\");\n");
        fprintf(in, "system(\"pause\");\n");
        fprintf(in, "return 0;\n");
        fprintf(in, "}\n");
    
        // ora chiudo la routine in questo file "caricatore"
        fclose(in);
        fclose(out);
      
        printf("TOT. BYTE: %d\n", --j);
        system("PAUSE"); 
        
        return 0;
    }
    p.s. se modifichi l'estensione (es: JPG , WAV , ecc)
    funziona anche con altri formati.

    Ora distribuisci soltanto il file ESEGUIBILE.EXE
    ...Terrible warlords, good warlords, and an english song

  8. #8
    Ok !!! Capito !! Provo subito grazie mille !

  9. #9
    Cazz
    Hem ti chiedo scusa....perfavore hehe abbi ancora un ziccolo di pazienza

    Io creo il *.c con il tuo codice di poco sopra, nella stessa cartella gli ho messo il bmp ( che in realtà è un jpg rinominato ) e il cpp ( un file vuoto )

    Quando compilo mi dice

    cpp: Can't open input file }
    naturalmente il return mi va ad 1..

    cosa combino di sbagliato ?

    Aspettando lumi continuo a smanettare, grazie ancora !!! Sei mitico !

  10. #10
    Scusa, colpa mia, non perdere tempo :gren:
    FUNZIONA ALLA GRANDE !! ( il problema era l'area di lavoro )

    Ora ho il mio Decimal_Loader :gren: :gren:

    Grazie sei mitico !! Ti presterei la mia ragazza per una notte hehe :metallica

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.