Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Datei via Windowspopup laden (https://www.delphipraxis.net/106785-datei-via-windowspopup-laden.html)

JB-1990 16. Jan 2008 17:22


Datei via Windowspopup laden
 
Hey ho,
wie kann ich meinem Programm beibringen, dass es z.B.: den inhalt einer *.txt Datei laden soll, wenn es via Popup von Windows also "Öffnen mit" geöffnet wird.

Bsp.: Katzenlader.exe

psycho.katze <--- rechtskick ---> öffnen mit ---> Katzenlader.exe ---> Inhalt von psycho.katze wird angezeigt...

LG

mkinzler 16. Jan 2008 17:28

Re: Datei via Windowspopup laden
 
In dem du das Programm mit der Endung verknüpfst

OregonGhost 16. Jan 2008 17:31

Re: Datei via Windowspopup laden
 
Geht es vielleicht eher darum, dass dein Programm noch nicht weiß, was es tun soll? In dem Fall wäre vielleicht das Verarbeiten der Kommandozeilenparameter mithilfe von ParamStr() dein Ansatzpunkt.

JB-1990 16. Jan 2008 17:48

Re: Datei via Windowspopup laden
 
thx werd das ma ausprobiern, meld mich bei Problemen

JB-1990 3. Mär 2008 18:08

Re: Datei via Windowspopup laden
 
So hatte ma wieder zeit und so richtig versteh ich nicht, was der ParamStr() macht, kann mir einer erklären, was ich da eintragen muss? Und warum das da hin muss und was man da auch schreiben könnte?
Und dann wär 'ne Anleitung zum Verknüpfen von Datein an ein beliebiges Format noch ganz praktisch (so das es bei jedem rechner funktioniert)

dominikkv 3. Mär 2008 18:42

Re: Datei via Windowspopup laden
 
In ParamStr() kannst du nix reinschreiben!
Wenn du eine Datei (zB deine psycho.katze) mit deinem Programm öffnest wird dein Programm gestartet und es werdem ihm als Parameter der Speicherort der Datei angegeben.
Mit ParamCount bekommst du die Anzahl der Parameter.
In ParamStr(0) steht der Pfad zur eigenen exe.
In ParamStr(1) würde dann also der Pfad zu der psycho.katze stehen, die kannst du dann laden.

JB-1990 5. Mär 2008 20:12

Re: Datei via Windowspopup laden
 
quasi nur ins OnCreate

Delphi-Quellcode:
FOR i:=0 TO ParamCount DO BEGIN
 ParamStr(i)
END;
???

SirThornberry 5. Mär 2008 20:16

Re: Datei via Windowspopup laden
 
Weißt du was Kommandozeilenparameter sind? Oder anders. Weißt du was passiert wenn du eine Datei mit "Öffnen mit..." öffnest? Wüsstest du wie du das gleiche über die Kommandozeile (cmd) oder per "Start->Ausführen..." erreichst?

Ich frage nicht aus Bösartigkeit sondern weil ich den Eindruck habe das du das nicht weißt und dann wäre es angebracht dir zuerst das zu erklären damit du mit ParamStr und ParamCount etwas anfangen kannst und es nicht nur verwendest.

JB-1990 5. Mär 2008 20:21

Re: Datei via Windowspopup laden
 
naja über "cmd" könnt ich das nicht erreichen...halt nur über den Opendialog... *verlegengug*

P.S.: Mir reicht das was wir in der Schule lernen nicht für den Privatgebrauch und find es auch echt gut, dass es so ein Forum gibt und man sich mit leuten unerhalten kann, die davon Ahnung haben und bereit sind ihr wissen zu teilen

SirThornberry 5. Mär 2008 20:30

Re: Datei via Windowspopup laden
 
Ok, dann hole ich mal etwas weiter aus. Früher (also vor gaaaanz vielen Jahren) wurde noch im Textmodus gearbeitet. Man hatte Kommandos um Dateien zu löschen, verschieben, umzubenennen etc. und musste denen natürlich auch die Informationen mitgeben was gelöscht, verschoben, umbenannt etc. werden soll. Bsp.:

Wenn man eine Datei umbenennen wollte konnte man das Kommando "rename" nutzen. Dieses erwartete als ersten Parameter die Datei die umbenannt werden soll und als zweiten Parameter den neuen Dateinamen:
Code:
rename alter_dateiname.txt neuer_dateiname.txt
Dieses Prinzip ist bis heute erhalten geblieben. Wenn du einen Doppelklick auf ein Dokument im Explorer machst, wird das dazu gehörige Programm gestartet und die angeklickte Datei wird als Parameter übergeben.
Code:
notepad.exe Textdatei.txt
Wenn du eine Datei per "öffnen mit..." öffnest, passiert auch ganz genau das selbe. Über die Kommandozeile, Start->Ausführen, und viele andere Arten, kannst du auch mehrere Parameter übergeben.

Wenn du
Code:
c:\.....\Katzenlader.exe Datei1.txt Datei2.txt Datei3.txt
unter ausführen eingibst, werden der Datei Katzenlader.exe 3 Parameter übergeben.
Mit
Delphi-Quellcode:
parameter_zahl := ParamCount();
kannst du die Anzahl der Parameter abfragen.

Mit
Delphi-Quellcode:
erster_parameter := ParamStr(1);
würdest du "Datei1.txt" bekommen und so weiter.

Namenloser 5. Mär 2008 20:40

Re: Datei via Windowspopup laden
 
Hallo,
Kommandozeilenparameter sind eine Möglichkeit, Programmen bestimmte Parameter - ähnlich wie bei einer Delphi-Function - zu übergeben. Bei der Function "Showmessage" schreibst du ja
Delphi-Quellcode:
showmessage('Hallo Welt');
übergibst also 'Hallo Welt' als Parameter an die Funktion.
So ähnlich geht das auch bei Programmen in der Kommandozeile (Eingabeaufforderung). Dort werden die parameter aber nicht in Klammern geschrieben, sondern einfach hinten an den Dateinamen angehängt, z.B.:
Code:
chkdisk.exe c
"C" ist also ein Parameter (in diesme fall das Laufwerk), der chkdisk.exe übergeben wird. Es können natürlich auch mehrere parameter übergeben werden, die werden dann eifanch hintereinander mit einem Leerzeichen dazwischen geschrieben. Damit du in deinem programm diese Parameter bearbeiten aknnst, musst du sie natürlich auch irgendwie abrufen können. In Delphi steht in "ParamCount" die Anzahl der Parameter, mit ParamStr(n) kannst du die einzelnen parameter auslesen. (n ist der Index des Parameters, also 1 ist der erste, 2 der zweite usw)
Wenn du jetzt im Explorer mit Rechtsklick eine Datei öffnest, macht Windows intern nichts anderes, als deine Exe mit dem dateinamen als Parameter zu starten. In der Kommandozeile sähe das so aus:
Code:
katzenlader.exe "psycho.katze"
Wenn du in deinem Programm diesen Parameter benutzen willst, schreibst du also einfach ParamStr(1).


[add] grmbl, war klar, dass einer schneller sein würde... da hab ich jetzt aber zu lang dran getippt, um es nicht abzuschicken :stupid: [/add]

JB-1990 6. Mär 2008 18:33

Re: Datei via Windowspopup laden
 
Danke an euch beide, echt super Erklärung. Wäre ohne eure Hilfe echt verzweifelt, weil die Delphihilfe bezüglich dessen nich besonderes liefert. Kann es ja auch nicht, der Exkurs durch die Geschichte war echt gut, hab ich schon fast vergessen gehabt...nutz zwar oft das "Ausführen" aber das die damals richtig abhängig von sowas waren, is bei mir voll in den Hinterkopf geraten *michschäm*
Auch die Erklärung zu den Parametern, was sie eigentlich sind und in welcher art sie vorliegen können war auch echt interessant...THX an euch beide, funktioniert jetzt echt prima. Sogar so, dass ich 100%ig weiß, was da passiert und warum das gebraucht wird.
fettes THX.

liebe Grüße JB-1990

JB-1990 23. Okt 2008 00:34

Re: Datei via Windowspopup laden
 
Das klappt alles supi, war ja auch sehr gut erklärt. Jetzt ist mir irgendwann mal in den Sinn gekommen meinen Editor noch toller zu machen und Tabs einzufügen, jetzt kommt das Problem, dass wenn ich mehrere Textdatein markiere und auf öffnen drücke es mir immer wieder meine EXE ausführt und in jeder was anderes drin steht (logisch sind ja 3 verschiedene Datein) hab mit paramcount überprüft und jede application gibt mir den Wert 1 zurück. Irgendwas stimmt also mit den Kommandozeilenparametern ni so richtig, denn würde alles glattlaufen, würde es mir ja ne 3 geben =(
Frage: Wie kann ich meinem Programm sagen, dass es sich in so einem Fall nur einmal öffnen soll?
LG JB-1990

JB-1990 1. Dez 2008 19:35

Re: Datei via Windowspopup laden
 
keiner ne idee?


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:46 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz