AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Eine Frage zu ParamStr(x) und Leerzeichen
Thema durchsuchen
Ansicht
Themen-Optionen

Eine Frage zu ParamStr(x) und Leerzeichen

Ein Thema von Popov · begonnen am 3. Mär 2015 · letzter Beitrag vom 3. Mär 2015
Antwort Antwort
Popov
(Gast)

n/a Beiträge
 
#1

Eine Frage zu ParamStr(x) und Leerzeichen

  Alt 3. Mär 2015, 11:38
Eine frage: sind Parameter, also Werte, bzw. die Sreings in ParamStr() immer von beiden Seiten getrimmt? Damit meine, kann es vorkommen, dass ein Parameter mit einem Leerzeichen beginnt oder am Ende ein Leerzeichen hat?

Aus Erfahrung würde ich sagen, dass nein. Ich kann mich nicht erinnern je einen Parameter gehabt zu haben der Leerzeichen vor oder dahinter hatte. Das ist aber nur Erfahrung.
  Mit Zitat antworten Zitat
Benutzerbild von PaddyVII
PaddyVII

Registriert seit: 20. Nov 2014
Ort: Pforzheim
75 Beiträge
 
Delphi XE6 Enterprise
 
#2

AW: Eine Frage zu ParamStr(x) und Leerzeichen

  Alt 3. Mär 2015, 11:41
Allgemein kann man keine Parameter mit leerzeichen einbauen, da sonst eine Fehlermeldung "Felhelder Parametertyp" kommt...



Aber du hast recht,befindet sich ein leerzeichen am anfang oder am Ende, wir dieses später nichtmehr berücksichtigt - glaubich!
"Irren ist menschlich, aber wenn man richtigen Mist bauen will, braucht man einen Computer."
Dan Rather
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.160 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Eine Frage zu ParamStr(x) und Leerzeichen

  Alt 3. Mär 2015, 11:44
Er meint die "Kommandozeilenargumente" wenn du z.B. deine Anwendung aufrufst mit "meinProgramm.exe /someOption". Du meinst Argumente für Methoden wie
Delphi-Quellcode:
procedure someProc(ein Parameter: Integer);
begin
   // "einParameter" wäre korrekt
end;
PS: Ich würde FindCmdLineSwitch(..) nehmen, das finde ich einfacher als ParamStr(..)

PPS: Parameter werden eben doch über Leerzeichen getrennt. Wie kann ein Parameter da Leerzeichen enthalten?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#4

AW: Eine Frage zu ParamStr(x) und Leerzeichen

  Alt 3. Mär 2015, 11:46
Versuch macht klug. Ich hab mal ein neues Projekt erstellt, als Start-Parameter
Zitat:
Eins___Zwei__Drei_Vier //die _ sind Leerzeichen
festgelegt und im FormCreate diesen Code:
Delphi-Quellcode:
procedure TFormTest.FormCreate(Sender: TObject);
var
  i: integer;
begin
  for i := 1 to ParamCount do
    if ParamStr(i) <> trim(ParamStr(i)) then
      ShowMessage('Mit Leerzeichen');
end;
Es kommt wie erwartet keine Meldung, Windows trimmt AFAIK Whitespaces weg.

[edit]@Schönling: Manchmal sind Leerzeichen in Kommandozeilenparametern nützlich und gewünscht, dann muss man diese aber in Anführungszeichen einschließen:
Zitat:
Dings.exe "Parameter mit Leerzeichen"
[/edit]
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

Geändert von DeddyH ( 3. Mär 2015 um 11:49 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von PaddyVII
PaddyVII

Registriert seit: 20. Nov 2014
Ort: Pforzheim
75 Beiträge
 
Delphi XE6 Enterprise
 
#5

AW: Eine Frage zu ParamStr(x) und Leerzeichen

  Alt 3. Mär 2015, 11:47
Achsoo Upps mein Fehler
"Irren ist menschlich, aber wenn man richtigen Mist bauen will, braucht man einen Computer."
Dan Rather
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#6

AW: Eine Frage zu ParamStr(x) und Leerzeichen

  Alt 3. Mär 2015, 11:56
Wenn ich mich nicht irre, geht es mit 2 '' oder ". Muss man testen - kommt auf den konkreten Fall an. Mit eigenen Programmen kann man Parameter beliebig konstruieren.

Leerzeichen sind kein Problem mit SHELLEXECUTE.
Beispiel:
Delphi-Quellcode:
...
//wlan on
strParams:= 'wlan delete filter permission=denyall networktype=infrastructure';
ShellExecute(Application.Handle,NIL,'netsh', PWChar(strParams),NIL, SW_HIDE);
...

Geändert von hathor ( 3. Mär 2015 um 12:02 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#7

AW: Eine Frage zu ParamStr(x) und Leerzeichen

  Alt 3. Mär 2015, 11:59
Das sind ja auch einzelne Parameter.
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
Popov
(Gast)

n/a Beiträge
 
#8

AW: Eine Frage zu ParamStr(x) und Leerzeichen

  Alt 3. Mär 2015, 12:09
Danke euch.

Natürlich habe ich es selbst getestet, ich war mir nur nicht sicher ob es ein sich ständig wiederholender Zufall war, oder das System die Parameter "beschneidet".
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#9

AW: Eine Frage zu ParamStr(x) und Leerzeichen

  Alt 3. Mär 2015, 12:17
test" "test = ParamCount = 1
test test = ParamCount = 2
" " testtest = ParamCount = 2
" " testtest " " = ParamCount = 3

Geändert von hathor ( 3. Mär 2015 um 12:21 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 Beiträge
 
Delphi 12 Athens
 
#10

AW: Eine Frage zu ParamStr(x) und Leerzeichen

  Alt 3. Mär 2015, 12:24
Ja, die " werden auch mittendrin beachtet.

Auch wenn es eigentlich nicht für test" "test gedacht ist, sondern eher für test="test test" oder "test=test test" , welches dann als ParamStr(1) = 'test=test test' im Programm ankommt.

Wer die Parameter unverfälscht haben will, der muß über MSDN-Library durchsuchenGetCommandLine gehen und die Parameter selber parsen.
PS: Dort sieht man dann auch, warum die Params bei 1 beginnen.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 3. Mär 2015 um 12:27 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 16:04 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