hyperion69
Goto Top

In Autohotkey Strings in einer Schleife hochzählen

Hallo Programmier-Profis,

Ich weiß, dass das hier jetzt ein nicht ganz richtiges Forum ist, aber ich bin so verwegen, mir hier trotzdem Hilfe zu erhoffen. Vielleicht weiß ja jemand, wo ich bei Autokey noch Hilfe bekommen kann, im dortigen Forum komme ich nicht weiter.

Ich bin ziemlich neu mit Autohotkey, ich habe vor langer Zeit in Visual Basic Code programmiert, verschüttete Grundkenntnisse sind also vorhanden.

Ich würde gerne einen String in einer Schleife hochzählen lassen - meine Herausforderung sieht so aus:


loop 19

{

MsgBox, 4, , "eMail-Adress" + %A_Index% + " already done?"

IfMsgBox No

Goto,LabelExit ; if eMail Adress has already been used goto labelexit: an start next loop

emName = "vvnn"+%A_Index%+"@gmx.de" ; My Target: if loop run >=10 then emName = vnnn10@gmx.de, vnnn11@gmx.de ...

if %A_Index% <10

emName = "vvnn"+"0"+%A_Index%+"@gmx.de" ; My Target: if loop run <10 0 must be added => emName = vnnn01@gmx.de

; hier sind die ausführbaren Routinen

LabelExit:

}


loop 20

{

emName := "vvnn" Format("{:02}", A_Index-1) "@gmx.de"

}

funktioniert leider nicht. Fehler: Call to non existing function

Ich habe aus Kompatibilitätsgründen AHK 1.0.47.6

Ich wäre sehr dankbar für die Unterstützung.

Danke fürs Lesen, Nachdenken und Antworten! Hyperion69

Content-Key: 385270

Url: https://administrator.de/contentid/385270

Printed on: April 25, 2024 at 05:04 o'clock

Member: mikimoto
mikimoto Sep 03, 2018 at 19:47:21 (UTC)
Goto Top
Hallo, Hyperion69,

Dein unteres Beispiel

loop 20
{
emName := "vvnn" Format("{:02}", A_Index-1) "@gmx.de"  
MsgBox, , , eMail-Adress: %emName%
}

funktioniert bei mir, liegt aber vielleicht daran, dass ich Version 1.1.26.01 benutze.

Ich habe Dein oberes Beispiel mal etwas modifiziert, Du musst auf die richtige Schreibweise bei der Variablenzuweisung achten.

loop 19
{
	MsgBox, 4, , eMail-Adress: %A_Index% already done?
	IfMsgBox, Yes
		Goto,LabelExit ; if eMail Adress has already been used goto labelexit: an start next loop
	emName := "vvnn" A_Index "@gmx.de" ; My Target: if loop run >=10 then emName = vnnn10@gmx.de, vnnn11@gmx.de ...  
	if A_Index <10
		emName := "vvnn0" A_Index "@gmx.de" ; My Target: if loop run <10 0 must be added => emName = vnnn01@gmx.de  
	; hier sind die ausführbaren Routinen
	MsgBox, , , eMail-Adress: %emName%
LabelExit:
}
Falls Du die IF-Abfrage umgehen willst, dann setz vor A_Index doch eine NULL und nimm die 2 rechten Zeichen, so hast Du es immer 2-stellig und kannst es leicht auf drei Stellen erweitern, wenn Du zwei Nullen davor setzt und die 3 rechten Zeichen mit stringright abschneidest.

loop 19
{
	MsgBox, 4, , eMail-Adress: %A_Index% already done?
	IfMsgBox, Yes
		Goto,LabelExit ; if eMail Adress has already been used goto labelexit: an start next loop
	cnt := "0" A_index  
	stringright, cnt, cnt, 2
	emName := "vvnn" cnt "@gmx.de"  
	; hier sind die ausführbaren Routinen
	MsgBox, , , eMail-Adress: %emName%
LabelExit:
}
Und natürlich sollte es IfMsgBox, Yes heissen, wenn Du alles überspringen willst, wenn die Mailadresse bereits existiert.

Ich hoffe, das hilft Dir weiter.

Gruß, Mikimoto