Optionale Programmparameter

Post a reply


In an effort to prevent automatic submissions, we require that you complete the following challenge.
Smilies
:D :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :| :mrgreen: :geek: :ugeek: :arrow: :angel: :clap: :crazy: :eh: :lolno: :problem: :shh: :shifty: :sick: :silent: :think: :thumbup: :thumbdown: :salute: :wave: :wtf: :yawn: :facepalm: :bravo: :dance: :beard: :morebeard: :xmas: :HeHe: :trollface: :cookie: :rainbow: :monkeysee: :monkeysay: :happybday: :headwall: :offtopic: :superhappy: :terms: :beer:
View more smilies

BBCode is ON
[img] is OFF
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Optionale Programmparameter

Re: Optionale Programmparameter

Post by garry » 01 Mar 2019, 07:29

@LuckyJoe, nnnik , danke
hier noch ein Beispiel wie ich Euer script verwendet habe

Code: Select all

;-------- https://www.autohotkey.com/boards/viewtopic.php?f=9&t=60075   user : LuckyJoe , nnnik 
;===================================================
;------- SEND.ahk  < run this after receiver.ahk is created 
/*
e4:="
(Ltrim Join_
Red-1-AAA
Green-2-BBB
Blue-3-CCC"
)
run,%a_scriptdir%\receiver.ahk First_Line 200 20 5 %e4%
return
*/
;===================================================
;====================================================================
;------- RECEIVER.ahk
If (A_Args.Length() = 0)
{
	MsgBox, % "at least 1 parameter - break"
	ExitApp
}
MyReceiver(A_Args*)
Return
;-----------
MyReceiver(P1:="", P2:="", P3:="", P4:="" ,P5:="")
{
;parameter-3 is GUI x-position
;parameter-4 is GUI y-position
global t1
transform,s,chr,32
Gui,1:Font,s12 cBlack, Lucida Console
Gui,add,text,vT1 
stringreplace,p5,p5,_,`n,all
stringreplace,p5,p5,-,%s%,all
Gui, Add, Edit, x10 y1 r10 w600 ReadOnly ,Parameter-1=%P1%`nParameter-2=%P2%`nParameter-5=`n%P5%
Gui, Show, x%p3% y%p4%, Receiver
GuiControl,1:Focus,T1
return
GuiClose:
ExitApp
}
;======================= end receiver.ahk =============================

Re: Optionale Programmparameter

Post by LuckyJoe » 17 Dec 2018, 17:36

...wow :clap:
schön schlank, übersichtlich und läuft! ... und jetzt habe ich endlich auch das "variadische" * verstanden.

Danke nnnik!

Re: Optionale Programmparameter

Post by nnnik » 17 Dec 2018, 16:59

pX und pY sind die Werte die übergeben werden.
Da du pY und pX festlegst werden immer pY und pX übergeben und niemals die Werte die eingegeben werden würden wenn du die beiden weglässt.
Wenn du die Parameter haben oder weglassen willst, je nachdem ob sie vorhanden sind oder nicht müsstest du hier entweder mit A_Args arbeiten oder viele Ifs verwenden.
Die A_Args Variante könnte so aussehen:

Code: Select all

; Zeigt einen Tooltip mit den an dieses Script übergebenen Parametern an:
; 1. Parameter: (Text) - Der Text, der ausgegeben werden soll
; 2. Parameter: (Zeit) - Die Zeit in Sekunden, die der Tooltip angezeigt werden soll (ohne Parameter: 5 Sek.)
; 3. Parameter: (x) - x-Koordinate, wo der Tooltip erscheinen soll
; 4. Parameter: (y) - y-Koordinate, wo der Tooltip erscheinen soll

If (A_Args.Length() = 0)
{
	MsgBox, % "Mindestens ein Parameter erforderlich! - Abbruch"
	ExitApp
}

MyToolTip(A_Args*) ;übergebe den Array als einzelne parameter.
Return

MyToolTip(Text, Sekunden:=5, x:=100, y:=150){
	ToolTip, % "`n" Text "`n ", x, y
	Sleep Sekunden * 1000
}

Optionale Programmparameter

Post by LuckyJoe » 17 Dec 2018, 14:08

Hallo zusammen,

ich habe ein kleines Script, das ich mit Parametern von anderen Programmen aufrufen möchte. Dabei sollen die letzten 3 Parameter optional sein:

Code: Select all

; Zeigt einen Tooltip mit den an dieses Script übergebenen Parametern an:
; 1. Parameter: (Text) - Der Text, der ausgegeben werden soll
; 2. Parameter: (Zeit) - Die Zeit in Sekunden, die der Tooltip angezeigt werden soll (ohne Parameter: 5 Sek.)
; 3. Parameter: (x) - x-Koordinate, wo der Tooltip erscheinen soll
; 4. Parameter: (y) - y-Koordinate, wo der Tooltip erscheinen soll

pText = %1%
pZeit = %2%
pX    = %3%
pY    = %4%

If (A_Args.Length() = 0)
{
	MsgBox, % "Mindestens ein Parameter erforderlich! - Abbruch"
	ExitApp
}

MyToolTip(pText, pZeit, pX, pY)
Return

MyToolTip(Text, Sekunden:=5, x:=100, y:=150){
	ToolTip, % "`n" Text "`n ", x, y
	Sleep Sekunden * 1000
}
Das funktioniert soweit gut, wenn ich alle 4 Parameter übergebe. Lasse ich aber die beiden letzten weg, dann erscheint der Tooltip nicht bei x: 100 / y: 150, sondern in der Nähe des Mauscursors.

Seltsam hierbei finde ich folgendes:
Konstruiere ich meine Funktion nur mit 2 Parametern (letzter optional): MyToolTip(Text, Sekunden:=5)..., dann kann ich bei der Parameterübergabe die Zeit weglassen und es wird die angegebenen 5 Sekunden gewartet.
Was mache ich falsch?

HG - Lucky Joe

Top