AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi ParamStr / ParamCount mit leeren Parametern?
Thema durchsuchen
Ansicht
Themen-Optionen

ParamStr / ParamCount mit leeren Parametern?

Ein Thema von ralfiii · begonnen am 23. Feb 2010 · letzter Beitrag vom 23. Feb 2010
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von ralfiii
ralfiii

Registriert seit: 30. Mai 2007
489 Beiträge
 
Delphi 2010 Professional
 
#1

ParamStr / ParamCount mit leeren Parametern?

  Alt 23. Feb 2010, 15:05
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?
  Mit Zitat antworten Zitat
s-off

Registriert seit: 20. Jan 2010
89 Beiträge
 
Delphi 2010 Professional
 
#2

Re: ParamStr / ParamCount mit leeren Parametern?

  Alt 23. Feb 2010, 15:12
Du kannst Dir mit CmdLine den kompletten Aufruf ausgeben lassen, und dann selber parsen
Gruß
s-off
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.429 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: ParamStr / ParamCount mit leeren Parametern?

  Alt 23. Feb 2010, 15:18
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
  Mit Zitat antworten Zitat
Benutzerbild von ralfiii
ralfiii

Registriert seit: 30. Mai 2007
489 Beiträge
 
Delphi 2010 Professional
 
#4

Re: ParamStr / ParamCount mit leeren Parametern?

  Alt 23. Feb 2010, 15:23
Zitat von s-off:
Du kannst Dir mit CmdLine den kompletten Aufruf ausgeben lassen, und dann selber parsen

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...)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: ParamStr / ParamCount mit leeren Parametern?

  Alt 23. Feb 2010, 15:23
Zitat von Blup:
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
Zitat von ralfiii:
Eine (Fremd-)Anwendung übergibt ein paar Parameter an meine.
Das klingt nicht so, als läge das in seiner Macht.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von ralfiii
ralfiii

Registriert seit: 30. Mai 2007
489 Beiträge
 
Delphi 2010 Professional
 
#6

Re: ParamStr / ParamCount mit leeren Parametern?

  Alt 23. Feb 2010, 15:32
Zitat von DeddyH:
Das klingt nicht so, als läge das in seiner Macht.
So ist es!
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;
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: ParamStr / ParamCount mit leeren Parametern?

  Alt 23. Feb 2010, 15:36
Wo gibst Du die Listen denn wieder frei?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von ralfiii
ralfiii

Registriert seit: 30. Mai 2007
489 Beiträge
 
Delphi 2010 Professional
 
#8

Re: ParamStr / ParamCount mit leeren Parametern?

  Alt 23. Feb 2010, 15:37
Zitat von DeddyH:
Wo gibst Du die Listen denn wieder frei?
Uups.
Extra ein Try und dann das Free vergessen. tststs....
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: ParamStr / ParamCount mit leeren Parametern?

  Alt 23. Feb 2010, 15:38
Dafür hast Du ja noch uns
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Alter Mann

Registriert seit: 15. Nov 2003
Ort: Berlin
934 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#10

Re: ParamStr / ParamCount mit leeren Parametern?

  Alt 23. Feb 2010, 16:02
Das setzt aber voraus, das in den Parametern keine Leerzeichen vorhanden sind.
Gibt es darfür eine Garantie?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:37 Uhr.
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