Dann setze bitte das Thema auf gelöst (Startpost editieren).
Beiträge von BugFix
-
-
Deine Überschrift ist Bullshit!
Richtig wäre:
Mein Versuch mit StringInStr zu arbeiten schlägt fehl - was mache ich falsch?Und um deine Fehler zu sehen, müßtest du uns schon wissen lassen, wie der Inhalt, den du verarbeiten willst, aussieht.
Btw. - Um nur zu prüfen, ob StringInStr etwas findet bedarf es keinerlei Vergleichselement. Hängt mit der Vergleichsform von If (bool) und der Interpretation von Werten durch AutoIt (0=False, alles andere ist True) zusammen:
[autoit]If StringInstr($string, $InStr) Then ; wahr
[/autoit] -
Eigentlich meiden wir, wenn es irgend geht, Assign und Eval. Das sind Befehle, die wirklich nur in extremen Ausnahmefällen zu nutzen sind. Meist gibt es jedoch bessere Lösungsvarianten.
Deshalb würde ich empfehlen die Bsp. in Rosetta Code nicht damit zu "verschlimmbessern".
Just my 2 Cent.
-
öhhhm - alle Städte liegen an einem Fluß/Bach/Wasserlauf?
-
Du kannst außer Schleifen und erzwungenermaßen mehrzeiligen Statements alles in AutoIt in einer Zeile ausführen. Z.B. indem du eine fortlaufende Variablendeklaration durchführst mit den Funktionen, die du aufrufst:
[autoit]
[/autoit]
Global $a = InputBox(...Eingabe Zahl...), $b = InputBox(...Eingabe Zahl...), $c = $a + $b, $d = $a * $b, $gui = GuiCreate(..), $button = GuiCtrlCreateButton(..), ;....... usw. usf. -
Oder so:
[autoit]$s = "54°31.267'N 012°42.852'E"
[/autoit]
$rep = StringRegExpReplace($s, "(\d+)°(\d+\.\d+)'N (\d+)°(\d+\.\d+)'E", "N$1 $2" & @LF & "E$3 $4")
ConsoleWrite($rep & @crlf) -
Neue Version 0.10!
- Anhand von (Teil-)Begriffen aus den Variablentipps läßt sich nach Variablen suchen.
- Alle Variablen, in deren Beschreibung eine Übereinstimmung mit dem Suchbegriff gefunden wurde, werden mit Beschreibung in die Konsole oder in eine Userliste zur Auswahl ausgegeben
Näheres s. Post #1 -
Bischen Suchen hilft immer: ChooseHotKey UDF oder HotKey Control UDF
..und noch eins: HotKey Input UDF -
Wenn ich dich recht verstehe, willst du wissen, welche Item markiert sind und diese als kommagetrennten String ausgeben.
Einfach so:
[autoit]Global $array[5] = [4,'alpha','beta','gamma','delta']
[/autoit][autoit][/autoit][autoit]GUICreate("Kategorie", 220, 300, 200, 250)
[/autoit][autoit][/autoit][autoit]$listview = GUICtrlCreateListView("Kategorie 1", 10, 10, 200, 200, $LVS_SORTASCENDING, $LVS_EX_CHECKBOXES)
[/autoit][autoit][/autoit][autoit]
$hLV = GUICtrlGetHandle($listview)
$button = GUICtrlCreateButton("Auswählen", 75, 250, 70, 20)
For $item = 1 To $array[0]
$content = GUICtrlCreateListViewItem($array[$item], $listview)
Next
GUISetState()Do
[/autoit]
$msg = GUIGetMsg()
Select
Case $msg = $button
$sChecked = ''
For $i = 0 To _GUICtrlListView_GetItemCount($hLV) -1
If _GUICtrlListView_GetItemChecked($hLV, $i) Then $sChecked &= _GUICtrlListView_GetItemText($hLV, $i) & ', '
Next
ConsoleWrite( 'Ausgewählt: ' & StringTrimRight($sChecked, 2) & @LF)
EndSelect
Until $msg = $GUI_EVENT_CLOSE
Exit -
-
Bitte poste keine EXE-Dateien, nur die au3-Datei gehört hierher.
Hab mich schon gewundert, was das für ein riesen Skript sein soll mit 400 KB - dabei ist dein Skript tatsächlich nur 3 KB groß. Den Rest bringt die kompilierte Datei.Also 200 Zeilen Code kannst du auch getrost im Spoiler anzeigen lassen, dann braucht man nicht extra downloaden um sich das anzusehen.
-
Und wozu willst du da mit mehreren Funktionen rumgurken?
[autoit]
Das, was du soeben geschildert hast, kannst du doch mit einer Funktion erledigen:#include <GuiListView.au3>
[/autoit][autoit][/autoit][autoit]
#include <Array.au3>$Mein_Ergebnis = _GetPathes()
[/autoit][autoit][/autoit][autoit]
_ArrayDisplay($Mein_Ergebnis)Func _GetPathes()
[/autoit]
Local $Gui = GUICreate('Auswahl', 365, 390)
GUICtrlCreateLabel('Bitte erforderliche Dateien auswählen', 10, 10)
Local $LV = GuiCtrlCreateListView('Ausgewählt', 10, 30, 250, 350)
Local $btSelect = GUICtrlCreateButton('Hinzufügen', 275, 30, 80, 22)
Local $sPath, $hLV = GUICtrlGetHandle($LV)
_GUICtrlListView_SetColumnWidth($hLV, 0, $LVSCW_AUTOSIZE_USEHEADER)
GUISetState(@SW_SHOW, $Gui)
While True
Switch GUIGetMsg()
Case -3
GUISetState(@SW_HIDE, $Gui)
ExitLoop
Case $btSelect
$sPath = FileOpenDialog('Datei auswählen', "::{450D8FBA-AD25-11D0-98A8-0800361B1103}", '(*.*)', 3)
If Not @error Then
GUICtrlCreateListViewItem($sPath, $LV)
EndIf
EndSwitch
WEnd
If _GUICtrlListView_GetItemCount($hLV) = 0 Then Return ''
$sPath = ''
For $i = 0 To _GUICtrlListView_GetItemCount($hLV) -1
$sPath &= _GUICtrlListView_GetItemText($hLV, $i) & '|'
Next
GUIDelete($Gui)
Return StringSplit(StringTrimRight($sPath, 1), '|')
EndFunc -
Wird n regedit
nur besser^^
Dann versuch aber keinesfalls beim Aufruf sofort alle Schlüssel in ein Array zu lesen, sonst kannst du getrost Kaffee trinken gehen. Dynamisch Nachladen ist hier wohl angezeigt.
-
Danke!
Manchmal fallen einem die einfachsten Dinge nicht ein. -
Hi,
folgendes Problem:
Auf einer Main-Gui blende ich ein Child ein. Jedoch sind dann die Events (MausUp/Down) nicht mehr verfügbar.
Der Button hat mehrere, zeitgesteuerte Funktionen. Beschreibung auf GUI unter dem Button.
Hat jemand vielleicht eine Idee, wie ich das Problem lösen kann?Hier der Code, beschränkt auf die Problemsituation:
Spoiler anzeigen
[autoit]#include <GuiConstants.au3>
[/autoit] [autoit][/autoit] [autoit]Opt('GUIOnEventMode', 1)
[/autoit] [autoit][/autoit] [autoit]
Opt('MustDeclareVars', 1)Global $Gui0, $btStartStop, $lbSnooze, $aChild[2] = [1]
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Global $TimerStart, $iTime, $EngineRun = 0, $iSnooze = 0_Create_Gui_0()
[/autoit] [autoit][/autoit] [autoit]
_CreateChild($aChild[1])
GUISetState(@SW_SHOW, $Gui0)
;~ GUISetState(@SW_SHOWNOACTIVATE, $aChild[1]) ; <=== Sowie das Child angezeigt wird, werden die Events ($GUI_EVENT_PRIMARYDOWN & $GUI_EVENT_PRIMARYUP) nicht mehr erkanntWhile 1
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Sleep(50)
WEndFunc _Create_Gui_0()
[/autoit] [autoit][/autoit] [autoit]
$Gui0 = GUICreate('Engine OFF', 400, 450)
$lbSnooze = GUICtrlCreateLabel('SNOOZE', 280, 150)
GUICtrlSetState(-1, $GUI_HIDE)
$btStartStop = GUICtrlCreateButton('0 / I', 90, 280, 210, 25)GUICtrlCreateLabel('Button 1,5 sec gedrückt halten für Start / Stopp.' & @LF & 'Wenn gestartet mit kurzem Druck "SNOOZE" de/aktivieren.', 50, 310)
[/autoit] [autoit][/autoit] [autoit]; == Events
[/autoit] [autoit][/autoit] [autoit]
GUISetOnEvent(-3, '_close_Gui0', $Gui0)
GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, '_MDown', $Gui0)
GUISetOnEvent($GUI_EVENT_PRIMARYUP, '_MUp', $Gui0)
EndFunc ;==>_Create_Gui_0Func _CreateChild(ByRef $_hWnd)
[/autoit] [autoit][/autoit] [autoit]
$_hWnd = GUICreate('', 254, 130, 70, 60, 0x80000000, 0x00000040, $Gui0) ; WS_POPUP = 0x80000000, WS_EX_MDICHILD = 0x00000040
GUISetBkColor(0x06A533, $_hWnd)
EndFunc ;==>_CreateChildFunc _MDown()
[/autoit] [autoit][/autoit] [autoit]
Local $aInfo = GUIGetCursorInfo()
If Not IsArray($aInfo) Then Return
If $aInfo[4] = $btStartStop Then
$TimerStart = TimerInit()
AdlibRegister('_StartEngine')
EndIf
EndFunc ;==>_MDownFunc _MUp()
[/autoit] [autoit][/autoit] [autoit]
Local $aInfo = GUIGetCursorInfo()
If Not IsArray($aInfo) Then Return
Local $iState = $GUI_SHOW
If $aInfo[4] = $btStartStop Then
If $iTime <= 400 And $EngineRun = 1 Then
If $iSnooze = 0 Then
$iSnooze = 1
Else
$iState = $GUI_HIDE
$iSnooze = 0
EndIf
GUICtrlSetState($lbSnooze, $iState)
AdlibUnRegister('_StartEngine')
ElseIf $iTime <= 1500 And $EngineRun = 0 Then
AdlibUnRegister('_StartEngine')
EndIf
EndIf
EndFunc ;==>_MUpFunc _StartEngine()
[/autoit] [autoit][/autoit] [autoit]
$iTime = TimerDiff($TimerStart)
Local $iState = $GUI_SHOW, $aTitle[2] = ['Engine OFF','Engine ON']
If $iTime >= 1500 And $iSnooze = 0 Then
$EngineRun = Not $EngineRun
Beep(1700)
AdlibUnRegister('_StartEngine')
WinSetTitle($Gui0, '', $aTitle[$EngineRun])
EndIf
EndFunc ;==>_StartEngineFunc _close_Gui0()
[/autoit]
Exit
EndFunc -
Sorry bugfix, aber du hast leider nicht verstanden was ich vor habe.
Das sagte ich doch in meinem Post: Durch deine Beschreibungen wird alles eher unklarer als verständlich. Auch deine jetzige Beschreibung hilft (mir zumindest) nicht wesentlich weiter dein Problem zu verstehen - sorry meinerseits. -
Mein Problem ist das die Funktion Main eine Funktion ist die eine Teil einer GUI aufbaut. Und die Funktion Test1 gibt das ergebnis der GUI dann wieder zurück.
Aber es soll so sein das wenn jemand die GUI Aufbaut er auch Festlegen kann in Welcher Variable das Ergebnis zu finden ist.
Wie soll ich mir denn das vorstellen? "Jemand" kann den Aufbau der GUI nicht durchführen, das legst ausschließlich du mit deinem Skript fest und somit weißt du auch, welches Element im Array für welchen Wert zuständig ist.Ich habe eher den Eindruck, dass du den Ablauf deines Skriptes noch nicht klar formuliert hast und dadurch an auftretenden Symtomen herumdoktorst.
Mein Tipp:
Erstelle in Stichpunkten den Ablauf des Programms. Das könnte etwa so aussehen:
- Start Programm
- Anzeige Main-Gui
- User kann Auswahl in Checkboxen vornehmen
- Klick auf Start-Button ruft Auswertefunktion auf
- Auswertefunktion setzt Parameter in Abhängigkeit zu angewählten Checkboxen
- usw. usf.Mit dem, was du bis jetzt geschrieben hast, wird dein Anliegen von Post zu Post eher unverständlicher. :wacko:
Du möchtest zwanghaft Werte hin- und herschieben, was u.U. überhaupt nicht notwendig ist. Doch um dir da weiter zu helfen, müssen wir verstehen können, was genau in deinem Skript passieren soll. -
Habe identisches System, wie du: Kein Flackern.
-
Wenn Alt+W nicht funktioniert hast du nur die kastrierte Version von SciTE.

Auf der Startseite (Portal) findest du im Downloadbereich den Link zu "SciTE4AutoIt" - das ist, was du brauchst. -
Öffne eine AutoIt-Datei in SciTE und gib den Hotkey "Alt+W" ein.
Wähle die Messagebox deiner Wahl aus und füge das Ergebnis in den Editor ein, da siehst du alle Informationen.Oder..
du schaust dir das hier mal an: MsgBox - alle Parameter auf einen Blick