Autoit adressen wie in C++

  • In C++ habe ich ja die Möglichkeit adressen auszulesen.

    Code
    int var = 0, *point;
    point=&var;
    *point = 1;
    cout >> *point; //gibt eins aus wenn ich mich noch richtig erinnere? 
    cout >> point; //sollte ja dan die adresse von var ausgeben

    Geht das irgendwie auch in autoit?
    Mir ist ganz speziell das point=&var; wichtig.
    Vorallem fällt mir grad auf wieviel byte deklariert den autoit im speicher für ne avriable?
    Das man theoretisch das für autoit arrays hochrechnen könnte.

    MFG Matthias

    3 Mal editiert, zuletzt von Matthias_199 (9. November 2011 um 18:21)

  • Mit reinen AutoIt-Variablen geht das nicht so einfach da diese keine Grundtypen darstellen sondern den Datentyp Variant welcher eine Art Container für verschiedene Grunddatentypen darstellt und kontextabhängig deren Eigenschaften annimmt.

    Möglich ist dies jedoch wenn du explizit C-Datentypen in AutoIt verwendest.
    Dein Beispiel in AutoIt-Code umgesetzt:

    Spoiler anzeigen
    [autoit]

    $var = DllStructCreate("int")
    DllStructSetData($var, 1, 0)
    $point = DllStructGetPtr($var)
    DllStructSetData(DllStructCreate("int", $point), 1, 1)

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

    ConsoleWrite(DllStructGetData($var, 1) & @CRLF)
    ConsoleWrite($point & @CRLF)

    [/autoit]
  • In Funktionen kannst du auch ByRef verwenden.

    [autoit]

    Func Tralala(ByRef $variable)
    $variable = 1
    EndFunc

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

    Global $irgendeine_Variable = 0
    Tralala($irgendeine_Variable)

    [/autoit]


    Mit diesen beiden Methoden sollte man eigentlich alles können, was man auch in C kann.

  • Das bei ref war mir auch klar war abe rnicht das was ich suchte :D^^ trotzdem danke

    AspirinJunkie
    Das ist genau das was ich gesucht habe.
    Autoit verliert ja performance wegen den variablen.
    Hier muss ich ja den set und get umweg nehmen.
    Ist das zusätzlicher balast ?
    Oder gleicht sich das aus weil autoit den datentyp nicht mehr erkennen muss?

    MFG Matthias

    EDIT:
    Marthog
    Aber eigendlich ist ja das ByRef mit AspirinJunkies lösung so net möglich bzw was unnütz.....
    Ne schmann AspirinJunkie lösung ist doch vom prinzip schon so ne art byRef?

  • verstehe also wenn ich dlls coden sollte kann ind problemlos denen die pointer geben und die dll setzte es sofort die die variable rein?

  • ja gut ich will ich für meinen server eine art multitasking machen.
    DLLs brauch ich wahrscheinlich keine.
    Aber eben das die variablen für plugins oder sogar für eine aktionen der user auf andere programme ausgelegt werden das main nicht hängen bleibt verfügbar sind