Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Iguan
Anmeldungsdatum: 14.11.2004 Beiträge: 28
|
Verfasst am: 19.10.2005, 18:22 Titel: Worddokumente aneinander hängen! |
|
|
hi!
vielleicht könnt ihr mir weiterhelfen..
ich habe folgendes Problem:
ich habe sehr viele Worddokumente (z.B 001.doc, 002.doc, 003.doc.... 099.doc)
in diesen Worddokumenten habe ich verschiedene Schriftgrössen und auch verschiedene Schriftfarben verwendet... (darf sie also nicht in *.txt umwandeln, da sonst diese Daten verloren gehen)
nun möchte ich mit einem Programm, die Dokumente aneinander hängen, sodass ich schlussendlich ein einziges grosses Worddokument habe.
Das Programm soll immer wieder fragen, welches file das nächste ist, dass es anzuhängen hat.
im *.txt-Format wäre das kein Problem für mich zu proggen, aber vom Wordformat habe ich keine Ahnung!
Gibt es eventuell bereits schon ein solches Programm im Netz?
Oder könnt ihr mir vielleicht sagen, wie ich das in QB lösen könnte?
Vielen vielen Dank
Iguan |
|
Nach oben |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 19.10.2005, 18:35 Titel: |
|
|
Das Aneinanderhängen im .DOC-Format könntest du mit binärem Speicherzugriff probieren, ich weiß
aber nicht genau, ob das klappt, da die Windows-Programmierer bestimmt irgendeinen Header für's
.DOC-Format geschrieben haben, von dem es dann zwei geben würde...
Wie auch immer, hier mein Vorschlag, müsstest du aber noch testen, ob's klappt:
Code: |
DIM BYTE AS STRING * 1
CLS
LINE INPUT "Zieldatei: "; zieldatei$
OPEN zieldatei$ FOR BINARY ACCESS WRITE AS #1
DO
PRINT "Datei eingeben (zum Beenden Leereingabe)";
LINE INPUT dateiname$
IF RTRIM$(LTRIM$(dateiname$)) = "" THEN EXIT DO
F = FREEFILE
OPEN dateiname$ FOR BINARY ACCESS READ AS #F
DO
GET #F, , BYTE
PUT #1, , BYTE
LOOP UNTIL LOC(F) = LOF(F)
CLOSE #F
LOOP
CLOSE #1
END
|
Diese Methode ist aber relativ langsam.
jb
Zuletzt bearbeitet von jb am 19.10.2005, 19:06, insgesamt 2-mal bearbeitet |
|
Nach oben |
|
 |
Iguan
Anmeldungsdatum: 14.11.2004 Beiträge: 28
|
Verfasst am: 19.10.2005, 19:01 Titel: |
|
|
Hi JB!
danke vielmals für deine Mühe..
aber wenn ich den Quellcode ausführe, dann kommt bei mir der fehler: Unverträgliche Datentypen, bei der Zeile mit dem GET
DIM BYTE AS STRING * 1
CLS
LINE INPUT "Zieldatei: "; zieldatei$
OPEN zieldatei$ FOR BINARY ACCESS WRITE AS #1
DO
PRINT "Datei eingeben (zum Beenden Leereingabe)";
LINE INPUT dateiname$
IF RTRIM$(LTRIM$(dateiname$)) = "" THEN EXIT DO
F = FREEFILE
OPEN dateiname$ FOR BINARY ACCESS READ AS #F
DO
GET #F, BYTE
PUT #1, BYTE
LOOP UNTIL LOC(F) = LOF(F)
CLOSE #F
LOOP
CLOSE #1
END |
|
Nach oben |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 19.10.2005, 19:03 Titel: |
|
|
Huups, es muss ja auch
Code: |
GET #F, , BYTE
PUT #1, , BYTE
|
heißen...
Ich editiere das oben mal eben...
jb |
|
Nach oben |
|
 |
Iguan
Anmeldungsdatum: 14.11.2004 Beiträge: 28
|
Verfasst am: 19.10.2005, 19:24 Titel: ?!?!?!?! |
|
|
Hi jb!
danke vielmals für deine suuuuperschnelle Antwort!!!
ich habs ausprobiert... diesmal kam keine Fehlermeldung!
aber es hat trotzdem nicht so recht geklappt:
als Zieldatei habe ich folgendes eingegeben: "F:\ausgabe.doc"
und dann habe ich "F:\01.doc" und "F:\02.doc" eingegeben.
daraus entstand zwar die datei ausgabe.doc, aber wenn ich die öffne ist nur der inhalt von Datei "01.doc" drin. Merkwürdigerweise entspricht die dateigrösse in etwa beider dateien (01.doc und 02.doc) zusammen!
wir sind nahe dran!!!
gruss
Iguan |
|
Nach oben |
|
 |
