Findest Du das beschriebene Prinzip nützlich, bzw. würdest du es nutzen? 18
-
Wäre bestimmt nicht schlecht, ich würde es aber kaum nutzen. (10) 56%
-
Finde ich schwachsinnig. Datentypen haben in AutoIt nichts verloren. (6) 33%
-
Generell ja, aber nicht nach dem beschriebenen Schema. (1) 6%
-
Was ist ein Datentyp? Kann man das essen? (1) 6%
-
Ja, finde ich fast schon notwendig für AutoIt! (0) 0%
-
Ja, finde ich gut, und werde ich auch nutzen. (0) 0%
Hallo,
ich möchte mal kurz etwas vorstellen, und nebenher fragen, was die Allgemeinheit davon hält:
Nämlich das Prinzip der Datentypen in AutoIt, nach dieser Liste (mit kleinen Modifikationen).
Klingt zunächst einmal sehr... Utopisch. Etwas, was die Dev's aus dem EN-Forum wohl niemals freiwillig implementieren würden.
Da wir den AutoIt-Source nicht haben, können wir das auch nicht selber in die Hand nehmen. Wir müssen also an einer anderen Stelle ansetzen, wo wir AutoIt indirekt beeinflussen können: SciTE.
Damit haben wir natürlich von AutoIt aus keine Datentypen - allerdings für die Seite des Programmierers, was trotzdem ungemein bei der Fehlersuche und auch bei der Ordentlichkeit helfen kann. Daher auch die Bezeichnung Pseudo-Datentypen.
Realisiert würde das - wie bereits gesagt - über ein SciTE-Plugin, welches per Tastenkombination überprüft, ob im gerade geöffneten Skript auf Typenkonventionen geachtet wurde, und dann ggf. die Verletzungen der Regeln in der Konsole anprangert.
Ein wichtiger Punkt bei einem solchen Unternehmen ist natürlich die Einbindung in das restliche AutoIt-Schema. Es müssen z.B. auch alle Rückgabewerte der internen Funktionen dokumentiert werden, und generell muss auf viel Syntaktisches geachtet werden. Im derzeitigen Stadium wird nur die Überprüfung einer Zuweisung unterstützt, also z.B. $var = 42.
Doch wie bestimmt man den Datentyp? Aus C kennt man solche Initialisierungen:
Doch wenn wir dieses Schema in AutoIt nutzen würden, könnte ein Benutzer ohne dieses PlugIn das Skript nicht mehr ausführen.
int $i
Möglich wäre natürlich ein Kommentar hinter der Variable:
[autoit]
$i = 42 ;int
Aber das ist nicht sehr intuitiv nutzbar.
Darum habe ich mich für die Möglichkeit entschieden, die wir sowieso schon nutzen, und die ich für sehr intuitiv halte: Die Bestimmung des Datentypes über den ersten Buchstaben des Variablennamens.
Präfixgesteuerte Datentypen!
$i = 42
Hier ein Beispielskript:
Spoiler anzeigen
$hWnd = GUICreate("Test", 100, 100)
$cCheck1 = GUICtrlCreateCheckbox("Check 1", 10, 10)
$sCheck2 = GUICtrlCreateCheckbox("Check 2", 10, 30)
$cCheck3 = GUICtrlCreateCheckbox("Check 3", 10, 50)
$cResult = GUICtrlCreateButton("Auswerten", 10, 70, 80)
[/autoit] [autoit][/autoit] [autoit]GUISetState()
[/autoit] [autoit][/autoit] [autoit]While 1
Switch GUIGetMsg()
Case -3
Exit
EndSwitch
WEnd
Wenn ich nun per Strg+Alt+T die Überprüfung starte, bekomme ich folgenden Output in der Konsole:
Handle in Zeile 1 ($hWnd), Zuweisung ist vom Typ Handle
Control in Zeile 3 ($cCheck1), Zuweisung ist vom Typ Control
!> Typenfehler: String in Zeile 4 ($sCheck2), Zuweisung ist vom Typ Control
Control in Zeile 5 ($cCheck3), Zuweisung ist vom Typ Control
Control in Zeile 7 ($cResult), Zuweisung ist vom Typ Control
(Mit gewissen Einstellungen kann man z.B. nur die Fehler anzeigen lassen)
Und siehe da, in Zeile 4 ist ein Fehler.
Mir persönlich gefällt dieses Prinzip sehr gut. Jetzt würde mich interessieren, was das Forum davon hält.
Veröffentlichen möchte ich es im Moment noch nicht. Dazu bin ich noch nicht weit genug, obwohl es grundlegend ja eigentlich einfach ist.
Fragen, Anregungen und Kritik sind - wie immer - willkommen.
Gruß
chesstiger