![]() |
ParamStr / ParamCount mit leeren Parametern?
Hallo!
Ich hab grad feststellen müssen, dass ParamCount und ParamStr(i) nicht so richtig tun wie ich das gerne hätte. Eine (Fremd-)Anwendung übergibt ein paar Parameter an meine. Wenn ein Parameter leer bleibt, dann übergibt die Anwendung ganz brav Doppelte Anführungszeichen (""). Nur: Delphi wirft die dann einfach weg. D.h. ein Aufruf von foo.exe Param1 "" "Param3" "" Param5 liefert ParamCount=3 ParamStr(1)=Param1 ParamStr(2)=Param3 ParamStr(3)=Param5 Das bei Param3 die umgebenden Anführungszeichen entfernt werden ist gut so, nicht aber, dass die leeren Parameter weggeworfen werden. Unglücklicherweise sind die Anzahl und Position der Parameter nämlich essenziell für mich. Gibt's da andere Methoden um das auszuwerten? |
Re: ParamStr / ParamCount mit leeren Parametern?
Du kannst Dir mit CmdLine den kompletten Aufruf ausgeben lassen, und dann selber parsen
|
Re: ParamStr / ParamCount mit leeren Parametern?
Die Bedeutung der Parameter über die Position zu definieren ist kein guter Ansatz.
Besser etwas in diese oder ähnlicher Form: foo.exe -Parametername:Wert -Parametername:Wert |
Re: ParamStr / ParamCount mit leeren Parametern?
Zitat:
CmdLine kenn ich schon, ich will mir primär das selber-parsen sparen. Schnell geraten scheint ExtractStrings + AnsiDeQuotedStr die Antwort auf meine Frage zu sein. (Wenn jemand eine bessere Idee hat so möge er nun sprechen...) |
Re: ParamStr / ParamCount mit leeren Parametern?
Zitat:
Zitat:
|
Re: ParamStr / ParamCount mit leeren Parametern?
Zitat:
Simple Lösung:
Delphi-Quellcode:
function ExParamCount : integer;
var StrL: TStringList; begin StrL:=TStringList.Create; try ExtractStrings([' '], [], CmdLine, StrL); result:=StrL.Count-1; finally StrL.Free; end; end; function ExParamStr(i : integer) : string; var StrL: TStringList; begin StrL:=TStringList.Create; try ExtractStrings([' '], [], CmdLine, StrL); if i>=StrL.Count then result:='' else result:=AnsiDeQuotedStr(StrL[i], '"'); finally StrL.Free; end; end; |
Re: ParamStr / ParamCount mit leeren Parametern?
Wo gibst Du die Listen denn wieder frei?
|
Re: ParamStr / ParamCount mit leeren Parametern?
Zitat:
Extra ein Try und dann das Free vergessen. tststs.... |
Re: ParamStr / ParamCount mit leeren Parametern?
Dafür hast Du ja noch uns :zwinker:
|
Re: ParamStr / ParamCount mit leeren Parametern?
Das setzt aber voraus, das in den Parametern keine Leerzeichen vorhanden sind.
Gibt es darfür eine Garantie? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:43 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