![]() |
Eine Frage zu ParamStr(x) und Leerzeichen
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. |
AW: Eine Frage zu ParamStr(x) und Leerzeichen
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! |
AW: Eine Frage zu ParamStr(x) und Leerzeichen
Er meint die "Kommandozeilenargumente" wenn du z.B. deine Anwendung aufrufst mit "meinProgramm.exe /someOption". Du meinst Argumente für Methoden wie
Delphi-Quellcode:
PS: Ich würde
procedure someProc(ein Parameter: Integer);
begin // "einParameter" wäre korrekt end; ![]() PPS: Parameter werden eben doch über Leerzeichen getrennt. Wie kann ein Parameter da Leerzeichen enthalten? |
AW: Eine Frage zu ParamStr(x) und Leerzeichen
Versuch macht klug. Ich hab mal ein neues Projekt erstellt, als Start-Parameter
Zitat:
Delphi-Quellcode:
Es kommt wie erwartet keine Meldung, Windows trimmt AFAIK Whitespaces weg.
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; [edit]@Schönling: Manchmal sind Leerzeichen in Kommandozeilenparametern nützlich und gewünscht, dann muss man diese aber in Anführungszeichen einschließen: Zitat:
|
AW: Eine Frage zu ParamStr(x) und Leerzeichen
Achsoo Upps mein Fehler :oops::oops::oops::oops::oops:
|
AW: Eine Frage zu ParamStr(x) und Leerzeichen
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); ... |
AW: Eine Frage zu ParamStr(x) und Leerzeichen
Das sind ja auch einzelne Parameter.
|
AW: Eine Frage zu ParamStr(x) und Leerzeichen
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". |
AW: Eine Frage zu ParamStr(x) und Leerzeichen
test" "test = ParamCount = 1
test test = ParamCount = 2 " " testtest = ParamCount = 2 " " testtest " " = ParamCount = 3 |
AW: Eine Frage zu ParamStr(x) und Leerzeichen
Ja, die " werden auch mittendrin beachtet.
Auch wenn es eigentlich nicht für
Delphi-Quellcode:
gedacht ist, sondern eher für
test" "test
Delphi-Quellcode:
oder
test="test test"
Delphi-Quellcode:
, welches dann als
"test=test test"
Delphi-Quellcode:
im Programm ankommt.
ParamStr(1) = 'test=test test'
Wer die Parameter unverfälscht haben will, der muß über ![]() PS: Dort sieht man dann auch, warum die Params bei 1 beginnen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:04 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 by Thomas Breitkreuz