jb

Anmeldungsdatum: 14.01.2005 Beiträge: 2010
|
Verfasst am: 19.10.2005, 19:27 Titel: |
|
|
Wie ich schon sagte, das Problem ist der Word-Header, der in der .DOC-Datei vorhanden ist.
Mein Vorschlag war nur die Quick'n'Dirty-Methode, damit das richtig klappt, müsste man das
.DOC-FOrmat auseinander nehmen...
Tut mir Leid, aber das wird dann schon ziemlich komplex...
/EDIT: Vielleicht hilft dir das hier weiter: Link
jb |
|
Nach oben |
|
 |
Iguan
Anmeldungsdatum: 14.11.2004 Beiträge: 28
|
Verfasst am: 19.10.2005, 19:42 Titel: ... |
|
|
Hi jb
ok.. dann muss ich es wohl lassen...
aber trotzdem vielen vielen Dank für deine Hilfe!!!
gruss
Iguan |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 19.10.2005, 20:29 Titel: |
|
|
Der punkt,dass man nur die 1. datei "sieht", liegt wohl dran, dass im header der 1. datei eine dateilänge steht, diese müsste man höher setzen! _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Iguan
Anmeldungsdatum: 14.11.2004 Beiträge: 28
|
Verfasst am: 19.10.2005, 20:43 Titel: und wie mache ich das? |
|
|
. |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 19.10.2005, 20:46 Titel: Re: und wie mache ich das? |
|
|
Iguan hat Folgendes geschrieben: | . |
SPAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM
 _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Iguan
Anmeldungsdatum: 14.11.2004 Beiträge: 28
|
Verfasst am: 19.10.2005, 20:57 Titel: nein, im titel steht was... musste ich so machen, da (nt) |
|
|
nein, im titel steht was... musste ich so machen, da (nt) nicht geht
aber jetzt spass beiseite... kennst du ne lösung für mein Problem?  |
|
Nach oben |
|
 |
Jojo alter Rang

Anmeldungsdatum: 12.02.2005 Beiträge: 9736 Wohnort: Neben der Festplatte
|
Verfasst am: 19.10.2005, 21:09 Titel: |
|
|
mein vorschlag wäre: schau dir die binär-struktur eine word-datei an. das könnte so aussehn;:
WORD215ß8filafjABCBABCABf9p3482p9t83tp29t823p9Hier beginnt text!
dieser buchstaben-salat ist der kopf. den müsstest du irgendwie analysieren....dann müsstest du bei der 2. datei den kopf entfernen und die dateilängen zusammenhzähen....
ich hab schonmal in so eine word-datei reingeschaut, und das sah aus wie html-code, ich glaub, dass da z.B. <b> sachen wie |b|aussah... _________________ » Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
 |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
Mao
Anmeldungsdatum: 25.09.2005 Beiträge: 4409 Wohnort: /dev/hda1
|
Verfasst am: 22.10.2005, 17:19 Titel: |
|
|
Hallo!
Bei jb's Lösung werden die Dateien zwar aneinander gehängt, jedoch gibt's meiner Meinung nach eine Art Footer. Der grenzt die Daten ungewollt ab. Das gleiche Prinzip wäre es, wenn du mehrere Daten, die du evtl für ein Spiel brauchst (Grafiken, Sounds, Highscore, ...) hinten dranhängst. Das EXE-Programm würde es nicht stören - denn es "weiß" wo es zu Ende ist.
Bsp: Du könntest die Daten mit SEEK auslesen, was aber nicht deine Frage war. Galt nur zur Erklärung, warum die Methode nicht funktioniert.
Greetings,
Mao _________________ Eine handvoll Glück reicht nie für zwei.
--
 |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 22.10.2005, 18:18 Titel: |
|
|
QB ist für diese Aufgabe eindeutig das falsche Werkzeug, denn sich mit allen Details des Word-Dateiformats auseinandersetzen zu wollen sprengt schlicht und einfach jeglichen Rahmen, was das Verhältnis Aufwand zu Ertrag betrifft.
Befasse Dich daher lieber mit Word-Makros. Ebenfalls für solche Dinge immer gut: VBScript mit dem Windows Script Host unter Verwendung der ActiveX-Automatisierungsobjekte von Office. Im MSDN-Bereich sind sonst alle Objekte, Properties und Methoden beschrieben. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
|