Dateien in .exe packen



  • Hallo,

    leider funktioniert das bei mir nicht:

    Wenn ich das Beispiel einbaue,

    resource = FindResource( AfxGetInstanceHandle( ), MAKEINTRESOURCE(IDI_ICON_CF), RT_GROUP_ICON );
    

    erhalte ich eine 1KB Datei.

    inhalt ist leer und dwSize ist 20...?

    Was ist richtig für den LETZTEN Parameter???

    mfg
    trequ



  • Dann teste einfach mal den Code von Rapha...

    http://www.c-plusplus.net/forum/viewtopic.php?t=70297&highlight=findresource

    Gruß
    :: NoName ::



  • Hallo,

    damit kann ich nix anfangen.

    Mein Problem liegt da, dass er nur 20 Byte aus der Resource liest...

    FindResource( AfxGetInstanceHandle( ), MAKEINTRESOURCE(IDI_ICON_CF), RT_GROUP_ICON ); 
    FindResource( AfxGetInstanceHandle( ), MAKEINTRESOURCE(IDI_ICON_CF), "RES" );
    ::FindResource(hInst, MAKEINTRESOURCE(IDI_ICON_CF), RT_GROUP_ICON);
    

    Je nachdem was ich da angebe, kriege ich ein anderes Ergebniss.
    GetLastError gibt aber immer OK zurück.

    Wie ist der letzte Parameter für ein I-C-O-N ???

    Mich interesieren eure Beispiele für eine .exe nicht.
    Es geht um ein ICON. ⚠

    mfg
    trequ



  • Ja, und warum benutzt du dann diesen Code nicht ...

    bool SaveBytesToFile(char* lpBytes, CString strFileName) 
    { 
        CFile fFile; 
        if(!fFile.Open(strFileName, CFile::modeCreate | CFile::modeWrite)) 
        { 
            // Fehlermeldung hier 
            return false; 
        } 
    
        // ich schreib jetzt einfach mal alle Bytes auf einmal in die Datei 
        fFile.Write(lpBytes, strlen(lpBytes)); 
        fFile.Close(); 
        return true; 
    }
    


  • :: NoName :: schrieb:

    Ja, und warum benutzt du dann diesen Code nicht ...

    strlen(lpBytes) ergibt 20.

    Ich habe also nur 20 Byte von 1KB.
    --> Demnach wird die Resource nicht korrekt gelesen.

    Wenn ich das jetzt in eine Datei schreibe, habe ich ja nix davon.
    Die Datei ist dann ja korrupt, da fehlt dann ja was...

    mfg
    trequ



  • trequ schrieb:

    strlen(lpBytes) ergibt 20.

    Und warum benutzt du strlen? Weißt du, wie strlen arbeitet?



  • trequ schrieb:

    Ich habe also nur 20 Byte von 1KB.
    --> Demnach wird die Resource nicht korrekt gelesen.

    Dann wird das wohl nichts, wenn kein Code hilft...

    trequ schrieb:

    Wenn ich das jetzt in eine Datei schreibe, habe ich ja nix davon.
    Die Datei ist dann ja korrupt, da fehlt dann ja was...

    Stimmt, ist ja auch bei Bitmaps so...*Vergessen* 🤡 😉

    Gruß
    :: NoName ::



  • MFK schrieb:

    trequ schrieb:

    strlen(lpBytes) ergibt 20.

    Und warum benutzt du strlen? Weißt du, wie strlen arbeitet?

    Hallo,

    nein, weiß ich nicht.

    Aber meine .ico Datei ist normalerweise 3KB groß.

    Die Ausgabedatei ist nur 1KB groß.

    Also fehlt da was...

    CString output;
    output.format("%d", dwSize);
    MessageBox(output);
    

    ergibt auch 20.

    mfg
    trequ



  • trequ schrieb:

    nein, weiß ich nicht.

    Ich hab das nicht aus Langeweile gefragt, sondern weil es für dich wichtig ist. 🙄

    strlen ermittelt die Länge eines nullterminierten Strings. Es durchsucht den Speicher, bis es ein Nullbyte findet. Im Gegensatz zu String können in Binärdaten (wie z.B. Icons) durchaus auch mittendrin Nullbytes auftreten.



  • was schreibst du denn überhaupt in den cstring rein 😕
    schon mal den debugger bemüht?


Anmelden zum Antworten