Anf$nger - Vermutich - Ubound Schleifen Fehler!

  • Hallo Zusammen
    Bitte nicht steinigen, ich bin Anfänger!

    Ich benötige Hilfe, da ich nicht sehe wie dies mit der Schleife weiter verarbeitet werden sollte.
    Auch die ConsolWrite ausgabe spuckt mir nichts aus.
    Bin wirklich froh um jede Hilfe!

    Einmal editiert, zuletzt von mauric (7. September 2015 um 16:13)

  • Hallo Zusammen
    Im Script werden die AD "UserMemberOfGroup" ausgelesen und unterschiedlich filtriert mit "StringReplace" die "GuiCtrlRead($Input1))" habe ich genommen weil der Input mit GUICtrlCreateInput erstellt wurde.
    Danke

  • versuche es mal mit

    AutoIt
    $aUser = _AD_GetUserGroups(GUICtrlRead($Input1))
     MsgBox(1,"2.Fenster",""& GuiCtrlRead($Input1),100)	; enthält Input1
    MsgBox(1,"3.Fenster","", $aUser) 	; leer
    					 $file = FileOpen("test.txt", 2)
    					 FileWriteLine($file, "Name : "& GuiCtrlRead($Input1))
    					 	 For $i = 1 to UBound($aUser) -1

    aber das was du hier an code hochgeladen hat ist gar nicht lauffähig beim reinen draufschauen sieht der schon sehr zerstört aus ein funktion aufbau mitten in einer schleife nach ende der schleife kommt endfunc

  • Mein erster Satz war "Hallo, Bitte nicht steinigen, ich bin Anfänger!"
    - Ja vermutlich hat es noch mehr Fehler drin.....

    Aber:
    - Bis Zeile 26 Funkltioniert's und der Inhalt wird korrekt angezeigt
    - Zeile 27 gibt keinen Wert aus, also ist diese Inhaltslos
    (Ich vermute immer noch weil dies mit "GuiCtrlCreateInput" abgefüllt wurde.)

    - Deshalb hab ich in Zeile 30 geschrieben For $i = 1 to UBound(GuiCtrlRead($Input1)) -1
    weil diese noch zu diesem Zeitpunkt korrekt befüllt war/ist.

    Ich "hoffe" hier kann mir vielleicht jemand Helfen?
    Danke

  • Hallo mauric,

    du willst schnellstmöglich zum Ziel fertige Anwendung gelangen. Auf dem Weg dahin vernachlässigst du aber das Lernen beim Schreiben etwas.

    - Deshalb hab ich in Zeile 30 geschrieben For $i = 1 to UBound(GuiCtrlRead($Input1)) -1
    weil diese noch zu diesem Zeitpunkt korrekt befüllt war/ist.

    Kanashius schrieb dir "GuiCtrlRead() liefert aber auf jedenfall KEIN Array". Ubound würde entsprechend nichts bringen. Du hast es jetzt ja noch einmal zu erklären versucht, aber das ist nicht adäquat - denn das grundsätzliche Problem hat Kanashius dir genannt. Du kannst nicht Ubound auf einen String anwenden.

    AutoIt
    MsgBox(1,"3.Fenster","", $aUser) 						; leer

    Du pipest String aus GUICtrlRead($Input1) durch deine Funktion _AD_GetUserGroups. Aus einem anderen Thread, meine ich mich zu erinnern, dass $aUser ein Array ist. Darauf lässt auch das $a.. schließen. An diese Konventionen habe ich mich zu Anfang auch nicht gehalten. Es hilft aber enorm wenn man nach einiger Zeit seinen Code mal wieder anschaut. Wenn es ein Array ist, dann ist auch klar, warum die Message Box leer ist. Sie kann nur Strings und keine Arrays darstellen.
    Setze doch mal unter die Zeile 27 _ArrayDisplay($aUser) - (hierfür ist #include <Array.au3> nötig).
    Wenn etwas angezeigt wird, liege ich mit meinem Verdacht richtig.


    Du benutzt doch SciTE, oder?
    Klicke immer mal die Befehle an, die du benutzt und drücke F1. SciTE öffnet dann direkt die Hilfe zu diesem Befehl. Lies dir die Beschreibungen durch und schau dir die Beispiele an. Du kannst sie auch direkt in SciTE öffnen und dir den Code in Action anschauen. Das hilft sehr beim Verständnis.
    Daneben gibt es noch Unmengen an Tutorials. Suche unbedingt mal in der SM deiner Wahl z.B. nach "AutoIt Array Tutorial". Du wirst ein Tut von Bugfix finden, dass du unbedingt gelesen haben solltest.

    Grüße autoiter

    Einmal editiert, zuletzt von autoiter (8. September 2015 um 17:43)

  • Hier mal der Code

    $aUser = _AD_GetUserGroups()
    Hier die beschreibung :

    Also gibt die Funktion eine Array zurück und eine Input hat nur ein String
    Du brauchst bei der Funtkion auch kein Ubound da in der Array[0] die anzahl der Spalten steht

    du kannst auch einfach testen ob eine variable eine array ist mit
    $test = IsArray ( variable )
    If $test = 1 Then
    Msgbox(0,"","Ist eine Array")
    Else
    Msgbox(0,"","ist keine array")
    Endif

  • Hallo Zusammen
    Danke an alle, ja nun Funktioniert es!

    Autoiter:
    Korrekt die MsgBox war leer doch als ich diese Zeile "_ArrayDisplay($aUser)" eingefügt hatte
    war doch alles hier wie du es erwähnt hast "DANKE!". Stimmt man lernt so nicht gerade viel
    wenn man nur den Code zusammendrückt und kompiliert. Doch habe dies versucht zu Analysieren
    mit meinen "MSGBoxen", doch hier war mein Fehler, diese Logik mit Array war "Neuland" sicher
    muss ich dies durchlesen und ein wenig einwirken lassen :)

    Ja Stimmt, zu 99% muss/sollte die Anwendung laufen bevor man überhaupt angefangen hat ;)

    Ich wünsche allen ein schönen Feierabend und sicher bis zum nächsten "Post"
    Danke Gruss
    Mauri