![]() |
Paramater wärend der Laufzeit übergeben?
Hallo, kann mir wer vielleicht sagen, wie ich einer normale exe-datei z.B. als Parameter den eigenen Dateinamen wärend der Laufzeit anhängen kann?
|
Re: Paramater wärend der Laufzeit übergeben?
Den eigenen Dateinamen bekommst du automatisch als 1. Parameter ParamStr(0)
|
Re: Paramater wärend der Laufzeit übergeben?
:?: Was willst?
Code:
?
D:\irgendetwas.exe meinDelphiProgramm.exe
|
Re: Paramater wärend der Laufzeit übergeben?
was meinst du mit anhängen?
Willst du die gleiche Exe nochmal aufrufen nur eben mit (anderen) Parametern? Oder willst du für die laufende Instanz die Parameter ändern (was keinen Sinn machen würde) |
Re: Paramater wärend der Laufzeit übergeben?
Parameter werden nur beim Start ausgewertet. Ein nachträgliches übergeben ist nicht möglich ohne die Anwendung neu zu starten.
|
Re: Paramater wärend der Laufzeit übergeben?
mhh.. ja da geht es eigentlich nur um einen kleinen test den ich machen möchte:
ich möchte dateiendungen mit einem testprogramm verknüpfen, damit ich die mit meinem programm halt aufrufen kann. aber so bringt das ja nix, weil nur das testprogramm (ein leeres form) zu sehen ist. da dacht ich muss man doch irgentwe abfragen können, von was für einer datei ich aus geklickt habe also ich mein, zur visuellen darstellung den dateinamen der geklickten datei vielleicht in ein label eintragen |
Re: Paramater wärend der Laufzeit übergeben?
Hallo,
den Namen der Datei solltest du in der Regel als ersten Parameter übergeben bekommen. Du hast die Art der Übergabe doch selbst in der Registry angegeben. Grüße vom marabu |
Re: Paramater wärend der Laufzeit übergeben?
Zitat:
Zitat:
Erste Instanz des Programms mit Parametern starten -> Programm läuft. Zweite Instanz des selben Programms mit anderen Parametern starten -> die zweite Instanz "merkt" via Semaphore (oder eine ähnliche Technik) dass schon eine Instanz (und zwar die erste) des Programms läuft und sendet via Pipes (o.Ä.) eine Nachricht an diese in der die übergebenen Parameter übermittelt werden und schließt sich danach wieder. Die erste Instanz empfängt die Pipe-Nachricht und verarbeitet die übergebenen Parameter entsprechend. Fazit: Es ist möglich! Such mal nach Semaphore (CreateSemaphore), Pipes & MMF (Memory Mapped Files), damit mache ich ähnliches. |
Re: Paramater wärend der Laufzeit übergeben?
Zitat:
|
Re: Paramater wärend der Laufzeit übergeben?
Zitat:
Angenommen ich registriere eine eigene Dateiendung. Dann klicke ich doppelt auf diese Date mit meiner Dateiendung, was passiert? Das entsprechende Programm öffnet sich. So, es sollte sich aber nicht "nur" das Programm öffnen, sondern entsprechend der Datei die ich doppelt geklickt habe, etwas ausführen. Ganz einfach als Beispiel z.b. den Dateinamen der doppelt-geklicketn Datei im Label anzeigen. |
Re: Paramater wärend der Laufzeit übergeben?
Dann schreibst Du bspw. im OnShow-Event Deiner Mainform
Delphi-Quellcode:
Damit wird der in ParamStr(1) übergebene Dateiname in der Caption Deines Labels angezeigt.
Label1.Caption := ParamStr(1);
|
Re: Paramater wärend der Laufzeit übergeben?
Ok, das habe ich jetzt technisch soweit verstanden. aber eine frage brennt mich noch:
angenommen, ich möchte nicht den dateinamen, sondern den inhalt der datei abfragen.. wie gehe ich bei soetwas vor? |
Re: Paramater wärend der Laufzeit übergeben?
Mit Hilfe des Dateinamens die Datei öffnen und Inhalt einladen
|
Re: Paramater wärend der Laufzeit übergeben?
Damit Du den Dateinamen auch als Parameter bekommst, ist es wichtig, dass Du in der Registry im Schlüssel mit dem shell-open-Kommando, also dort wo deine Anwendung steht, die mit der Dateiendung verknüpft ist, den Parameter "%1" an die .exe hängst. Erst dann bekommt Deine Anwendung den Dateinamen vom Explorer als Parameter mit auf den Weg gegeben:
Code:
meinDateityp/shell/open (Standard) MeineAnwendung.exe "%1"
|
Re: Paramater wärend der Laufzeit übergeben?
Zitat:
Das Problem ist, dass wenn ich die Beispieldatei mit der Beispieldateiendung öffne, sich ja mein eigentlches Testprogramm öffnet und ein leeres Formular anzeigt. |
Re: Paramater wärend der Laufzeit übergeben?
Ja un diesem musst du mit Hilfe des übergeben Parameters (Dateiname inkl. Pfad) die Datei öffnen und Laden. Um was für eine art von Datei handelt es sich?
|
Re: Paramater wärend der Laufzeit übergeben?
Ok, jetzt habe ich verstanden. Ich werde umgehend alles testen.
Ich melde mich wenn ich mehr weis. |
Re: Paramater wärend der Laufzeit übergeben?
Super :thumb: Ich hab kapiert wie das funktioniert. Ich habe mir vorher alles viel schwieriger vorgestellt und mich deswegen da nicht rangetraut.
Folgendes hab ich gemacht (OnShow):
Delphi-Quellcode:
In der Textdatei ist die erste Zeile mit "XXXXXXXXXXXXXXXXX" gefüllt.
var
Liste: TStringList; begin Label1.Caption := ParamStr(1); // Dateipfad holen plus Dateiname -und Endung Liste := TStringlist.Create; Liste.LoadFromFile(Label1.Caption); Label2.Caption := Liste.Strings[Liste.Count]; XXX[...] wird folständig im Label2 angezeigt :) Edit: Eine Frage bezüglich ![]() Kann man das via ImageList ändern? Ich lade ein Bild in eine ImageList und übergebe es an die Funktion? Wenn das so geht, ich habe keine Ahnung, wo ich in der Funktion etwas ändern muss. Weil OpenKey('DefaultIcon'... hört sich für mich seltsam an |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:22 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