Autor Beitrag
mircojaeger
Hält's aus hier
Beiträge: 13

WIN XP,WIN Vista
Delphi 7 Enterprise
BeitragVerfasst: Mo 25.05.09 13:22 
hallo,

mich nervt es, dass man für jedes formqat ein anderes programm benötigt.

ich wollte also ein programm erstellen das verschiedene dateien öffnen (z.b.:WMF, BMP, JPG, ICO, TXT, INI, PAS, BAS, CPP, BAT, CMD, LOG, HTML, CSS, DAT, RTF, AVI, MID, WAV oder MPG). ich hab schon ein paar anfänge getätigt, aber ich weiss nicht mehr wie der parameter ist um dateien zu öffnen. Zur besseren Übersicht habe ich die Möglichkeit eingebaut, die Dateien nach folgenden Kriterien zu filtern: Grafik, Text, Multimedia, Alles.

ich würde gerne GIF-Bilddateien und HTML-Seiten und anderer Dateitypen (z.B. doc, rtf) in der WebBrowser-Komponente anzeigen lassen...
Einloggen, um Attachments anzusehen!
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 480

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Mo 25.05.09 13:40 
[OT]Mich nervt es, wenn man für alles mögliche ein anderes Gerät braucht. DVD-Player, Kaffeemaschine, Rasenmäher - deshalb bau ich mir was, was alles kann. :mrgreen: [/OT]

Zu deinem Problem: Was genau hast du denn vor? Willst du nur einen "Starter" bauen, der die diversen Dateien öffnet (mit dem jeweiligen Programm), wie es auch der Windows-Explorer macht, oder soll dein Programm selbst die Datei öffnen und anzeigen?
Für ersteres dürfte ShellExecute das richtige sein, für letzteres gibt es keinen "Parameter". Da musst du jedes Format einzeln behandeln. Dafür entweder einzeln passende Komponenten oder Units suchen, oder halt selber schreiben. Natürlich wird das niemals so gut werden wie das jeweilige "Originalprogramm" - spätestens bei Formaten wie doc, xls oder ppt hört es ohne die Originale auf. (Nein, OpenOffice ist dafür leider auch nicht immer 100%ig geeignet.)

Und wenn du neben der Anzeige auch noch ein Bearbeiten der Dateien ermöglichen willst: Viel Spaß, deine Lebensaufgabe hast du gefunden. 8)

_________________
We are, we were and will not be.
thepaine91
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 763
Erhaltene Danke: 27

Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
BeitragVerfasst: Mo 25.05.09 13:51 
:?!?: Also wenn du das realisieren willst was Gausi gerade vermutet hat dann :nut: frag ich mich was das für einen Sinn haben sollte, denn wie schon erwähnt kann der Explorer das bereits. Für was also ein Programm schreiben das dann einen Opendialog beinhaltet und man da die Datei anwählt? :gruebel:
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 25.05.09 14:00 
user profile iconGausi hat folgendes geschrieben Zum zitierten Posting springen:
Und wenn du neben der Anzeige auch noch ein Bearbeiten der Dateien ermöglichen willst: Viel Spaß, deine Lebensaufgabe hast du gefunden. 8)
Sowas habe ich mal angefangen und jahrelang verfolgt, zuletzt waren es über 100 Dateitypen, die geöffnet und bearbeitet werden konnten.

user profile iconmircojaeger hat folgendes geschrieben Zum zitierten Posting springen:
aber ich weiss nicht mehr wie der parameter ist um dateien zu öffnen.
Grundsätzlich bekommst du die Dateierweiterung via ExtractFileExt. An Hand derer und ggf. auch des Inhalts musst du dann unterscheiden wie du die Datei behandeln musst.

Oder meinst du mit Parameter wie du die übergebene(n) Datei(en) bekommst? Dann sind ParamCount und ParamStr das richtige für dich.
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 480

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Mo 25.05.09 14:16 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Sowas habe ich mal angefangen und jahrelang verfolgt, zuletzt waren es über 100 Dateitypen, die geöffnet und bearbeitet werden konnten.
Ist nur halb-OT, vielleicht liege ich ja mit meiner Aufwandsabschätzung komplett daneben - wie viele davon waren Textformate? Und war die Bearbeitung von Bilddateien (wäre imho das nächstkompliziertere) konkurrenzfähig zu Paint? Was waren das sonst für Typen?

