Binary File einlesen!

Alles rund um die Programmierung mit Qt
blm
Beiträge: 23
Registriert: 1. September 2008 17:06

Binary File einlesen!

Beitrag von blm »

das binär File ist hergestellt von einer anderen software,
es enthalt text and data, ist ein vermischt binär File,

und ich möchte mittels
file.open(QIODevice::Readonly)
das File einlesen, aber erfolglos..

könnt QFile nur lesen das von QFile hergestellte binär File ?

Danke im Voraus!
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Bessere Fehlerbeschreibung bitte!
Geht QFile::open() nicht? Schonmal geschaut ob der PFad passt bzw. ob QFile::error() Dir weiterhilft?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
blm
Beiträge: 23
Registriert: 1. September 2008 17:06

Beitrag von blm »

Christian81 hat geschrieben:Bessere Fehlerbeschreibung bitte!
Geht QFile::open() nicht? Schonmal geschaut ob der PFad passt bzw. ob QFile::error() Dir weiterhilft?
danke!

QFile::open() geht nicht,
ich habe so getest,

Code: Alles auswählen

 
if (file.open(QIODevice::Readonly))
{
    QDataSteam in(&file);
    QString inin;
    in >> inin;
    textEdit->setPlainText(inin);
}

else
    QMessageBox::informaion(this, tr("OktoberFest"), tr("Bier trinken"), QMessageBox::ok);
leider habe ich immer Oktoberfest gesehen und immer Bier trinken..
:oops:

QFile::error() , wie kann man nutzen?
blm
Beiträge: 23
Registriert: 1. September 2008 17:06

Beitrag von blm »

pfad ist kein Problem,

Code: Alles auswählen

const QString &filename =":/test.F22";
QFile file(&filename);
...
blm
Beiträge: 23
Registriert: 1. September 2008 17:06

Beitrag von blm »

ok, the Error code ist 5,

QFile::OpenError 5 The file could not be opened.

aber ich kann es mittels TextPad öffnen!
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

":/test.F22" als Dateiname ???
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
blm
Beiträge: 23
Registriert: 1. September 2008 17:06

Beitrag von blm »

Christian81 hat geschrieben:":/test.F22" als Dateiname ???
wieso nicht?

ich habe eine andere Datei getestet, aber eine Text Datei,

const QString &filename =":/test.txt";
QFile file(&filename);

funktioniert!
blm
Beiträge: 23
Registriert: 1. September 2008 17:06

Beitrag von blm »

Christian81 hat geschrieben:":/test.F22" als Dateiname ???
":/test.F22" ist ein Pfad,
test.F22 ist Dateiname.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

1. Gibst Du einen relativen Pfad an - aber Dein Programmpfad kann total woanders hinzeigen - d.h. dein aktuelles Workdir passt nicht
2. Weder unter Windows noch unter Linux kann ich eine Datei mit dem Namen :/test.F22" anlegen...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
blm
Beiträge: 23
Registriert: 1. September 2008 17:06

Beitrag von blm »

Christian81 hat geschrieben:1. Gibst Du einen relativen Pfad an - aber Dein Programmpfad kann total woanders hinzeigen - d.h. dein aktuelles Workdir passt nicht
2. Weder unter Windows noch unter Linux kann ich eine Datei mit dem Namen :/test.F22" anlegen...
hi, Christian, du hast recht!

ich ersetze ":/test.F22" als "test.F22", (außerdem, komisch ist, ":/test.txt" funktioniert!)

jetzt habe ich kein OktoberFest gesehen, aber trotzdem kein Output,

is diese code

Code: Alles auswählen

    QDataSteam in(&file);
    QString inin;
    in >> inin;
    textEdit->setPlainText(inin); 
falsch!?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Kannst Du nicht einfach mal methodisch vorgehen und schauen ob QFile::open() korrekt funktioniert und wenn nicht, schauen ob der App-Pfad richtig ist??
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
blm
Beiträge: 23
Registriert: 1. September 2008 17:06

Beitrag von blm »

Christian81 hat geschrieben:Kannst Du nicht einfach mal methodisch vorgehen und schauen ob QFile::open() korrekt funktioniert und wenn nicht, schauen ob der App-Pfad richtig ist??
ich habe noch mal getestet,

Code: Alles auswählen

if (file.open(QIODevice::Readonly))
{
    cerr<<file.error();
    QDataSteam in(&file);
    QString inin;
    in >> inin;
    cerr<<inin.toStdString();
    textEdit->setPlainText(inin);
}

else
    cerr<<file.error();
    QMessageBox::informaion(this, tr("OktoberFest"), tr("Bier trinken"), QMessageBox::ok); 
feedback ist 0, No error occurred.

so, jetzt verstehe ich nicht..
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

D.h. Du kannst die Datei jetzt öffnen.
Und Du bist Dir sicher dass die Daten in der Datei auch als QDatastream vorliegen? Glaube ich nämlich nicht - zumindest nicht laut deinem ersten Post.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
blm
Beiträge: 23
Registriert: 1. September 2008 17:06

Beitrag von blm »

Christian81 hat geschrieben:D.h. Du kannst die Datei jetzt öffnen.
Und Du bist Dir sicher dass die Daten in der Datei auch als QDatastream vorliegen? Glaube ich nämlich nicht - zumindest nicht laut deinem ersten Post.
ja, stimmt nicht als QDatastream,

die Stuktur ist so,
Anfang ist ein Text Anteil als Kopf,

danach ist die binär Raw Datei.

wie kann ich solches File einlesen?
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

blm hat geschrieben: wie kann ich solches File einlesen?
Byte für Byte auslesen und nach dem Format die Daten interpretieren.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten