Binär lesen - sequentiell schreiben



  • Hallo,
    erstmal kann es sein, dass die Suche kaputt ist?? 🙂
    Also, ich hab da ma n klitzekleines Problemchen.

    Ich habe eine Word-Datei. Aus dieser Datei möchte ich den Text holen.
    Also öffne ich die Datei binär, lese Byte für Byte (char für char) aus und möchte dann den reinen Text (ohne den ganzen schmodder der noch mit drin steht) in eine Textdatei packen.
    Nun klappt das auch, aber irgendwie funzt es nicht, Zeilenumbrüche zu erkennen.

    Hat jemand sowas schonmal gemacht? Wie prüfe ich ein binär eingelesenes Zeichen, ob es ein Zeilenumbruch ist?

    Vielen Dank schonmal im V o r r a u s,

    Tobi



  • öhm.. in binärdateien gibts keine zeilenumbrüche da wird doch alles hintereinanderweg geschrieben... wenn in word n umbruch gemacht wird, dann macht dies das programm zur laufzeit anhand seiner einstellungen... gespeichert wird der text aber hintereinander weg... für manuelle umbrüche also absätze oder so könnte da ein zeichen sein was ich jetzt net weiter kenne.. gibts für worddokumente keine RFC?

    ansonsten tut man vergleichen indem man das byte an der stelle x in nen char bzw char* umwandelt und dann mit strcmp vergleicht...
    ein zeilenumbruch ist "\n" unter windows aber meist "\r\n"

    bla und keks...

    cu

    mightymop



  • Afaik ist das Doc-Format nicht offen, deshalb also unbekannt wie Zeilenumbrüche gespeichert werden. Wenn sie auch im Text gespeichert werden, und du sowieso Byte für Byte einliest dann ist es unter Windows eine Kombo von \r und \n die einen Zeilenumbruch ausmachen.

    /Edit: Man schreibt "voraus" ohne doppel r.

    MfG SideWinder



  • ätsch war schneller 😉

    also hm.. ja stimmt doc ist nich offen *erinner*

    cu

    mightymop



  • kennt ihr ne andere Möglichkeit an die sachen zu kommen?



  • Du könntest dich mal bei www.apache.org -> Jakarta -> POI umschauen. Die haben dort angefangen Word-Dokumente mit Java zu lesen. Die sind damit aber nie fertig geworden. Vielleicht haben die es schon geschafft wenigstens Texte raus zulesen? Den Java Sourcecode muß es dort auch geben, so das du da mal reinschauen könntest?

    Eine andere Möglichkeit wäre, in den OpenOffice Code rein zuschauen, die können doch Word-Dokus öffnen und sogar raus schreiben. Und OpenOffice ist in C++ programmiert, vielleicht kannst du sogar deren Librarie benutzen? (kenne die OpenOffice-Lizenz aber nicht, mußt du dich mal durch wühlen)

    Noch eine Möglichkeit: RTF (Rich Text Format) ist auch von MS und sogar dokumentiert. Schau mal bei MSDN nach, da kann man sich die RTF-Beschreibung runter laden. RTF ist zwar kein Word, ich weiß, aber vielleicht können deine User das vorher in RTF wandeln... was auch immer du vorhast. 😉

    Achja, das Word ab 2003 ist glaub ich in XML. Müsste auch dokumentiert sein oder zumindest menschlich lesbar. 😃



  • POI funktioniert nur Excel97, Word kannst du vergessen, da geht gar nichts. Hab erst vor kurzem damit herumgespielt.

    MfG SideWinder



  • wie wäre es alternativ Word zu automatisieren und den Text dort raus zu kopieren? Vielleicht nicht die schönste Variante aber ich denke das sollte schon gehen!



  • genau, werde es wohl mal mit vba probieren......
    aber danke bis hierhin....


Anmelden zum Antworten