Zum Inhalt springen

Eine neue Datei beliebigen Dateityps erstellen


Empfohlene Beiträge

Geschrieben

Ich möchte mit meinem Delphi Programm eine neue Datei erstellen, z.B. ein Word oder Excel Dokument. Ich möchte aber nicht mit irgendwelchen Word Application Objekten arbeiten.

Was genau macht denn Windows, wenn ich mit der rechten Maustaste auf einen freien Bereich irgendwo klicke und dann Neu - Worddokument wähle?

Ich könnte mir vorstellen, dass dann so ein rundll32.exe Befehl ausgeführt wird, damit kann man ja auch Dateien öffnen und z.B. Windows herunterfahren, etc.

Das ganze sollte dann meiner Meinung nach ungefähr so aussehen:

rundll32.exe shell32.dll,CreateNewFile "c:\test.doc"

Gibt es sowas?

Geschrieben

Nachtrag: Das ganze könnte natürlich auch mit einer API Funktion gehen. Irgendwie macht Windows das ja auch.

Wenn ich ein neues Word Dokument erstelle, also ein völlig leeres, hat das ja schon eine Größe von ca. 10 KB (Word 2000). Deswegen brauche ich da irgendeinen Windows Befehl/API für.

Einfach eine 0 Byte Datei mit der Endung ".doc" funktioniert ja nicht.

Wer hat da eine Idee? Ich habe schon stundenlang mit Google gesucht.

Geschrieben

Du könntest mit Word eine neue doc-Datei erstellen, sie mit einem Hex-Editor öffnen und alles, was in der Datei steht kopieren. Dann erstellst du mit Delphi eine einfache Datei mit der Erweiterung doc, öffnest sie und schreibst das was du in der Zwischenablage hast, in die Datei.

Vielleicht klappt das.

Geschrieben

deine idde ist nicht schlecht, hat aber einen Hacken:

in Word, Excel etc. Dateinen sthet immer das erstellungsdatum, der author (teilweis auch der lizenznehmer) und all so einen Kram. Wenn du jetzt einfach ein leeres Dokument nimmst, das meintewegen als tmp file speicherst, und bei jedem aufruf kopierst, ändern sich an den oben gennanten daten gar nichts...

Aber wenn du sagst "ist doch latte" dann ist das sicherlihc die einfachste lösung...

gruß Taz...

Geschrieben

Hallo,

In der Unit"Windows" findest du die entsprechenden Funktionen, wenn du nach "CreateFile" suchst. Mit der Delphi-Hilfe kannst du dann rauskriegen, wie du die Parameter setzen musst, sofern du gut Englisch kannst.

Geschrieben
Original geschrieben von lpd

Hallo,

In der Unit"Windows" findest du die entsprechenden Funktionen, wenn du nach "CreateFile" suchst. Mit der Delphi-Hilfe kannst du dann rauskriegen, wie du die Parameter setzen musst, sofern du gut Englisch kannst.

Mit CreateFile kann man soweit ich das feststellen kann nur leere Dateien erstellen, aber nicht leere Word, Excel oder sonstige Dateien. Oder irre ich mich da? Also man kann nur eine Art Textdatei erstellen.

Geschrieben
Original geschrieben von King555

Mit CreateFile kann man soweit ich das feststellen kann nur leere Dateien erstellen, aber nicht leere Word, Excel oder sonstige Dateien. Oder irre ich mich da? Also man kann nur eine Art Textdatei erstellen.

Das kann ich dir nicht genau sagen, da ich noch nie etwas anderes als Textdateien erstellt habe.

Du hast aber die Möglichkeit, die entsprechenden Typbibliotheken in Delphi einzubinden. Eventuell stellt das Interface eine Methode zur Erzeugung eines neuen Dokumentes bereit. Dazu musst nu natürlich das Office-Paket installiert haben.

Geh´ dann mal auf "Projekt / Typbibliothek importieren" und schau nach, ob du "Microsoft Word" finden kannst. (8.0 bei O97, 9.0 bei O2000).

Nun, du hast auf jeden Fall eine Klasse namens "TWordDocument" zur Verfügung. Ich denke, die wird alles enthalten, um dein Problem zu lösen.

Geschrieben

Das bringt mich auch nicht wirklich weiter. Vielleicht geht es ja auch garnicht so einfach, wie ich es mir vorstelle. Ich denke einfach nur, dass Windows selbst ja eigentlich auch eine simple Methode haben muss, um eine neue Datei zu erstellen. Es wird ja schließlich nicht immer Word gestartet, wenn ich z.B. auf dem Desktop per Kontextmenü eine neue Datei erstellen. Und ich möchte ja nicht nur Word Dateien erstellen, sondern auch Excel, Access, Powerpoint, etc. Dateien. In einem anderen Forum erzählte jemand was von ShellNew und InProcServer32. Sagt euch das was?

Geschrieben

Ja. Es ist so, dass das Kontextmenü, welches du per Rechtsklick auf dem Desktop aufrufst, sich die Einträge, die du unter "Neu" findest, aus der Registry holt.

Ein Format, das im Kontextmenü eingetragen ist, enthält immer einen Unterschlüssel "ShellNew". Wird dieser gelöscht, ist das Format auch nicht mehr im Kontextmenü zu finden.

Geschrieben

Oh, hätte ich fast übersehen :

InprocServer32 ist ein Schlüssel und kennzeichnet das Modul, in dem eine COM-Komponente implementiert ist; in diesem Fall ein dll-Modul (für Exe-Module wird der Schlüssel LocalServer32 verwendet)

Aber das geht schon in Richtung COM-Klassen-Zusammenführung zu Komponenten. Ich wüsste nicht, inwiefern das helfen soll.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...