Seite 1 von 1

Ausgabe als DOC-Datei [erledigt]

Verfasst: Mi, 10. Okt 2012 13:22
von peternmb
Hallo,
wenn ich eine einfache Text-Datei als .doc speichere, öffnet sich in Word immer ein nerviges Fenster für die Dateikonvertierung.
Dann muss die Vorgabe "Windows - Standard" und "Westeuropäisch" bestätigt werden. Kann ich das irgendwie verhindern bzw. umgehen?

Die doc-Datei erzeuge und öffne ich so:

Code: Alles auswählen

tdatei:="Testdatei.doc"
set console off
set printer to (tdatei)
set printer on
//
? "mein Text usw."
//
set printer off
set printer to
set console on
//
OpenRegisteredFile(tdatei)

Re: Ausgabe als DOC-Datei

Verfasst: Mi, 10. Okt 2012 13:32
von georg
Hallo, Peter -


in solchen Fällen greife ich auf OfficeAutomation zurück (siehe AutomationObject() und entsprechende Beispiele).

Dort kannst Du dann - quasi wie in einem Makro - alle Eingaben aus dem Xbase Programm vornehmen (und auch Verhindern, dass das Word-Fenster sichtbar wird).

Re: Ausgabe als DOC-Datei

Verfasst: Mi, 10. Okt 2012 15:25
von brandelh
Hi,

DOC ist die Dateiendung für das alte Microsoft Dokumentenformat.
Erkennt Word Text, muss es umwandeln.

Je nach Aufgabe, kann man entweder über ActiveX Word direkt steuern (dafür gibt es Beispiele hier und bei Xbase++),
das XML (für Word) oder RTF Format nutzen.
Die letzteren sind reine Textformate und man benötigt kein installiertes Word auf dem Rechner.
Allerdings muss an sich zuerst ein Grundgerüst erstellen, dass man mit Text füttern kann.
XML und Excel verwende ich bei einer meiner Anwendungen (Erklärung in Wissensbasis), was solange geht wie man die Vorlage nicht ändern will.
Dann wird es haarig ;-)

Active X ist sicher am einfachsten in der Anwendung, wenn Word installiert ist.

Re: Ausgabe als DOC-Datei

Verfasst: Mi, 10. Okt 2012 15:43
von Tom
Erkennt Word Text, muss es umwandeln.
Das hängt von der Art des Textes ab. Speichere ich das "Hallo, Welt" in "testtext.doc" und klicke doppelt, erscheint Word mit Schriftarteinstellungen gemäß Standardvorlage und zeigt, ohne weiter zu mucken, den Test "Hallo, Welt" an. Das tut es in allen Versionen, die ich hier zur Verfügung habe - und das sind viele.

Ich glaube auch nicht, dass sich Word beim (hier recht originellen) Erzeugen (also beim Speichern, wie es in der Ausgangsnachricht lautet) der Textdatei meldet. Sondern bei Aufruf (OpenRegisteredFile). Das liegt daran, dass der Text wahrscheinlich Sonderzeichen (Umlaute, ß usw.) enthält, also irgendwas außerhalb des 7-Bit-Bereichs. Dafür gibt es Umsetzungstabellen, aber die Suche ist mir zu mühevoll.

Re: Ausgabe als DOC-Datei

Verfasst: Mi, 10. Okt 2012 15:50
von brandelh
umwandeln muss er in jedem Fall ! Möglich dass er das auch automatisch tut, bei mir kommt eine Fehlermeldung (Office Word 2003 unter XP)

"Konverter kann nicht gestartet werden ...", vermutlich nicht richtig installiert oder registriert (oder noch nicht) . Hilfe gibt es auch auf dem Meldungsfenster ;-)

Re: Ausgabe als DOC-Datei

Verfasst: Mi, 10. Okt 2012 15:53
von Tom
@Hubert: Klar muss umgewandelt werden, aber bei 7-Bit-ASCII erfolgt das (wenn Word richtig installiert ist :wink: ) ohne Rückfrage.

Re: Ausgabe als DOC-Datei