_________________
We are, we were and will not be.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 25.05.09 14:23 
Insgesamt ca. 80.000 Zeilen eigener Code, darunter waren auch viele Textformate, allerdings mit Unterstützung des Javacompilers, Delphicompilers, C-Compilers, Ressourcencompilers, ...
Dazu eine Bildbearbeitung, die etwa das kann was Paint in Windows 7 kann, nur mit ein paar Figuren weniger. FTP-Uploader, HTML-Designer (allerdings nur HTML4-Standard, nicht XHTML) inkl. kompletter Tagreferenz, Wave-Bearbeitung, AVI-Videoschnitt, Hexeditor, ...

Ein Cutoff mit den wichtigsten Funktionen plane ich irgendwann als reinen Editor zu veröffentlichen, aber bei manchen Fremdcodes (ca. 100.000 Zeilen insgesamt) ist die Lizenz unklar, weil ich das nicht sauber dokumentiert hatte, dazu kommen jede Menge Komponenten. Das steht einer Veröffentlichung unter GPL, LGPL und MPL (wie ich es aktuell mache) entgegen, so dass ich da viel überarbeiten muss.
(Das Programmierkonzept finde ich aber nach wie vor gut, so dass ich das Projekt irgendwann wieder aufnehmen will.)

// EDIT:
Und bei einer Wiederaufnahme will ich auch die Größe des Projekts reduzieren, derzeit sind das installiert etwa 25 MiB plus Zusatztools.
mircojaeger Threadstarter
Hält's aus hier
Beiträge: 13

WIN XP,WIN Vista
Delphi 7 Enterprise
BeitragVerfasst: Di 26.05.09 10:21 
Hier noch einmal ausführliche Infos:
Auf meinem Laptop sammelt sich im Laufe der Zeit eine Unmenge einzelner Dateien an.
Um deren Inhalt schnell und ohne spezielle Software ansehen zu können möchte ich einen Dateibetrachter programmieren.
Angezeigt werden soll eine Anzahl wichtiger und bekannter Dateitypen, dazu zählen für mich u.a.:

WMF, BMP, JPG, ICO, TXT, INI, PAS, BAS, CPP, BAT, CMD, LOG, HTML, CSS, DAT, RTF, AVI, MID, WAV, MPG …

Um die Dateien schnell und komfortabel auswählen zu können habe ich eine FileListBox, eine DirectoryListbox und eine DriveComboBox verwendet.
Diese Komponenten habe ich über die Eigenschaft DirList der DriveComboBox sowie die Eigenschaft FileList der DirectoryListBox miteinander verknüpft. Die Eigenschaft FileName der FileListBox enthält bei mir den Dateinamen der ausgewählten Datei.

Hiermit habe ich Problem: Zur Anzeige wäre es schön wenn ich ein Memofeld (WordWrap true) und eine Image-Komponente (AutoSize false, Stretch true) verwendet könnte. Diese würde ich gerne zur besseren Größenanpassung in eine ScrollBox Komponente platziert werden.

Hiermit habe ich auch so meine Schwierigkeiten:Da Memofeld und Image-Komponente aus Übersichtlichkeitsgründen übereinander liegen sollen, muss jeweils eine der Komponenten ausgeblendet werden (visible Eigenschaft true oder false).
Je nach Dateiendung der gewählten Datei (siehe Hinweise) wird der Inhalt in der entsprechenden Komponente (Memo oder Image) angezeigt.

Um in Ordnern mit vielen Dateien eine bessere Übersicht zu haben gliederte ich die Dateien nach folgenden Kriterien:

Grafik, Text, Multimedia, Alles.

Diese Filterung realisierte ich mit Hilfe der Mask Eigenschaft der FileListBox (z.B. FileListBox1.Mask := ’.bmp ; .jpg’).

•Um auch RTF Dateien anzeigen zu können, habe ich mal gehört, kann man zusätzlich eine RichEdit Komponente verwenden
•Um aus einem Dateinamen die Dateiendung zu ermitteln, kann man die Funktion ExtractFileExt verwenden (z.B. Dateiendung := ExtractFileExt(Dateiname);)
•Um auch Multimediadateien anzeigen zu können, habe ich die Komponente MediaPlayer verwendet.


Weil ich auch GIF-Bilddateien und HTML-Seiten anzeigen lassen möchte und anderer Dateitypen (z.B. doc, rtf) (dies habe ich ausm Internet mir schon zusammen gereimt) bietet sich auch die Verwendung der WebBrowser-Komponente an!
Mit der Eigenschaft Navigate(Page) kann der Inhalt einer Webseite angezeigt werden.

