Hallo!
Seit langen lese ich hier mit und bin immer mehr von AutoIT begeistert. Nicht zuletzt da der Funktionsumfang sehr sehr groß ist.
Ich komme selbst von Rapidbatch das schon etwas in die Jahre gekommen ist und versuche jetzt alte Scipts auf Autoit zu bringen bzw. mit den vielen neuen Funktionen zu spielen.
Zur Zeit habt ich die TCP-Verbindungen entdeckt und dabei auf etwas sehr seltsames gestossen: In einer GUI habe ich ein Eingabefeld (in dem Fall wird eine Portnummer eingelesen) mit einer Zahl wie folgt definiert (oder besser der Koda):
[autoit]$Port = GUICtrlCreateInput("Port", 168, 16, 49, 21)
[/autoit]weiter unten in meinen Script (genau gesagt in einer function) lese ich den Inhalt wieder aus:
[autoit]$port = GUICtrlRead ($Port)
[/autoit]Und jetzt kommts: Das funktioniert nur einmal !!!
Wird da Eingabefeld dessen Inhalt sich nicht verändert hat nochmal ausgelesen, so bekomme ich nur 0 (Null) zurück!
Um das Problem zu umgehen habe ich den Namen der Variable verändert: start $port jetzt $kanal - siehe da: jetzt gehts!
Hat AutoIT (Version 3.3.10.2) vielleicht da ein kleines Problem mit der groß/klein Schreibung bei selben Variablennamen??
mein kleines Testscript:
[autoit]; TCP-Sender test
[/autoit][autoit][/autoit][autoit]#include <advfha_proc.au3>
[/autoit][autoit][/autoit][autoit][/autoit][autoit]#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiIPAddress.au3>
#include <WindowsConstants.au3>
#include <GuiIPAddress.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("TCP-Client", 602, 347, 216, 659)
$Edit1 = GUICtrlCreateEdit("", 32, 56, 545, 217,$ES_READONLY)
;GUICtrlSetState(-1, $GUI_DISABLE)
global $Eingabe = GUICtrlCreateInput("Eingabe", 32, 296, 441, 21)
$Senden = GUICtrlCreateButton("Senden", 496, 296, 75, 25)
GUICtrlSetOnEvent(-1, "senden")
$IPAddress1 = _GUICtrlIpAddress_Create($Form1, 32, 16, 130, 21)
_GUICtrlIpAddress_Set($IPAddress1, "127.0.0.1")
$Port = GUICtrlCreateInput("Port", 168, 16, 49, 21)
;GUICtrlSetData($Port, "2000")
GUISetState(@SW_SHOW)
[/autoit][autoit][/autoit][autoit]#EndRegion ### END Koda GUI section ###
Opt("GUIOnEventMode", 1)
;TCP-Service starten
TCPStartup ()
While 1
GUISetOnEvent($GUI_EVENT_CLOSE, "Ende")
WEnd
func Ende ()
exit
endfunc
func senden ()
[/autoit][autoit][/autoit][autoit]$kanal = GUICtrlRead ($Port)
$ip = _GUICtrlIpAddress_Get ($IPAddress1)
local $text = GUICtrlRead ($Eingabe)
local $alttext = GUICtrlRead ($Edit1)
local $socketid = TCPConnect ($ip, $kanal)
local $ret = TCPSend ($socketid, $text)
$text = $alttext & @crlf & ">" & @HOUR & ":" & @MIN & ":" & @SEC & " on " & $ip & ":" & $kanal & " " & $text
[/autoit][autoit][/autoit][autoit]GUICtrlSetData($Edit1, $text)
GUICtrlSetData($Eingabe, "")
endfunc
[/autoit]lg
Racer