Exe File Parameter übergeben
-
Hallo,
ich möchte im Verzeichniss einen File auswählen
und mit "Öffnen mit" meine Anwendung auswählen.
Nun wird in der Anwendung der Selektierten File in einen Buffer
geladen.Wie stellt man soetwas an?
-
ParamStr
-
Hallo
außerdem FAQ anschauen.
bis bald
akari
-
if(ParamStr(1)== "") //String mit Index 1 { //String Index 0 ist das verzeichniss des Programms Application->MessageBox("No Parameter","Info",MB_OK); } else { Edit1->Text = ParamStr(1); }Funktioniert, danke für die Hilfe.
-
hermes schrieb:
Funktioniert, danke für die Hilfe.
Falsch!
Dass funktioniert nur so lange, wie der Pfad zur Datei keine Leerzeichen enthält, wenn du also z.B. auf diese Methode mit der Datei "C:\Dokumente und Einstellungen\Dein Name\test.txt" zugreifen willst, und dazu nur ParamStr(1) verwendest, dann versuchst du die Datei "C:\Dokumente" zu öffnen!Steht auch in der FAQ: Du musst alle Parameter > 0 aneinander Reihen!
Damit bist du auf jeden Fall auf der sicheren Seite!
-
Reyx schrieb:
Dass funktioniert nur so lange, wie der Pfad zur Datei keine Leerzeichen enthält
Woher kommt dieser Aberglaube?
ParamStr funktioniert 100% zuverlässig auch mit Strings, die Leerzeichen enthalten. Wichtig ist nur, dass die Strings korrekt übergeben werden, d.h. im Zeifelsfall in (zusätzliche) Anführungszeichen eingefasst werden.
Im Falle des 'Öffnen mit' heisst das, dass diese Anführungszeichen schon im entsprechenden Registryeintrag stehen müssen.
-
Desshalb habe ich ja auch hinzugefügt "Damit bist du auf jeden Fall auf der sicheren Seite"

Ich habe schon oft Programme gehabt, die gerade diesen Registry-Eintrag nicht bedacht haben, und dann durfte ich ständig manuell in den Datei<->Programm Verknüpfungen rumpfuschen!
Er könnte natürlich auch einfach beim Start prüfen, ob dass der Fall ist, aber ich würde mich nie darauf verlassen, dass die Datei-Programm Assoziation richtig eingerichtet wurde (außer natürlich, ich mach es selber). Und wenn er nur eine Datei laden will (also nicht mehrere), dann ist auch nichts dagegen einzuwenden, alle Parameter aneinander zu ketten...
-
Das "Aneinderketten" ist nicht praktikabel. Woher willst du wissen, welche Teile zusammengehören und welche als zusätzliche Parameter gedacht sind?
Auf der sicheren Seite ist man allein mit korrekt übergebenen Strings.