Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Eine neue Datei beliebigen Dateityps erstellen

Empfohlene Antworten

Veröffentlicht

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?

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.

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.

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...

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.

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.

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.

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?

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.

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.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.