autoitObject auf Attribute zugreifen

  • Hey,

    also ich hab folgendes Problem.
    Ich poste mal schnell den quelltext:

    Spoiler anzeigen
    [autoit]


    #include "AutoItObject/AutoItObject.au3"

    [/autoit] [autoit][/autoit] [autoit]

    ; Error monitoring
    Global $oError = ObjEvent("AutoIt.Error", "_ErrFunc")

    [/autoit] [autoit][/autoit] [autoit]

    ; Initialize AutoItObject
    _AutoItObject_StartUp()

    [/autoit] [autoit][/autoit] [autoit]

    $typ = "Person|Name|Adresse"

    [/autoit] [autoit][/autoit] [autoit]

    Global $object = createObject($typ)
    $object.toString()

    [/autoit] [autoit][/autoit] [autoit]

    Func createObject($typ)
    Dim $object_info = StringSplit($typ,"|")
    Local $oClassObject = _AutoItObject_Class()
    $oClassObject.Create()

    [/autoit] [autoit][/autoit] [autoit]

    ConsoleWrite("Creating Object:"&@CRLF)
    $oClassObject.AddProperty("info", $ELSCOPE_PUBLIC, $typ)
    ConsoleWrite(@TAB&"info: "&$typ&@CRLF)
    For $i=2 To $object_info[0]
    $oClassObject.AddProperty($object_info[$i], $ELSCOPE_PUBLIC, 0)
    ConsoleWrite(@TAB&$object_info[$i]&": "&0&@CRLF)
    Next

    [/autoit] [autoit][/autoit] [autoit]

    $oClassObject.AddMethod("toString","ObjectToString")
    Return $oClassObject.Object
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func ObjectToString($oself)
    Dim $object_info = StringSplit($oself.info,"|")
    Local $string = "ObjektToString "&$object_info[1]&@CRLF

    [/autoit] [autoit][/autoit] [autoit]

    For $i=2 To $object_info[0]
    $string &= $object_info[$i]&": ";&$oself.$object_info[$i] ;Geht nicht :(
    $string &= @CRLF
    if(@error) Then Exit
    Next

    [/autoit] [autoit][/autoit] [autoit]

    ConsoleWrite($string)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _ErrFunc()
    ConsoleWrite("! COM Error ! Number: 0x" & Hex($oError.number, 8) & " ScriptLine: " & $oError.scriptline & " - " & $oError.windescription & @CRLF)
    Return
    EndFunc ;==>_ErrFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit]

    Nun ich will mir durch $typ definiert ein Objekt erzeugen.
    In dem Objekt wird dann in info alles über das objekt gespeichert(name, attribute)

    Nur wie kann ich dann über diese informationen wieder auf die attribute zugreifen? (siehe ObjectToString Methode)


    Mfg

    Einmal editiert, zuletzt von Death (6. April 2012 um 23:57)

  • Er macht daraus ein Objekt 'namens' Person, welches 2 attribute hat(name, adresse) :)

  • genau :)
    Also nochmal erklärt

    ich habe immer einen String der folgendermaßen aufgebaut ist: "ObjektName|Attribut1|Attribut2|...."
    daraus mache ich mir nun ein Objekt mit den gewünschten Attributen, und als extra Attribut noch den String, um später wenn ich auf das objekt zugreifen will sehe, was für attribute dieses bestizt. (siehe ObjectCreate())

    Das Problem ist nun das ich die Attribute dann nicht abrufen kann, weil ich den Attributnamen-String nicht an $oself.*name* hängen kann.(siehe toString Methode.

    Mit Eval() funktioniert dies leider nicht, da das wohl nicht dafür ausgelegt ist.

    Hoffe das das jemand versteht? :D

    vll vereinfacht mal:
    $object ist ein objekt was ein attribut namens "name" hat. also z.B.

    [autoit]

    $object.name = "Peter"

    [/autoit][autoit][/autoit][autoit]

    Local $attributename = "name"
    $object.$attributname = "Peter"

    [/autoit]


    Das funktioniert leider nicht, und ich suche eine Lösung dafür

  • Die Lösung hatte ich dir schon in der SB genannt: Statt Eval nimm Execute. Damit kannst du variabel Methoden oder Eigenschaften aufrufen. Habe ich auch schon so in AutoIt-Objekt verwendet.

    omg danke!

    das hatte ich leider nicht mitbekommen das du in der SB geantwortet hast