Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Parameter für eigenes Programm programmieren ... (https://www.delphipraxis.net/40633-parameter-fuer-eigenes-programm-programmieren.html)

Amnon82 18. Feb 2005 13:52


Parameter für eigenes Programm programmieren ...
 
Ich programmiere zur Zeit ein kleines Tool, um ein Programm fernzusteuern.
Nun wollte ich meinem Programm schalter über den cmd-befehl spendieren, nur hab ich überhaupt keine
Ahnung wie man das anstellt.

Zur Zeit benutze ich folgenden Befehl um eine Datei mit meinem Programm zu öffnen:

Programm.exe ZuoeffendeTXTDatei.txt

Mit if paramcount > 0 then edit2.text:=(paramstr(1)); trage ich den Pfad der TXTDatei in eine Edit.

Nun wollte ich dem Programm folgende Schalter spendieren:

Programm.exe -TXT "ZuoeffendeTXTDatei.txt" -Shutdown

-Shutdown soll im Programm einen Hacken setzen, damit das Programm nach Beendigung den PC herrunterfährt.

... nur komm ich nicht drauf, wie ich solche Schalter für CMD programmieren kann. Bisher hab ich nur GUIs programmiert.

Sprint 18. Feb 2005 14:02

Re: Parameter für eigenes Programm programmieren ...
 
Schau in der Delphi Hilfe unter FindCmdLineSwitch.

alcaeus 18. Feb 2005 14:09

Re: Parameter für eigenes Programm programmieren ...
 
AFAIR gibts ParamCount und ParamStr doch auch bei Konsolenanwendungen, oder taeusche ich mich da (wieder mal)? :gruebel:

Greetz
alcaeus

ste_ett 18. Feb 2005 14:10

Re: Parameter für eigenes Programm programmieren ...
 
Nein, kann man normal nutzen. :)

Binärbaum 18. Feb 2005 14:11

Re: Parameter für eigenes Programm programmieren ...
 
Wenn die Eingabe z.B. wie folgt lautet:
Code:
Programm.exe -TXT "ZuoeffendeTXTDatei.txt" -Shutdown
dann kann man doch über Paramstr(3) den 3. Parameter (hier: -Shutdown) erhalten. Dann muss man nur noch prüfen, ob der Parameter auch "-Shutdown" ist, und kann dementsprechend darauf reagieren.

MfG
Binärbaum

Amnon82 18. Feb 2005 14:48

Re: Parameter für eigenes Programm programmieren ...
 
Ich hab nun diese Funktion gefunden:

Delphi-Quellcode:
function GetCmdLineSwitchValue(out AValue: string; const ASwitch: string; const IgnoreCase: Boolean = True): Boolean;
const
   CompareFunction: array[Boolean] of function(const s1,s2: string): Integer = ( CompareStr, CompareText );
var
   iCmdLine,iSplit: Integer;
   s,sName,sValue: String;
begin
   Result := False;

   for iCmdLine := 1 to ParamCount do
   begin
      s := ParamStr(iCmdLine);


      if not (s[1] in ['-','/']) then
         Continue;

      Delete(s,1,1);
      iSplit := Pos(':',s);
      if iSplit = 0 then
         iSplit := Pos('=',s);

      if iSplit = 0 then
         Continue;

      sName := Copy(s,1,iSplit-1);
      sValue := Copy(s,iSplit+1,666);

      if CompareFunction[IgnoreCase](ASwitch,sName) = 0 then
      begin
         AValue := sValue;
         Result := True;
         Break;
      end;
   end;
end;
Sie stammt aus dieser Unit: UCommandLine

Mit Programm.exe -TXT:"C:\zuoeffendestxtfile" -shutdown kann ich dann bei create mit Hilfe folgendem Codes:

Delphi-Quellcode:
GetCmdLineSwitchValue(Value1,'ecl',False);
Edit2.Text:=value1;
if FindCmdLineSwitch('shutdown', ['-','/'], True) then checkbox2.checked:=true;
Nur wie kann ich die Funktion umschreiben, damit Programm.exe -TXT "C:\zuoeffendestxtfile" -shutdown funktioniert. Sprich ohne dem : hinter -TXT

maximov 18. Feb 2005 14:50

Re: Parameter für eigenes Programm programmieren ...
 
Oder mal ins Delphi-forum kucken:

sdParams.pas Leichteres Arbeiten mit übergebenden Parameter

Die unit dürfte dafür wie geschaffen sein :)

ste_ett 18. Feb 2005 15:23

Re: Parameter für eigenes Programm programmieren ...
 
Mit
Delphi-Quellcode:
if (FindCmdLineSwitch('shutdown')) then
kannst du prüfen, ob -shutdown oder /shutdown als Parameter angegeben wurde.

Das kann auch z.B. so aussehen:

name.exe -txt "c:\das ist mein pfad\name.txt" -shutdown

-txt und -shutdown werden so als Parameter erkannt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:58 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