Beispiel:
WebBrowser1.Navigate("index.html");

Aber wie man das genau verwendet weiß ich auch nicht:-(
Timosch
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1314

Debian Squeeze, Win 7 Prof.
D7 Pers
BeitragVerfasst: Di 26.05.09 10:27 
Wie man das verwendet, hast du doch schon geschrieben. Aber: TWebBrowser kann nur dann doc und rtf anzeigen, wenn Microsoft Word installiert ist...
Aber einzelne (') statt doppelter (") Hochkommata verwenden; das hier ist Delphi/Pascal.
TRichEdit kann rtf anzeigen, aber nur ohne Bilder. (Ja, rtf unterstützt Bilder. Auch wenn das vllt. so nicht standardkonform ist.) Die Methoden und Eigenschaften sind größtenteils gleich wie bei TMemo.
Auch die anderen Dateitypen kann man ja eigentlich alle mit Bordmitteln anzeigen (von Syntax Highlightning mal abgesehen). Gut, manche sind vieldeutig. DAT ist eigentlich ein Soundformat. Und log und txt sind identisch.
Aber wo genau liegen jetzt eigentlich deine Probleme/Fragen?

_________________
If liberty means anything at all, it means the right to tell people what they do not want to hear. - George Orwell
mircojaeger Threadstarter
Hält's aus hier
Beiträge: 13

WIN XP,WIN Vista
Delphi 7 Enterprise
BeitragVerfasst: Di 26.05.09 12:59 
Mein Problem liegt darin, dass ich nicht weiterkomme...mein fortschritt hat sich nicht verändert(siehe anhanglink bei meiner allerersten nachricht(zur threaderöffnung)) seit öffnung dieses threads. kann mir nicht jemand "etwas behilflich;-)" sein bei dem Programm?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 26.05.09 13:19 
Und dafür hängst du ein Projekt an? Für ein paar Windows 3.1 Komponenten (fast 15 Jahre veraltet), und ein Memo, bei dem dieser Quelltext ausgeführt wird, wenn darin der text geändert wird?
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
  UpperCase('.jpg');
  UpperCase('.wmf');
  UpperCase('.bmp');
  UpperCase('.ico');
  UpperCase('.txt');
  UpperCase('.ini');
  UpperCase('.pas');
  UpperCase('.bas');
  UpperCase('.cpp');
  UpperCase('.bat');
  UpperCase('.cmd');
  UpperCase('.log');
  UpperCase('.html');
  UpperCase('.css');
  UpperCase('.dat');
  UpperCase('.rtf');
  UpperCase('.avi');
  UpperCase('.mid');
  UpperCase('.wav');
  UpperCase('.mpg');
  UpperCase('.xls');
  UpperCase('.js');
  UpperCase('.htm');
Dazu fällt mir nur ein:
Einen sehr guten Crashkurs findest du hier:
crashkurs.christian-stelzmann.de
und die neue Version speziell ab Turbo Delphi:
www.christian-stelzm...shkurs_reloaded.html

Ein weiteres gutes Online-Buch:
de.wikibooks.org/wik...grammierkurs:_Delphi

Da dir offenbar die elementarsten Grundlagen fehlen, wirst du mit einem solchen Projekt nicht besonders weit kommen. Auf jeden Fall musst du dir erst einmal die Grundlagen aneignen.

Zu deinem "Programm":
Reagieren musst du ja nicht darauf, dass etwas in das Memo getippt wird, sondern darauf, dass eine Datei ausgewählt wurde, dafür musst du dir die Ereignisse der Dateiliste anschauen.

Und dann musst du mit ExtractFileExt die Dateierweiterung abtrennen und prüfen um welche es sich handelt. Danach kannst du dann unterscheiden wie die Datei angezeigt werden muss.
thepaine91
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 763
Erhaltene Danke: 27

Win XP, Windows 7, (Linux)
D6, D2010, C#, PHP, Java(Android), HTML/Js
BeitragVerfasst: Di 26.05.09 13:45 
hm mal zu .bat musst du dann fragen ob execute oder read ^^ da man beides tun kann :)
Und wenn du noch einen Delphicrashcurs benötigst solltest du dein Programm erst mal ein wenig simpler gestalten.
Fang doch erst mal mit textformaten an das ist schon genug Arbeit.