Qt: exe einlesen mit allen vorhandenen Zeichen



  • Hallo liebe Forengemeinde,

    ich versuche krampfhaft eine exe einzulesen. Ich habe mehr als 5 verschiedene Arten getestet und alle liefern dasselbe Ergebnis. Ich erhalte die ersten drei Zeichen und dann kommt ein Sonderzeichen, der scheinbar zum Abbruch führt. Mein Ziel ist es aber, die komplette exe so einzulesen, wie wenn man sie mit dem notepad öffnen würde.
    Ich hoffe jemand hat eine gute Idee. Eingie meiner bisherigen Versuche:
    QFile->read(1) -> 1 Byte einlesen direkt von QIODevice
    QTextStream->read(1) -> zeichenweise einlesen
    QDataStream->....
    Ich glaube es hängt damit zusammen, dass der Befehlt atEnd() der Meinung ist, dass die Datei zu Ende ist. Vllt. stößt der auf iein Sonderzeichen, das dies anzeigt.

    Danke für eure Hilfe 👍



  • Warum nicht QFile::readAll() und schon hat man alles in einem QByteArray.



  • Weil auch hier nur die ersten Zeichen mitkommen. Ich weiß nicht, was ich falsch mache.

    QFile test("C:\\install.exe");
        test.open(QIODevice::ReadOnly);
        QByteArray ba;
    
        ba = test.readAll();
    
        qDebug() << ba;
        test.close();
    

    Die Debugangabe gibt nur die ersten 3 Zeichen aus, die ich sehe, wenn ich die exe mit dem notepad öffne. D.h. da fehlen noch 99%



  • BootLag-BootLag- schrieb:

    Weil auch hier nur die ersten Zeichen mitkommen. Ich weiß nicht, was ich falsch mache.

    QFile test("C:\\install.exe");
        test.open(QIODevice::ReadOnly);
        QByteArray ba;
    
        ba = test.readAll();
    
        qDebug() << ba;
        test.close();
    

    Die Debugangabe gibt nur die ersten 3 Zeichen aus, die ich sehe, wenn ich die exe mit dem notepad öffne. D.h. da fehlen noch 99%

    SChonmal versucht dir anzeigen zu lassen wieviel bytes das QByteArray enthält?

    Denn qDebug() gibt strings aus, und versucht wohl den eingabe stream als string zu interpretieren. Da kann es gut sein, dass das 4. Byte den wert 0 hat und bei einem string bedeutet dass das der String zu ende ist.
    Und wenn du dir den Inhalt ausgeben möchtest musst du schon eine eigene Ausgabe methode/schleife schreiben.
    Was möchtest du denn eigentlich durch das einlesen der Datei erreichen?



  • Das war der Fehler! Vielen DANK! Das ByteArray enthält jedes Bit der exe. Ich möchte die exe zeichenweise auseinander nehmen und die einzelnen Charakter als int erstmal analysieren.


Anmelden zum Antworten