Verfasst: Mi, 10. Okt 2012 16:05
von peternmb
Tom hat geschrieben:Ich glaube auch nicht, dass sich Word beim (hier recht originellen) Erzeugen (also beim Speichern, wie es in der Ausgangsnachricht lautet) der Textdatei meldet. Sondern bei Aufruf (OpenRegisteredFile). Das liegt daran, dass der Text wahrscheinlich Sonderzeichen (Umlaute, ß usw.) enthält, also irgendwas außerhalb des 7-Bit-Bereichs. Dafür gibt es Umsetzungstabellen, aber die Suche ist mir zu mühevoll.
Ja, das ist es. Ohne Umlaute kein Problem - mit Umlaute im Text startet die Konvertierung.
Jetzt weiss ich wenigstens warum, aber eine (einfache) Lösung gibt es dann dafür anscheinend nicht :(

Re: Ausgabe als DOC-Datei

Verfasst: Mi, 10. Okt 2012 16:10
von Tom
Hallo, Peter.

Es gibt, wie ich schrieb, Ersetzungstabellen - einfach mal suchen (etwa nach Begriffen wie "WORD" "ASCII" und "Konvertierung"). Die erlauben es Dir, bereits beim Erzeugen des Textes Ersetzungszeichen einzufügen, etwa "^u" für ein "ü" (stimmt nicht, ist nur ein Beispiel). Dafür müsstest Du dann eine schlichte Funktion bauen (StrTran). Oder Du schmeißt beispielsweise Umlaute raus, indem Du "ü" gegen "ue" austauschst - usw. Aber das ist sicherlich nicht im Interesse der Anwendung.

Eleganter ist es, den Text auch schon mit Word zu erzeugen (ohne dass Word zu sehen ist). Dazu findest Du hier im Forum Beispiele.

Re: Ausgabe als DOC-Datei

Verfasst: Mi, 10. Okt 2012 17:02
von Tom
Äh.

Vergiss das mit den Ersetzungstabellen. Es gibt keine Möglichkeit, einem 8-Bit-ASCII-Text, der keine zusätzlichen Informationen enthalten soll, seine persönliche Collationtable "mitzugeben".

Von der Möglichkeit abgesehen, den Text schon mit Word zu erzeugen, was vermutlich die eleganteste ist, gäbe es außerdem diejenige, einen RTF-Text zu erzeugen. Das geht auch ohne entsprechendes Control; RTF ist nicht sehr kompliziert. Man kann sich - beispielsweise mit Wordpad - eine minimale Vorlage gestalten, aus der man den Header und Epilog entnimmt, und dann einfach den Zwischenraum mit dem eigenen Text befüllen. Auch hier müssen Sonderzeichen und Umlaute entsprechend berücksichtigt werden, aber das ist vergleichsweise einfach (Text mit Sonderzeichen erzeugen und einfach nach den Ersetzungen suchen). Zeilen enden mit "\par", wie auch das gesamte Dokument. Verknüpft man Word dann noch als Standardprogramm mit dem Suffix ".RTF", startet es auch. Was natürlich keine Lösung für eine Anwendung ist, die bei zig Kunden laufen soll.

Re: Ausgabe als DOC-Datei

Verfasst: Mi, 10. Okt 2012 17:32
von peternmb
Tom hat geschrieben:Äh.
Vergiss das mit den Ersetzungstabellen. Es gibt keine Möglichkeit, einem 8-Bit-ASCII-Text, der keine zusätzlichen Informationen enthalten soll, seine persönliche Collationtable "mitzugeben".
Gut, ich habe nach 1Stunde Suche jetzt schon gedacht ich wäre zu blöd sowas zu finden :wink:

Ich lasse es einfach wie es ist. Das ist eigentlich überhaupt kein Problem, da diese Ausgabe nur selten genutzt wird und nur noch aus Kompatibilitätsgründen im Programm ist.

Vielen Dank für die Erklärung.

Re: Ausgabe als DOC-Datei [erledigt]

Verfasst: Do, 11. Okt 2012 7:38
von Koverhage
Ich hätte erst versucht das mit den ConvTo Funktionen von Xbase++ zu lösen.

Re: Ausgabe als DOC-Datei [erledigt]

Verfasst: Do, 11. Okt 2012 11:53
von Tom
Hallo, Klaus.
Ich hätte erst versucht das mit den ConvTo Funktionen von Xbase++ zu lösen.
Das bliebe wirkungslos. Sobald der 7-Bit-Bereich überschritten wird, bietet Word die Konvertierung an. Das geschieht sogar, wenn man einen entsprechenden Text direkt aus Word so gespeichert und umbenannt hat. Dabei spielt keine Rolle, ob irgendwas mit ANSI- oder OEM-Konvertierung getan wird. Und Word "rät" auch noch falsch. Beim gespeicherten Text "Hallo, Hülefüle" bietet es die Konvertierung aus dem chinesischen Zeichensatz an. Einfach mal ausprobieren. :wink: