Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Parameter (https://www.delphipraxis.net/53571-parameter.html)

sysadmin 19. Sep 2005 10:57


Parameter
 
Hallo

Ich komme mit ParamStr nicht so ganz nach.

Ich habe folgendes Programm bereits geschrieben.

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  ShellExecute(application.Handle, 'print','Pfad\Datei', nil, nil, SW_Show);
end;
Nun möchte ich Pfad\Datei als Parameter mitgeben, wenn ich das Programm mit Ausführen starte

zB. Pfad\MeinProgramm.exe Pfad\Datei

Danke

Hador 19. Sep 2005 11:03

Re: Parameter
 
Einfach:
Delphi-Quellcode:
ShellExecute(application.Handle, 'print','Pfad\Datei', 'Parameter', nil, SW_Show);
Ich hoffe mal, dass ich das noch richtig im Gedächtnis habe ^^

Und abfragen dann über
Delphi-Quellcode:
ParamStr(1)
EDIT:

Zitat:

Zitat von Delphi 7 PE Hilfe
HINSTANCE ShellExecute(

HWND hwnd, // handle to parent window
LPCTSTR lpOperation, // pointer to string that specifies operation to perform
LPCTSTR lpFile, // pointer to filename or folder name string
LPCTSTR lpParameters, // pointer to string that specifies executable-file parameters
LPCTSTR lpDirectory, // pointer to string that specifies default directory
INT nShowCmd // whether file is shown when opened
);


Kroko1999 19. Sep 2005 11:05

Re: Parameter
 
(1) paramstr (0)
(2) Application.exename

n0b0dy 19. Sep 2005 11:09

Re: Parameter
 
das andere programm startest du so:

Delphi-Quellcode:
  ShellExecute(Handle, 'open', 'exename', 'Pfad\Datei', nil, SW_SHOWNORMAL);
und die auswertung im ersten programm folgendermaßen
Delphi-Quellcode:
  if ParamCount > 0 then
    Showmessage(ParamStr(1))

// gibt dann Pfad\Datei aus

himitsu 19. Sep 2005 12:17

Re: Parameter
 
Und net vergessen Pfad\Datei in " einzuschließen, sonst kann es dir passieren, daß deine Dateiangaben auf mehrere Parameter aufgesplittet werden. (wenn z.B. Leerzeichen enthalten sind)
Code:
ShellExecute(application.Handle, 'print','[color=red]"[/color]Pfad\Datei[color=red]"[/color]', nil, nil, SW_Show);

sysadmin 19. Sep 2005 13:03

Re: Parameter
 
Anscheindend Versteht ihr mich falsch oder ich euch.

Ich habe hier mein Druckprogramm "MyProgramm.exe" jetzt möchte ich das mit der Eingabe aufforderung starten und gleichzeitig dem Programm den Pfad und Dateinamen des Files geben welches es ausgeben soll.
In der Eingabeaufforderung sieht das dann so aus:
C:\MyProgramm.exe -"C:\Dokumente und Einstellungen\Benutzer\Eigene Dateien\File.txt"

leddl 19. Sep 2005 13:12

Re: Parameter
 
Wie jetzt? Per Eingabeaufforderung, oder per ShellExecute? Drück dich doch mal deutlich aus. Wie es per ShellExecute geht wurde es dir doch jetzt mehrfach gesagt.
Falls es dir darum geht die Parameter mit denen deine Anwendung gestartet wurde zu erfahren (Danach hast du aber bisher nun wirklich nicht geftag), dann fragst du eben ParamStr ab. ParamStr[0] ist der Pfad und Name deines Programmes, ParamStr[1] ist der erste Parameter, ParamStr[2] der zweite. Vor dem Auslesen solltest du allerdings per ParamCount überprüfen, wieviele Parameter angegeben wurden.

Christian Seehase 19. Sep 2005 13:18

Re: Parameter
 
Moin Sysadmin,

dann könntest Du es so aufrufen:

Delphi-Quellcode:
ShellExecute(0,'open','cmd.exe',nil,PChar('/C "C:\MyProgramm.exe" "C:\Pfad zu der Datei\Datei.txt"'),SW_SHOW);
[EDIT]

Ggf so:

Delphi-Quellcode:
ShellExecute(0,'open','cmd.exe',nil,PChar('/C "C:\MyProgramm.exe" "'+paramstr(1)'"'),SW_SHOW);
wobei Du hier, wie schon angesprochen wurde, erst einmal prüfen solltest, ob paramstr(1) überhaupt etwas enthält.
[/EDIT]

sysadmin 20. Sep 2005 07:44

Re: Parameter
 
Habe mein Problehm gelöst. Vielen Dank an für eure Hilfe.

Mein Code:
Delphi-Quellcode:
if ParamCount > 0 then
ShellExecute(application.Handle, 'print', PChar(ParamStr(1)), nil, nil, SW_Show);

leddl 20. Sep 2005 08:19

Re: Parameter
 
Wobei ich mir jetzt gerade nicht ganz sicher bin, ob ParamCount nicht auch ParamStr[0] mitzählt... :gruebel: Ich denke eigentlich schon. Daher solltest du evtl auf "ParamCount > 1" prüfen.
Probiers mal aus, ich hab grade leider kein Delphi zur Hand.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:50 Uhr.
Seite 1 von 3  1 23      

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