Regwrite hilfe (Neuling)

  • Halo Leute,
    bin neu hier. Mit Programmierung habe ich bisher keine Erfahrung. Wie sollte es auch anders sein, brauche "Erste Hilfe".

    Hatte mir folgende Aufgabe gestellt:

    Primaere Funktion soll "RegWrite ( "keyname" [,"valuename", "type", value] )"sein, es sollen zB. 20 Regschluessel erstellt werden. Der Pfad "Keyname" und "Type" kann in diesem Fall gleich bleiben.

    "valuename" = Name1, wobei nur die Zahl jeweils um 1 steigen soll, also Name2, Name3, Name4,....Name21
    "value" = wird mit unterschiedlichen Werten gefuettert zB. value_name1=value_bla, value_name2=valu_eblabla, value_name3=valu_eblablabla usw..

    Leider haengen fuer mich bei dieser Aufgabe die Trauben zu hoch, es kommt mir vor wie ein Ratespiel. Koennte mich jemand von euch auf den richtigen Weg schupsen um die Funktionen zu verschachteln ???

    Danke fuer Verstaendniss
    MfG Gruenling

    Ps: Das man in diesem Fall Regwrite 20x ausfuehren ist klar !!!

    - MfG OpaEd

  • [autoit]

    #include <Array.au3>
    $_array = _ArrayCreate ("wert1","wert2","wert3")

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

    For $i = 1 to 3
    RegWrite("HKLM\SOFTWARE\Test", "TestKey" & $i, "REG_SZ", _ArrayMax ( $_array ))
    _ArrayPop ( $_array )
    Next

    [/autoit]


    Gruß
    Westi

  • so hardgecodetes mit For $i = 1 to 3 is doof, wenn sich n wert ändert.

    so wärs besser:

    [autoit]

    #include <Array.au3>
    $_array = _ArrayCreate ("wert1","wert2","wert3")

    For $i = 0 to UBound($_array,1) - 1 ;erste dimension
    RegWrite("HKLM\SOFTWARE\Test", "TestKey" & $i, "REG_SZ", _ArrayMax ( $_array ))

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

    Next

    [/autoit]

    ps: warum ArrayPop?

  • Halo und Ohaha Hammer,
    vielen vielen Dank fuer eure Muehe, das haette ich nie hinbekommen. Heul, ist das schwer.
    Also ohne "_ArrayPop ( $_array )" wird die Variable $_array(value) nur mit dem letztem Wert gefuellt, (im Beispiel ist es der Wert3).
    Wendet man "_ArrayPop ( $_array )" an, so werden max. 10 Werte verschiedene Werte unter "value" geschrieben ???

    - MfG OpaEd

  • Da muss man dann auch was ändern:

    [autoit]

    #include <Array.au3>
    $_array = _ArrayCreate ("wert1","wert2","wert3")

    For $i = 0 to UBound($_array,1) - 1 ;erste dimension
    RegWrite("HKLM\SOFTWARE\Test", "TestKey" & $i, "REG_SZ",$_array[$i] )

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

    Next

    [/autoit]

    _ArrayMax mit _ArrayPop braucht man doch net :)
    Man nimmt ganz einfach $Array[$Item] (Hier $_array[$i])

    //Edit: wie weißt du denn die Werte dem Array zu?

    Einmal editiert, zuletzt von progandy (5. November 2007 um 18:15)

  • Hi,
    der dritte Autoit-Musketier im Bunde (grins). Echt cool hier im Forum, schnelle Antworten, Kompliment !!!

    Werte fuer Array

    [autoit]

    $_array = _ArrayCreate ("wert1","wert2","wert3","alo","deo","leo","tude","lude","adeo","supo","meo","kani")

    [/autoit]

    Ok, Progandy, aber auch mit deiner Scriptloesung komme ich als Gruenling nicht weiter. Unter (Valeuname) werden nur Werte von 0-9 ausgegeben, aber eigentlich sollte (Valeuname) bei 1 anfangen und sich fortsteigen zB. bis 12, anschliessend sollen 12x unterschiedliche (value) gesetzt werden. Am aehesten kommt mir bei dieser Aufgabe die Loesung von Westi entgegen, weil (Valeuname) bei 1 anfaengt, aber der Rest mit den Werten dahinter geht nicht mit 12 Werten. Aber auch die anderen Exemplare sind sehr Wilkommen, da hier mehrere Loesungen zur Anschauung entstehen.

    Gott gib mir Durchblick !!! Ja, in zehn Jahren

    - MfG OpaEd

  • Hi!

    um nochmal auf (meins , net progandys :P ) script zurückzukommen:

    [autoit]

    #include <Array.au3>; Funktionen werden Includet :)
    $_array = _ArrayCreate ("wert1","wert2","wert3","alo","deo","leo","tude","lude","adeo","supo","meo","kani") ; ARRAY wird erstellt.
    For $i = 0 to UBound($_array,1) - 1 ; FOR / NEXT schleife starten - beginnen bei 0, bis alles abgearbeitet wird
    ;RegWrite("HKLM\SOFTWARE\Test", "TestKey" & $i, "REG_SZ", _ArrayMax ( $_array )) ;das hab ich für testzwecke auskommentiert :)
    MsgBox(0, "", $_array[$i]) ; Array-inhalt wird zu string gemacht und via MSgbox ausgegeben.
    Next

    [/autoit]

    funtzt doch ?

    ich kommentiers dir fix :) *done*

    wenn du das so ausführst, gehts :)
    Das problem an westis code ist, dass er zwar simpel ist, aber nur funktioniert, wenn genau 3 einträge im array sind. bei dir sinds aber mehr :]

  • [autoit]

    #include <Array.au3>
    $_array = $_array = _ArrayCreate ("wert1","wert2","wert3","alo","deo","leo","tude","lude","adeo","supo","meo","kani")

    For $i = 0 to UBound($_array,1) - 1 ;erste dimension
    RegWrite("HKLM\SOFTWARE\Test", "TestKey" & $i+1, "REG_SZ",$_array[$i] )

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

    Next

    [/autoit]


    Autoit kann auch rechnen. Zum Beipiel +1 Dann werden alle Werte eins größer :) Hier Werte von 1-12

  • Hi nochmal,
    @huggy, erstmal herzlichen Glueckwunsch zu deinem 999 Posting und schon mal zu deinem 1000.
    Ich habe dein Script ausprobiert, mit Ausgabe im Fenster(Msg) funkt das Array ganz gut, in Verbindung mit dem RegCommand scheint es nicht zu laufen. Zwoelf Schluessel mit fortsteigende Zahl wurden geschrieben, aber als "Value" erhalten alle Zwoelf "WERT3".

    @progandy, deine Loesung funktioniert, aber ohne das doppelte Array in Zeile 2.

    Muss mal kurz frische Luft tanken,abschalten, melde mich gleich nochmal um euch zu wuerdigen!!!

    - MfG OpaEd

  • Hallo.

    Hier mal ein umgeschriebener Code. Original (von Huggy) ist hier: Laufwerk umbenennen

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    _startbei_pc_start("F:\", "ordner\datei.exe")
    Func _startbei_pc_start($laufwerk, $name)
    RegWrite("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run","test", "REG_SZ", '"' & $laufwerk & $name & '"')
    if @error Then
    Return 0
    Else
    Return 1
    Endif
    Endfunc

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

    Damit schreibst Du das in den Registry-Autostart.

    Gruss, Lina.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Halo nochmals und Dankeschön, werde mir die Resultate ganz in Ruhe anschauen !!!

    @HUGY, hoffe du bist nicht verärgert, aber es geht wirklich nicht mit deinem Code in dem Regbefehl, habe das am anderen PC ausprobiert, Ergebniss das Selbe. Alle Shlüssel erhalten den Value = WERT3 ??? Ich verstehe nicht warum das in Fensterausgabe richtig abgearbeitet wird, aber nicht in dem Regbefehl.

    Und abgeändert in

    [autoit]

    RegWrite("HKCU\SOFTWARE\Test", "TestKey" & $i, "REG_SZ", _ArrayMax ( $_array [$i]))

    [/autoit]


    erhalten alle Schlüssel den Value = BenutzerName

    BugFix habe Incude aus dem Script entfernt, dein Code eingefügt, leider meldete die Console Fehler ???

    MfG
    opaed

    - MfG OpaEd

  • er hat nicht das #include gemeint - das muss 100% rein, da du eine Array funktion benutzt :-]

    das is dann wohl der 1000e!! :)

  • ;)
    Werde erstmal mit den Beispielen etwas rumspielen und natürlich viel in die Autoit-Hilfe reinschauen. Jedenfalls Danke für die Untzerstützung, Klasse !!!!
    MfG

    - MfG OpaEd