SciTE Kommentar für Variable

  • Hallo,
    Ich hab mir mal das ISN AutoIT Studio von hier runtergeladen und gesehen, dass man sich dort zu jeder Vaiablen eigene Kommentare machen kann.
    Diese Funktion finde ich sehr praktisch, da ich im Moment an einem etwas größerem Programm arbeite, womit man die Spieler auf einem Server und den Server selbst verwalten kann. Dort habe ich die einzelnen Spieler in ein 2D Array geladen. Im ersten Index werden die Spieler durchnummeriert und im 2. stehen einige Informationen, wie z.B. die Nummer auf dem Server, die ID im Forum, die IP, der Name, welches Admin level er hat usw.
    Von solchen Arrays habe ich mehrere. Das einzige Problem ist nur, dass ich immer vergesse, welche Nummer im 2. Index zu welcher Info gehört. Steht die 2 jetzt für den Namen oder für die ID? Wenn ich mir das Oben als Kommentar hinschreibe, kann ich zwar immer nachgucken, aber immer wieder 900 Zeilen hoch und dann wieder zu der Stelle runterzuscrollen ist auch nicht das Wahre.

    Wenn ich aber zu dem Array ein Kommantar machen könnte, was ich mir überall anschauen könnte, wäre das praktischer.
    Deshalb ist meine Frage, ob das auch irgendwie in SciTE geht, bzw. ob ihr andere Tips habt, wie man sich das merken kann. Ansonsten würde ich mireinfach ein paar Variablen machen, die ich dann als Index benutze, also z.B. $iName oder so, aber es ist ja letzendlich im Programm effizienter, wenn ich mit weniger Variablen auskomme.

    Einmal editiert, zuletzt von klavier22 (3. März 2012 um 15:45)

    • Offizieller Beitrag

    Was hällt dich davon ab zu jedem Var einen Kommentar zu erstellen?

    [autoit]


    Global $Var[2] ; Ich bin ein Array
    $Var[0] = "Irgendwas" ; Ich bin ein lustiger Kommentar
    $Var[1] = "Irgendwas2" ; Ich bin wieder nur ein Kommentar

    [/autoit]
  • die 900 Zeilen halten mich davon ab. Bei kleineren Scripten geht das ja ganz gut, aber wenn man ein etwas größreres Projekt hat, dann ist es doch schon etwas nervig wenn ich immer wieder zu dem Kommentar hin und wieder zurückscrollen darf. Die Funktion, in der die Spieler in das Array geladen werden, sieht so aus:

    Spoiler anzeigen
    [autoit]


    Func _LoadPlayers() ; Loads the list of all players playing on the server into the listview $LVPlayers and puts the information in the array $Players
    $received = _send(_GUICtrlIpAddress_Get($IIP), GUICtrlRead($IPort), GUICtrlRead($IPassword), "sv players", 1)
    If @error = 1 Then
    MsgBox(4096, "Rcon Passwort falsch", "Der Server antwortete, dass das Rcon Passwort falsch sei.")
    Return 0
    ElseIf @error = "2" Then
    MsgBox(4096, "Server antwortete nicht", "Der Server antwortete nicht.")
    Return 0
    EndIf

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

    $VPlayers = StringSplit($received, @CRLF)
    If $VPlayers[0] >= "2" Then
    $i = $VPlayers[0] - 1
    Global $Players[$i][7]; Nummer, Name, Build, ID, OP, IP, BOT
    For $i = 1 To $VPlayers[0] - 1
    Local $temp = ""
    If StringRegExp($VPlayers[$i], "OP \d*\,", 0) Then
    Local $temp = StringRegExp($VPlayers[$i], "(\d+) \((\d+?)\)] \* OP (\d+)\, (.*) \(b(\d+)\)", 2) ;bei OP, liefert 6 Elemente
    $Players[$i - 1][0] = $temp[1]
    $Players[$i - 1][1] = $temp[4]
    $Players[$i - 1][2] = $temp[5]
    $Players[$i - 1][3] = $temp[2]
    $Players[$i - 1][4] = $temp[3]

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

    ElseIf StringRegExp($VPlayers[$i], "\d+ \] \* ", 0) Then
    Local $temp = StringRegExp($VPlayers[$i], "(\d+) \] \* (.*) \(b(\d+)\)", 2) ;Ohne ID, liefert 4 Elemente
    $Players[$i - 1][0] = $temp[1]
    $Players[$i - 1][1] = $temp[2]
    $Players[$i - 1][2] = $temp[3]

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

    ElseIf StringRegExp($VPlayers[$i], "\d+ \(bot\)\]", 0) Then
    Local $temp = StringRegExp($VPlayers[$i], "(\d+) \(bot\)\] \* (.*) \(b(\d+)\)", 2) ;Falls Bot, liefert Nummer + Name
    $Players[$i - 1][0] = $temp[1]
    $Players[$i - 1][1] = "(BOT) " & $temp[2]
    $Players[$i - 1][2] = 0
    $Players[$i - 1][6] = True

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

    Else
    Local $temp = StringRegExp($VPlayers[$i], "(\d+) \((\d+)\)\] \* (.*?) \(b(\d*)\)", 2) ;mit ID, liefert 5 Elemente
    $Players[$i - 1][0] = $temp[1]
    $Players[$i - 1][1] = $temp[3]
    $Players[$i - 1][2] = $temp[4]
    $Players[$i - 1][3] = $temp[2]
    EndIf
    Next

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

    $PlayerIPs = _send(_GUICtrlIpAddress_Get($IIP), GUICtrlRead($IPort), GUICtrlRead($IPassword), "sv listuserip", 1)
    $PlayerIPs = StringRegExp($PlayerIPs, "\[(\d+\.\d+\.\d+\.\d+)\:\d*\]", 3)
    For $i = 0 To UBound($PlayerIPs) - 1 Step 2
    If Not $Players[$i / 2][6] Then
    $Players[$i / 2][5] = $PlayerIPs[$i]
    Else
    $Players[$i / 2][5] = _GUICtrlIpAddress_Get($IIP)
    EndIf
    Next
    _GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($LVPlayers))
    _GUICtrlListView_AddArray($LVPlayers, $Players)
    Else
    Dim $Players[1][5]
    $Players[0][0] = ""
    $Players[0][1] = ""
    $Players[0][2] = ""
    $Players[0][3] = ""
    $Players[0][4] = ""
    _GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($LVPlayers))
    EndIf
    _ConWrite($EConsole, _GUICtrlListView_GetItemCount(GUICtrlGetHandle($LVPlayers)) & " Spieler wurden geladen.")
    EndFunc ;==>_LoadPlayers

    [/autoit]

    Ich weiß, die Variablennamen sind nicht grad die besten
    Aber wenn ich jetzt nicht in Zeile 541 (da wo die Funktion steht) bin, sondern irgendwo weiter oben oder unten, dann muss ich jedesmal erstmal hoch und wieder runter scrollen und mir diese Reihenfolge merken. Wenn ich dann wieder unten bin und meine Idee umsetzen will, dann vergesse ich die Reihenfolge wieder und darf dann nochmal gucken. Das ganze könnte ich mir ersparen, wenn ich direkt an der Seite eine Auflistung mit allen Variablen habe und mir zu jeder ein Kommentar machen kann, das ich überall sehen kann.
    Wenn es nicht geht, dann ist es auch nicht so schlimm, kann man sich ja im Prinzip auch selber basteln oder man definiert sich Konstanten wie $iName welche man dann als Index nimmt.

    Wäre nur die einfachste Lösung.

    2 Mal editiert, zuletzt von klavier22 (3. März 2012 um 16:23)

  • In der ISN AutoIt IDE gibt es rechts so einen TreeView. Dort sieht man alle GUI Elemente, Funktionen und Variablen, die man genutzt hat. Und dort kann man der Variable / Funktion / dem GUI Element einen Kommentar hinzufügen. Ich hätte diese Funktion gerne in SciTE, dass ich einer Variable einen Kommentar hinzufügen und diesen überall anzeigen lassen kann. Denn, wie beschrieben, ich habe ein Array, wo ich mir nie den Index zu dem Inhalt merken kann :D
    Deine Idee hört sich schonmal ein bisschen danach an.

    Bzw. Ist es möglich, dass man in AutoIt das Sript aus SciTE lädt? Dann würde ich einfach ein kleines Script bauen, was diesen Job für mich erledigt

    Einmal editiert, zuletzt von klavier22 (3. März 2012 um 22:35)