Verwende statt ConsoleWrite MsgBox(), dann hast du keine Probleme.
Beiträge von BugFix
-
-
Warum erst installieren und dann nur bei Bedarf verschieben?
[autoit]
Besser ist doch: nur installieren, wenn nicht da:$KDP = @AppDataCommonDir & "\XT\KD"
[/autoit]
If not FileExists($KDP&"\KOI.ini") Then _
FileInstall("C:\Dokumente und Einstellungen\Fabian\Desktop\AutoItDateien\Hilfsdateien\KOI.ini", $KDP & "\KOI.ini") -
[autoit]
If FileMove(....) = 1 Then ConsoleWrite('Ferddisch')
[/autoit] -
Ich denke Auswerten des Returnwertes sollte das Einfachste sein.
ZitatSuccess: Returns 1.
-
-
So wird ein Schuh draus:
Spoiler anzeigen
[autoit]#include <file.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <array.au3>Dim $file = 'test.txt'
[/autoit] [autoit][/autoit] [autoit]
Dim $ar, $arSortable[1][3], $var_FileReadToArray($file, $ar)
[/autoit] [autoit][/autoit] [autoit]
If @error Then Exit_ArrayDisplay($ar, 'unsortiert - 1D Array')
[/autoit] [autoit][/autoit] [autoit]
ReDim $arSortable[$ar[0]][3]
For $i = 1 To UBound($ar) -1
$var = StringSplit($ar[$i], ' ')
If IsArray($var) Then
$arSortable[$i-1][0] = $var[1] ; Geb.Dat.
$arSortable[$i-1][1] = $var[2] ; Vorname
$arSortable[$i-1][2] = $var[3] ; Name
EndIf
Next_ArrayDisplay($arSortable, 'vor der Sortierung')
[/autoit]
_ArraySort($arSortable, Default,0,0,3,1)
_ArrayDisplay($arSortable, 'sortiert nach Vorname')
_ArraySort($arSortable, Default,0,0,3,2)
_ArrayDisplay($arSortable, 'sortiert nach Name') -
Also die Erklärung zu '+' mußt du im Vergleich zu '*' betrachten.
'+' bedeutet: Element MUSS mindest einmal, kann beliebig oft vorkommen
'*' bedeutet: Element kann beliebig oft vorkommen, also auch kein-mal.Und hiermit "[^0-9]+" schließt du alle Ziffern aus dem Match aus
Wenn Du alle Ziffern/Zahlen möchtest: "[0-9]+" oder kürzer: "\d+" -
- Das war definitiv ein Beitrag von dem ich nicht ein einziges Wort verstanden habe. :wacko:
-
Das ist ja grottig - dann muß man wohl jetzt alle Skripte nochmals testen, Heidenarbeit.
OK - danke für den Tipp, werde ich bei Gelegenheit mal durchsehen. -
Ich verstehe Deinen Ansatz nicht. Du schreibst:
D.h. in der Txt steht ein Name und ein MailAdresse.Warum liest du dann diese eine Zeile in ein Array ein? - Da tuts doch auch FileReadLine().
Und dann vergleichst du die ersten 6 Zeichen aus der Textdatei mit den Dateinamen. Sind denn die Namen bei dir alle genau 6 Zeichen lang? - Kann ich mir nicht vorstellen. -
Arrays sollte man schon mit For-Schleife durchgehen.
In dieser Variante spart man den Array-Include.
Oder nimm die Variante aus meiner Signatur (1D u. 2D).Spoiler anzeigen
[autoit]Func _ArrayDeleteEmpty(ByRef $ARRAY)
[/autoit]
If Not IsArray($ARRAY) Then Return 0
Local $arTMP[1]
For $i = 0 To UBound($ARRAY) -1
If $ARRAY[$i] <> '' Then
If $arTMP[0] = '' Then
$arTMP[0] = $ARRAY[$i]
Else
ReDim $arTMP[UBound($arTMP)+1]
$arTMP[UBound($arTMP)-1] = $ARRAY[$i]
EndIf
EndIf
Next
$ARRAY = $arTMP
EndFunc -
Hi,
wenn ihr mal mit ComboBoxen arbeitet werdet ihr merken, dass die vorhandenen Suchfunktionen ( _GUICtrlComboFindString / _GUICtrlComboBox_FindString ) keinen großen Wert besitzen, da selbst bei nichtsensitiver Suche der Eintrag nur gefunden wird, wenn er mit dem Suchbegriff beginnt.
Bsp.
Eintrag ist 'Waldfee'
Suche nach 'Wald' - erfolgreich
Suche nach 'fee' - kein ErfolgDeshalb habe ich eine Suchfunktion erstellt, die zum einen jedes eventuelle Vorkommen des Suchbegriffs berücksichtigt, wahlweise sensitive oder nichtsensitive Suche, und zum anderen den Index der ComboBoxListe für die Treffer und die zugehörigen Einträge zurückgibt. Rückgabetyp ist eine Array, dass die Anzahl der Treffer in Array[0][0] führt.
Erforderlich ist die aktuelle Beta.Spoiler anzeigen
[autoit];===============================================================================
[/autoit]
; Function Name: _ComboBoxSearch
; Description:: durchsucht alle ComboBox Einträge nach dem Suchbegriff
; Parameter(s): $hWnd Handle der ComboBox
; $sText Suchbegriff
; $iSens Sensitivität 0 = teilweise Übereinstimmung
; 1 = exakte Übereinstimmung
; Requirement(s): aktuelle Beta
; Return Value(s): 2D-Array Array[0][0] enthält die Anzahl der Treffer
; Array[$i][0] = Index in CB-Liste
; Array[$i][1] = Listeneintrag
; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
;===============================================================================
#Include <GuiComboBox.au3>
Func _ComboBoxSearch($hWnd, $sText, $iSens=0)
Local $arMatches[1][2]=[[0,'']], $n = _GUICtrlComboBox_GetCount($hWnd), $val
If $iSens < 0 Or $iSens > 1 Then $iSens = 0
For $i = 0 To $n -1
_GUICtrlComboBox_GetLBText($hWnd, $i, $val)
If StringInStr($val, $sText, $iSens) Then
ReDim $arMatches[UBound($arMatches)+1][2]
$arMatches[UBound($arMatches)-1][0] = $i
$arMatches[UBound($arMatches)-1][1] = $val
$arMatches[0][0] += 1
EndIf
Next
Return $arMatches
EndFunc ;==>_ComboBoxSearch -
Zitat
Original von bertizwo
P.S. Eine Lupe in AutoIt geht doch auch !!Eine Bildschirm-Lupe verändert aber nicht die Auflösung sondern stellt einen Bereich bei gleicher Auflösung auf größerer Fläche dar.
Zumindest sind mir keine anderen Lupenfunktionen bekannt.Für die Anzeige von Bereichen in unterschiedlicher Auflösung benötigst du andere Monitore. Ich kenne sowas nur von medizinischen Überwachungsmonitoren, die im Splitscreenverfahren Kurven und Texte in verschiedenen Auflösungen zeigen.
-
Versuch mal, ob du so Erfolg hast:
[autoit]WinWaitActive("Einstellungen für Installation vollständig")
[/autoit]
ControlClick("Einstellungen für Installation vollständig","","[CLASSNN:Button51]") -
Als erstes der traurige Standardsatz: Einige Controls kannst du nicht erwischen.
Für mehr stelle mal die genaue Ausgabe des Info-Tools zum Control ein. -
Das hilft nicht wirklich, da die Zeile mit dem Fehler bisher nicht von dir gepostet wurde. Also nicht nur die Fehleraussage, sondern auch der Verweis auf die Fehlerursache (liefert SciTE doch wunderbar), also die 2 Zeilen unterhalb der Fehlermeldung.
s. hier: -
Du hast eine GUI definiert:
[autoit]$MeineGUI = GUICreate.....
[/autoit]
[autoit]
Jetzt ein Hotkey:HotKeySet("!f", "_bla")
[/autoit]
[autoit]
Die Funktion:Func _bla()
[/autoit]
If WinGetTitle("") = $MeineGUI Then ; Abfrage aktives Fenster = mein Fenster
; CODE
EndIf
EndFunc -
Zitat
Original von HalliHalloSchat
hidie Abkürzungen funktionieren wunderbar, aber ich habe ein Problem mit den Calltips.
Wenn ich die User-Datei verwende passiert bei mir im SciTe nichts, wenn ich aber die normale api nehme und dort meine Einträge zuschreibe, funktionieren diese sofort und auf anhieb...
Muss ich irgendwo noch die User-Api "aktivieren"
Gruß
Das Problem hatte ich bisher noch nicht, mal suchen ob ich dazu etwas finde.
Aber es macht ja keinen Sinn in die Standard-api zu schreiben, da diese bei einem Update überschrieben wird. -
Hi, die von GTA benannte UDF ist in der angegebenen Variante fehlerhaft. Die Fehler werden im Laufe des Threads korrigiert.
Damit du dich nicht durchwühlen mußt, hänge ich mal eine sofort lauffähige Variante der UDF und ein Bsp. an.
Im Bsp. wird eine Verbindung zu
"endymion.insiderZ.DE", Channel "#chattest" (frei erfunden) aufgebaut. -
Ich hab hier mal ein Beispiel, wie du Comboboxen noch auswerten kannst.
Dazu wird jedem Eintrag eine Dualzahl zugewiesen. Somit läßt sich durch eine BitAND-Abfrage eindeutig ermitteln, welche Einträge markiert sind.
Das ist ganz komfortabel, wenn du eine Vielzahl von Einträgen hast. Außerdem kannst du durch die Indexauswertung besser operieren, als wenn du Inhalte abfragst.
Auch die Führung der Einträge in einem Array vereinfacht viele Operationen.
Du kannst zu jedem Eintrag dort z.B. Koordinaten hinterlegen und statt der hier erfolgten Labelbeschriftung die Koordinaten der ausgewählten Einträge weiterverarbeiten.Spoiler anzeigen
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GuiCombo.au3>Opt("GUIOnEventMode", 1)
[/autoit] [autoit][/autoit] [autoit]
Dim $arComboData[8][3] = [ _
['c1-1','c2-1','c3-1'], _
['c1-2','c2-2','c3-2'], _
['c1-3','c2-3','c3-3'], _
['c1-4','c2-4','c3-4'], _
['c1-5','c2-5','c3-5'], _
['c1-6','c2-6','c3-6'], _
['c1-7','c2-7','c3-7'], _
['c1-8','c2-8','c3-8']]
Dim $Selection = BitOR(2^0, 2^8, 2^16) ; Index 0 aus jeder Box$Form1 = GUICreate("Form1", 633, 254, 193, 115)
[/autoit] [autoit][/autoit] [autoit]
GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
$Combo1 = GUICtrlCreateCombo("", 56, 56, 145, 25)
GUICtrlSetOnEvent(-1, "Combo1Change")
$Combo2 = GUICtrlCreateCombo("", 232, 56, 145, 25)
GUICtrlSetOnEvent(-1, "Combo1Change")
$Combo3 = GUICtrlCreateCombo("", 408, 55, 145, 25)
GUICtrlSetOnEvent(-1, "Combo1Change")
$Button1 = GUICtrlCreateButton("Combos auswerten", 245, 133, 125, 25, 0)
GUICtrlSetOnEvent(-1, "Button1Click")
$Label1 = GUICtrlCreateLabel("", 55, 184, 500, 17, $SS_CENTER)
GUISetState(@SW_SHOW)For $i = 0 To UBound($arComboData)-1
[/autoit] [autoit][/autoit] [autoit]
_GUICtrlComboAddString($Combo1, $arComboData[$i][0])
_GUICtrlComboSetCurSel($Combo1, 0)
_GUICtrlComboAddString($Combo2, $arComboData[$i][1])
_GUICtrlComboSetCurSel($Combo2, 0)
_GUICtrlComboAddString($Combo3, $arComboData[$i][2])
_GUICtrlComboSetCurSel($Combo3, 0)
NextWhile 1
[/autoit] [autoit][/autoit] [autoit]
Sleep(100)
WEndFunc Button1Click()
[/autoit]
GUICtrlSetData($Label1, _GetSelValue())
EndFunc
Func Combo1Change()
$indx1 = _GUICtrlComboGetCurSel($Combo1)
$indx2 = _GUICtrlComboGetCurSel($Combo2)+8
$indx3 = _GUICtrlComboGetCurSel($Combo3)+16
$Selection = BitOR(2^$indx1, 2^$indx2, 2^$indx3)
EndFunc
Func _GetSelValue()
Local $a, $b, $c, $n = 8
For $i = 0 To UBound($arComboData) -1
If BitAND($Selection, 2^$i) Then
$a = $arComboData[$i][0]
ExitLoop
EndIf
Next
For $i = 0 To UBound($arComboData) -1
If BitAND($Selection, 2^($i+$n)) Then
$b = $arComboData[$i][1]
ExitLoop
EndIf
Next
$n = 16
For $i = 0 To UBound($arComboData) -1
If BitAND($Selection, 2^($i+$n)) Then
$c = $arComboData[$i][2]
ExitLoop
EndIf
Next
Return $a & '; ' & $b & '; ' & $c
EndFunc
Func Form1Close()
Exit
EndFunc