gegeben: Name eines Arrayelements als Text, gesucht: sein Wert

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: gegeben: Name eines Arrayelements als Text, gesucht: sein Wert

Re: gegeben: Name eines Arrayelements als Text, gesucht: sein Wert

Post by nnnik » 08 May 2019, 03:54

Stimmt tatsächlich.

Re: gegeben: Name eines Arrayelements als Text, gesucht: sein Wert

Post by just me » 08 May 2019, 03:28

nnnik wrote:Du brauchst die %% nie in die [] Klammern zu packen.


Moin,
wie meinst Du das?
Z.B.

Code: Select all

Wert := %M1%[%M2%] ;Ergebnis: 7
M2 enthält b, %M1%[M2] würde deshalb zu Var[ b ] aufgelöst und kein Ergebnis liefern.

Re: gegeben: Name eines Arrayelements als Text, gesucht: sein Wert

Post by nnnik » 08 May 2019, 01:41

Du brauchst die %% nie in die [] Klammern zu packen.
Wenn du als RegexMatch: .*?\[.*?\] verwendest sollte es selbst dann noch funktionieren wenn du mehrere von den Arrays in einem string hast. (was du wie ich grade sehe nicht brauchst)
BTW Wie zeigst du dir damit die Inhalte von Funktionen an?

Re: gegeben: Name eines Arrayelements als Text, gesucht: sein Wert

Post by Rohwedder » 07 May 2019, 11:56

Hallo,
funktioniert:

Code: Select all

w:: ;Array: funktioniert
Var := {} 
b := 2, Var[b] := 7
Text := "Var[b]" ;dieser Text soll aufgelöst werden
RegexMatch(Text, "(.*)\[(.*)\]", M)
Element := M1 "[" %M2% "]" ;Ergebnis: Var[2]
Wert := %M1%[%M2%] ;Ergebnis: 7
MsgBox,, Array,% "Text:`t" Text "`nElement:`t" Element "`nWert:`t" Wert
Return

Re: gegeben: Name eines Arrayelements als Text, gesucht: sein Wert

Post by Rohwedder » 07 May 2019, 10:16

Hallo,
Schummeln hilft mir leider hier nicht viel weiter.
Hintergrund: Zum Debuggen meiner Skripte verwende ich einen ToolTip-Einzeiler um zur Laufzeit Variableninhalte prüfen zu können.
Diese ToolTipzeilen verbleiben später auskommentiert im Skript, so daß ich sie bei Problemen wieder reaktivieren kann.
Ich weiß dann auch gleich wieder welche Variablen früher wichtig waren.
A_LineNumber ist übrigens hilfreich, falls ich die Auskommentierung vergessen oder absichtlich unterlassen habe.
Nun möchte ich das zugehörige ToolTip(Vars,Line:=False) auf Arrays und Objekte erweitern.

Code: Select all

q::
Var1 := 4, Var2 := 7, Var3 := 9
a := 1, b := 2
ToolTip("Var%a%,Var%b%,Var3",A_LineNumber)
Return

ToolTip(Vars,Line:=False)
{
    Local Text = "", Value
    Loop, Parse, Vars, CSV, %A_Space%%A_Tab%
    {
        IF !InStr(A_LoopField, "%")
            Text .= A_LoopField ": " %A_LoopField% "`n"
        Else
        {
            Transform, Value, Deref, %A_LoopField%
            Text .= A_LoopField ": " Value ": " %Value% "`n"
        }
    }
    ToolTip,% Text (Line?"Line: " Line:"")
}

Re: gegeben: Name eines Arrayelements als Text, gesucht: sein Wert

Post by Kobaltauge » 07 May 2019, 09:36

Hallo.
Du hast mir jetzt so oft geholfen, ich würde mich gerne revanchieren. Jedoch greife ich dein Problem nicht ganz.
Ich habe deinen Code so ausgefüllt. Willst du mit der "Text" variable nur anzeigen wie die aussehen soll? Dann würde ich ein wenig schummeln und den String zusammenbauen.

Ich hoffe, das hilft.

Code: Select all

w:: ;Array: ??? 
Var := {} 
b := 2, Var[b] := 7
Text := "Var[" . b . "]" ;dieser Text soll aufgelöst werden
Element := "Var[b]" ;Ergebnis: Var[2]
Wert := Var[b] ;Ergebnis: 7
MsgBox,, Array,% "Text:`t" Text "`nElement:`t" Element "`nWert:`t" Wert
Return
2019-05-07 16_28_27-AHK Studio - _C__Daten_Programmier_autohotkey_AHK-Studio-master_Untitled_Untitle.png
2019-05-07 16_28_27-AHK Studio - _C__Daten_Programmier_autohotkey_AHK-Studio-master_Untitled_Untitle.png (11.26 KiB) Viewed 683 times

Re: gegeben: Name eines Arrayelements als Text, gesucht: sein Wert

Post by nnnik » 07 May 2019, 09:25

Da bleibt dir nichts anderes übrig als einen Parser zu schreiben.

gegeben: Name eines Arrayelements als Text, gesucht: sein Wert

Post by Rohwedder » 07 May 2019, 08:37

Hallo,
beim PseudoArray funktionierts. Wie gehts beim Array?

Code: Select all

q:: ;PseudoArray: funktioniert!
b := 2, Var%b% := 7
Text := "Var%b%" ;dieser Text soll aufgelöst werden
Transform, Element, Deref,% Text ;Ergebnis: Var2
Wert := %Element% ;Ergebnis: 7
MsgBox,, PseudoArray,% "Text:`t" Text "`nElement:`t" Element "`nWert:`t" Wert
Return

w:: ;Array: ??? 
Var := {} 
b := 2, Var[b] := 7
Text := "Var[b]" ;dieser Text soll aufgelöst werden
Element := "???" ;Ergebnis: Var[2]
Wert :=	"???" ;Ergebnis: 7
MsgBox,, Array,% "Text:`t" Text "`nElement:`t" Element "`nWert:`t" Wert
Return

Top