1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. autoBert

Beiträge von autoBert

  • Shutdown Abfrage Ja/Nein mit GUI

    • autoBert
    • 13. Februar 2016 um 00:50

    Wenn es diese Art von Programm werden soll, die ich befürchte, weiß der TE sicher schon an welcher Schraube er drehen muß damit das Programm prompt wieder startet.

  • Versionsverwaltung von Skripten, @BugFix: Frage machbar?

    • autoBert
    • 13. Februar 2016 um 00:33

    Ich trage mich mit dem Gedanken eine Versionsverwaltungssystem (für AutoIt-Skripte) zu schreiben. Dazu habe ich eine grundsätzliche Frage: Ist es möglich mit Hilfe eines LUA-Skriptes beim Schliessen eines Skriptfiles in Scite ein Event abzufeuern, welches dann mein Programm veranlasst das Skript wieder in die DB zurück zu speichern?
    Der umgedrehte Weg funktioniert ja mit ShellExecute problemlos => Scite öffnet automatisch das Skript.

  • Wechsel zwischen geöffneten Fenstern - Raupi's Script

    • autoBert
    • 13. Februar 2016 um 00:11
    Zitat von AutoMit

    Warum testet niemand mal mein Script?

    Warum schreibt niemand eine Antwort, die er selbst getestet hat?

    Liegt wohl daran, daß du sofort nach Hilfe schreist und sie dann ignorierst.
    Daß zum Zusammenspiel einzelner Funktionen auch eine Portion logisches Denken gehört versteht sich von selbst. Um dieses zu trainieren ist es sehr nützlich verschiedene Scripte anderer Autoren zu analysieren, parallel dazu sollte man dann die Funktionen (Hilfe dazu genau durchlesen) an kleinen Miniskripten testen bis man ein Verständnis dafür hat, was die einzelnen Funktionen bewirken können. Mit der Zeit bekommt man durch das Mitlesen bzw. analysieren heraus wer die üblichen Verdächtigen für die Lösung bestimmter Probleme ist, Paradebeispiel GDI/GDI+ fällt mir sofort UEZ, Eukalyptus, Mars ein. Es gibt sicherlich noch mehr die sich gut damit auskennen. Ich würde aber, sollte ich ein GDI/GDI+ Problem zu lösen haben, zuerst Skripte dieser Autoren herunterladen und analysieren bis das Grundverständnis dafür da ist.
    Bei Listview fallen mir sofort Oscar, BugFix und Kanashius ein. Bei TreeView die gleichen Verdächtigen. Bei Array-Problemen natürlich BugFix. Diese Liste läßt sich noch ewig fortsetzen.

    Wenn man dann eine ausreichende Basis hat kann man sich auch selbst an ein solches Projekt heran trauen.

    Deinen Updateversuch für dieses Skript würde ich nie unternehmen, wenn ich soetwas bräuchte würde ich lieber nur die Idee nehmen und von 0 anfangen zu skripten. Das Skript gehört imho in die Tonne: Ein paar nützliche Funktionen (GetIconfromExe, _GetPathByPid, _Gui_RoundCorners) hat es, diese werden natürlich getestet damit man das Potential erkennt und bei Bedarf verwertet. Wenn du mich jetzt fragst:
    "Und wann habe ich dann noch Zeit um meine Projekte zu verwirklichen?" So laß dir gesagt sein: "Solange du die Basis nicht hast ist es besser du läßt es, denn wer rennen will muß zuerst sicher laufen können.

    Als ich meine 1. Anstellung als Quereinsteiger in der EDV hatte, mußte ich einen Praktikanten bei einem bestimmten Projekt betreuen. Entgegen meiner Bitte hat mein Chef darauf bestanden, daß es in GW-Basic realisiert wird. Ich hatte natürlich meine eigenen Projekte und hab es mir daher relativ einfach gemacht. Ich zeigte im in einer sehr mächtigen Sprache ein fertiges UserInterface und erklärte ihm, daß sein 1. Aufgabe ist sich in GW-Basic die Funktionen zu bauen welche benötigt werden um ein vergleichbares UI zu handlen ohne einen ReDo from Start auszulösen. Da er vorher noch keine einzige Zeile GW-Basic geschrieben hatte, hat er sich logischerweise daran gemacht die Sprache zu erkunden. Nach 4 Wochen war er soweit, daß er wußte welche Befehle er braucht um die 1. Aufgabe zu lösen. Nach der 6. Woche hatte er ein kleines vorgegebenes UI erstellt inkl. Speicherung der Datensätze. Bei den 1. Besprechungen mit dem Kunden war ich natürlich dabei, als gelernter Kaufmann war ich sozusagen der Dolmetscher. Auf Kundenseite war glücklicherweise 1 Frau, die in meiner Lehrzeit stellenweise meine Vorgesetzte war.
    1 Monat vor Ende der 6 Praktikumsmonate war ein kleines funktionales auf den Kunden zugeschnittenes Warenwirtsschaftssystem fertig. In den 5 Jahren die ich es danach noch mitbetreut habe, mußte ich keine einzige Zeile Code ändern. Die einzigen Probleme enstanden durch Stromausfall.
    Was ich dir damit sagen will: mit systematischem Vorgehen und erarbeiten der Grundlagen kommt man zum Ziel, du springst im Moment noch durch zuviele verschiedene Themen ohne diese verstehen zu können, da noch Teile der Grundlagen fehlen.

    mfg autoBert

  • Wechsel zwischen geöffneten Fenstern - Raupi's Script

    • autoBert
    • 12. Februar 2016 um 14:58
    Zitat von AutoMit

    @autoBert - vielen Dank für Deine Hilfe ! :)

    war für dieses Skript, das letzte mal. Ich halte es für nicht zu Ende gebracht und stürzt bei mir ohne Fehlermeldung nach Tastendruck (fehlende Icons) ab. Egal ob Absturz oder mit Cancel beendet, es bringt mir alle sichtbaren Fenster in der Anordnung und Größe durcheinander.

    Zitat von AutoMit


    Genau das habe ich, wie in Post 1 geschrieben: "WinActivate(0x00510C34)"

    ich schrieb: "Falls man WinActivate nicht mit dem Handle als Parameter nutzen kann, wie kann man dann ein Fenster aktivieren, von dem man "nur" das Handle hat? "

    Was ich mit WinActivate möchte: "Holt ein bestimmtes Fenster in den Vordergrund und setzt den Fokus auf dasselbe." - genau das.

    Es funktioniert nicht, wenn ich das Handle bei WinActivate einsetze.

    Da ich nur das Handle habe, fragte ich: wenn ich nur das Handle habe, wie aktiviere ich ein Fenster über das Handle in Analogie zu WinActivate?

    WinActivate akzeptiert FensterHandles anstelle des Titles. zumindest ist mir nichts gegenteiliges bekannt.

    Zitat von AutoMit


    ist wirklich nicht so: 3 Spalten werden gebraucht aber genauso viele Spalten wie Zeilen erzeugt, daß zu meinem obigen "Ich halte es für nicht zu Ende gebracht" und um Raupi in Schutz zu nehmen, er hat nur etwas mit dem EXE-Icon implementiert. Die Lösung hierzu habe ich ja schon mit Wechsel zwischen geöffneten Fenstern - Raupi's Script gepostet. Danach ist die Anzahl der Spalten immer 3 und die Anzahl der Zeilen hängt von den geöffneten Fenstern ab.

  • Formeln einpflegen 20€

    • autoBert
    • 11. Februar 2016 um 14:41

    Warum löst du das ganze nicht über die Excel.au3 und einem unsichtbaren Excel-Workbook?

    20 € kann leicht verdient sein, aber je nach verwendeten Excel-Formeln (Funktionen) auch zu wenig. Stell doch bitte eine Liste der verwendeten Excel-Formeln mit ein, damit man sich ein Bild machen kann. Am besten wäre natürlich gleich das umzusetzende Excel-File.

  • Warum lässt sich mein Programm nicht schließen ?

    • autoBert
    • 10. Februar 2016 um 22:50

    Würde auch mit TimerInit/TimerDiff in der Schleife funktionieren:

    Code
    $tdStart=TimerInit()
    _RandomZahl();damit _RandomZahl sofort 1* ausgeführt wird 
    While 1
    	$nMsg = GUIGetMsg()
    	Switch $nMsg
    		Case $GUI_EVENT_CLOSE
    			Exit
    	EndSwitch
    	If TimerDiff($tdStart) >=10000 Then
    		_RandomZahl()
    		$tdStart=TimerInit()
    	EndIf
    WEnd
    
    
    Func _RandomZahl()
    	$i = Random(10, 1000, 1)
    	GUICtrlSetData($Zahl, $i)
    EndFunc
    Alles anzeigen


    schöner ist allerdings AdlibRegister:

    Code
    AdlibRegister('_RandomZahl',10000);widerholt alle 10 s _RandomZahl
    
    
    _RandomZahl();damit _RandomZahl sofort 1* ausgeführt wird 
    While 1
    	$nMsg = GUIGetMsg()
    	Switch $nMsg
    		Case $GUI_EVENT_CLOSE
    			AdlibUnRegister('_RandomZahl')
    			Exit
    	EndSwitch
    WEnd
    
    
    Func _RandomZahl()
    	$i = Random(10, 1000, 1)
    	GUICtrlSetData($Zahl, $i)
    EndFunc   ;==>_RandomZahl
    Alles anzeigen
  • Warum lässt sich mein Programm nicht schließen ?

    • autoBert
    • 10. Februar 2016 um 20:07

    In einer Schleife mit GuiGetMsg hat sleep nichts zu suchen! Die Message könnte dadurch verloren gehen, was bei dir ja offensichtlich der Fall ist. Nimm statt sleep entweder:

    • eine Kombination aus TimerInit und TimerDiff.
    • AdlibRegister

    mfg autoBert

  • Wechsel zwischen geöffneten Fenstern - Raupi's Script

    • autoBert
    • 10. Februar 2016 um 18:44

    Um das Array zu verkleinern must du ein ReDim ausführen:

    Code
    $relatedwindows[0][0] =$j-1		;in 0|0 Anzahl der Zeilen
    ReDim $relatedwindows[$j][3]
    _ArraySort($relatedwindows,0,1)		;ab 1. Zeile mit der Sortierung beginnen
    _ArrayDisplay($relatedwindows)


    Für die Guigröße mußt du doch nur mit den gewünschten Werten multiplizieren:

    Code
    $background = GUICreate("", $guiW*2, $guiH*3, -1, -1, $WS_POPUP, $WS_EX_TOPMOST)


    Die Buttons werden in der Schleife ab 110 (neu!) erzeugt. Die Positionen musst du neu errechnen, da sich Fenstergröße ja geändert hat und

  • Zahlen in String auslesen

    • autoBert
    • 9. Februar 2016 um 22:16
    Zitat von dieselwiesel


    Nur das abc und (je nach Version) das 0.txt oder D.txt bleibt gleich.

    dann funktioniert u.a. dies dafür:

    Code
    Global $aFiles[]=['abc7860.txt','abc123-40.txt','abc456D.txt']
    
    
    For $i=0 To UBound($aFiles)-1
    	MsgBox(0,$aFiles[$i],_found($aFiles[$i]))
    Next
    
    
    Func _found($text)
    	$text=StringTrimLeft(StringTrimRight($text,5),3)
    	Return $text
    EndFunc
    Alles anzeigen
  • G13 Tastaturabfrage - deutschsprachige UDF Übersicht - (war NomadMemory.au3)

    • autoBert
    • 9. Februar 2016 um 14:39
    Zitat von progandy

    Übrigens gibt es auch eine UDF, um direkt aus AutoIT auf das LCD der G-Serie zuzugreifen. Damit kannst du LUA ganz vergessen :D
    AdvanceLcd - UDF für alle Logitech Produkte (G15, G19 etc.)
    Zugriff auf LCD der G15 mit der LgLCD SDK

    Zitat von Make-Grafik

    ...
    Alle funktionen in der NomadMemory sind mtlw schon in der WinAPI UDF vorhanden.

  • Makierter/ausgewählter Text (ohne Clipboard) kopieren/importieren

    • autoBert
    • 8. Februar 2016 um 16:17

    Sorry

  • Makierter/ausgewählter Text (ohne Clipboard) kopieren/importieren

    • autoBert
    • 8. Februar 2016 um 15:34

    ich halte es für keine gute Idee den IE wiederholt in der Schleife zu starten.

  • Probleme mit Arrays

    • autoBert
    • 7. Februar 2016 um 21:24

    Die Implementation deiner Auswertung in das Beispiel zu _GUICtrlListView_AddArray ist doch ganz einfach:

    AutoIt
    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <MsgBoxConstants.au3>
    
    
    Global $log = 'log.txt'
    Global $plog = @ScriptDir & "\pickup.txt"
    Global $file = FileRead($log)
    
    
    Global $idListview, $idRefresh, $iMsg
    
    
    ; Create GUI
    GUICreate("ListView Add Array", 400, 310)
    $idListview = GUICtrlCreateListView("Anzahl|Item", 2, 2, 394, 268)
    $idRefresh = GUICtrlCreateButton('&Refresh', 2, 275, 394, 25)
    GUISetState(@SW_SHOW)
    
    
    Global $aItems = _GetStat($file)
    _GUICtrlListView_AddArray($idListview, $aItems)
    While 1
    	$iMsg = GUIGetMsg()
    	Switch $iMsg
    		Case $GUI_EVENT_CLOSE
    			ExitLoop
    		Case $idRefresh
    			_GUICtrlListView_DeleteAllItems($idListview)
    			$aItems = _GetStat($file)
    			_GUICtrlListView_AddArray($idListview, $aItems)
    	EndSwitch
    
    
    WEnd
    
    
    GUIDelete()
    
    
    Func _GetStat($file_r)
    	$file_r = StringReplace(StringReplace($file, '[', ''), ']', '')
    	Local $a_split, $z
    	Local $aResult_u = StringRegExp($file_r, 'Ihr erhaltet: (.*)', 3)
    	If Not @error Then
    		;_ArrayDisplay($aResult_u, "RegExp Ergebnis")
    		_ArrayColInsert($aResult_u, 1)
    		For $h = 0 To UBound($aResult_u) - 1
    			$a_split = StringSplit($aResult_u[$h][0], "x")
    			$aResult_u[$h][1] = StringStripWS($a_split[1], 7)
    			If $a_split[0] > 1 Then
    				$aResult_u[$h][0] = Int($a_split[2])
    			Else
    				$aResult_u[$h][0] = 1
    			EndIf
    		Next
    		_ArraySort($aResult_u, 1, 0, 0, 1)
    		;_ArrayDisplay($aResult_u, '2D Array ohne Summen')
    		Dim $aResult_sum[UBound($aResult_u, $UBOUND_ROWS)][2]
    		$i = 0
    		$zaeler = 0
    		$item = $aResult_u[0][1]
    		For $j = 0 To UBound($aResult_u) - 1
    			If $aResult_u[$j][1] == $item Then
    				$zaeler += $aResult_u[$j][0]
    			Else
    				$aResult_sum[$i][0] = $zaeler
    				$aResult_sum[$i][1] = $item
    				$zaeler = $aResult_u[$j][0]
    				$item = $aResult_u[$j][1]
    				$i += 1
    			EndIf
    		Next
    		$aResult_sum[$i][0] = $zaeler
    		$aResult_sum[$i][1] = $item
    		_ArraySort($aResult_sum, 1, 0, 0, 0)
    		;_FileWriteFromArray($plog, $aResult_sum, Default, Default, " x ")
    		;_ArrayDisplay($aResult_sum, "2D Array mit Summen")
    		Return $aResult_sum
    	EndIf
    EndFunc   ;==>_GetStat
    Alles anzeigen
  • Probleme mit Arrays

    • autoBert
    • 7. Februar 2016 um 19:08

    _GUICtrlListView_AddArray dürfte die effektivste Methode sein.

  • Probleme mit Arrays

    • autoBert
    • 6. Februar 2016 um 15:27
    Zitat von Raupi

    Wat? Was für eine Andeutung?

    sorry hab mich wohl getäuscht (oder den Baum im Wald falsch zugeordnet )

    Zitat von Raupi

    Ich bin ein bisschen erstaunt, erst wollte keiner helfen und nun gibt es ein Combat wer die beste Lösung hat. :whistling:

    Wenn @BugFix mitmacht und das Dictionary-Object auspackt gehts mit Sicherheit noch schneller.

  • Probleme mit Arrays

    • autoBert
    • 6. Februar 2016 um 14:30

    Stimmt der 2. Parameter ist ein Element des Arrays. $z wurde am Anfang der Func deklariert hat also beim 1. Duchlauf den Wert 0. da $z nach abarbeiten der Suche, evtl. aufaddieren und löschen um 1 erhöht wird jedesmal ein anderes Element abgearbeitet.

    Hier einmal das Teilkonstrukt:

    Code
    Do ;bedingte äußere Schleife
    			$aFound=_ArrayFindAll($aResult_u,$aResult_u[$z][0]);,0,0,0,2)	;ist Element $aResult_u[$z][0] noch öfters vorhanden? 
    			ConsoleWrite($z & '. durchlauf: ' & $aResult_u&@TAB&$aResult_u[$z][0]&@CRLF)	;zu Verständniszwecken
    			_ArrayDisplay($aFound)								;zu Verständniszwecken
    			For $f=UBound($aFound)-1 to 1 Step -1				;alle anderen Funde durchgegeh 
    				$aResult_u[$z][1] += $aResult_u[$aFound[$f]][1]	;und dazuaddieren
    				_ArrayDelete($aResult_u,$aFound[$f])			;danach doppelten Eintrag Löschen
    			Next
    			$z+=1												;Zähler $z um 1 erhöhen
    		Until $z = UBound($aResult_u)							;solange bis alle 1. Vorkommen eines Elements abgearbeitet wurden

    da $z nach abarbeiten der Suche, evtl. aufaddieren und löschen um 1 erhöht wird jedesmal ein anderes Element abgearbeitet.

    Zitat von Mars

    Habe gerade gesehen, dass autoBerts Lösung durch den Regex ca. 10x schneller ist als meine Lösung...
    Also habe ich mal nachgerüstet :D (Sollte jetzt ca. 2x schneller sein als autoBerts Lösung)

    lg
    M

    Mit den gegbenen Daten bist du ca. 8 mal schneller. Ich bin aber der Meinung, daß mit zunehmender Datenmenge mein Skript aufholt und irgendwann überholt. Bin aber zu faul ein Testskript zu schreiben.

  • Alles gute Andy!

    • autoBert
    • 6. Februar 2016 um 14:04
    Zitat von Andy

    Vielen lieben Dank euch allen <3

    Schon gemacht... :D ... Aber der Unterschied zwischen Theorie und Praxis ist in der Praxis weit höher als in der Theorie. So sah es danach auch aus :rtfm:

    In dem Beitrag waren die größten Fässer, dies war der einzigste Grund, denn wer Bierologie und Hektoliteratur studiert hat kennt beides.

    Ich habe aber gerade: Forscher warnen: Zu oft Geburtstag haben gefährdet die Gesundheit gefunden, dies macht mich nachdenklich. Das einzigste was beruhigt:

    Zitat von ssi

    Immerhin: Partyfreunde dürfte beruhigen, dass es offenbar keinen Unterschied macht, ob Geburtstage gefeiert werden oder nicht.

    in diesem Sinne: noch eine schöne Feier
    :part:

  • Probleme mit Arrays

    • autoBert
    • 6. Februar 2016 um 13:27

    Du kannst jedes Element durchsuchen, einfacher ist aber in SFile zu tauschen.

    Code
    $file = StringReplace(StringReplace($file,'[',''),']','')

    direkt nach FileRead einfügen.

    Edit: Raupi Skript liefert falschen Wert. Resultate siehe Probleme mit Arrays

  • Probleme mit Arrays

    • autoBert
    • 6. Februar 2016 um 12:38

    Mars:

    Zitat von Mars

    Oh... da habe ich nicht drauf geachtet... Habe nicht bemerkt, dass da Leerzeichen am Ende übrig bleiben.
    Ist gefixt, jetzt müsste das Ergebnis bei uns beiden gleich sein.

    ja jetzt muß nur noch einer per Hand nach rechnen, nicht das Raupi Recht hat. Ich dachte, als das Thema eröffnet wurde, es sei ein 2. Account von Raupi (er hat mal in der SB eine Andeutung in diese Richtung Rift gemacht) und er ist nur zu faul.

    Spoiler anzeigen


    Raupi:

    Code
    Aventurin|70
    [Funkelblatt]|9
    [Thalasiterz]|4
    [DurchsichtigerStoff]|4
    [SagenumwobenesFell]|3
    [Thalasit-Kristall]|2
    [Thalasit-Ingot]|1
    [Zuckerstange]|1
    [ZirthanischerTraumegel]|1
    [RauerEdelstein]|1
    [GeringeDiplomatenauszeichnungderEmpyreischenAllianz]|1
    [EinAbgenutzterKieselstein]|1
    [BorottsBifokalbrille]|1
    [GeringeDiplomatenauszeichnungderHimmelblauenRhenke]|1
    [Merpho]|1
    [KleinesBlauesRuderboot]|1
    [Kleiner5-Sterne-Dimensionsvorrat]|1
    Alles anzeigen


    autoBert:

    Code
    Aventurin|74
    [Funkelblatt]|9
    [Durchsichtiger Stoff]|4
    [Thalasiterz]|4
    [Sagenumwobenes Fell]|3
    [Thalasit-Kristall]|2
    [Geringe Diplomatenauszeichnung der Himmelblauen Rhenke]|1
    [Geringe Diplomatenauszeichnung der Empyreischen Allianz]|1
    [Thalasit-Ingot]|1
    [Rauer Edelstein]|1
    [Kleines Blaues Ruderboot]|1
    [Borotts Bifokalbrille]|1
    [Merpho]|1
    [Zirthanischer Traumegel]|1
    [Kleiner 5-Sterne-Dimensionsvorrat]|1
    [Zuckerstange]|1
    [Ein Abgenutzter Kieselstein]|1
    Alles anzeigen


    Mars:

    Code
    Aventurin|74
    [Funkelblatt]|9
    [Durchsichtiger Stoff]|4
    [Thalasiterz]|4
    [Sagenumwobenes Fell]|3
    [Thalasit-Kristall]|2
    [Geringe Diplomatenauszeichnung der Himmelblauen Rhenke]|1
    [Geringe Diplomatenauszeichnung der Empyreischen Allianz]|1
    [Thalasit-Ingot]|1
    [Rauer Edelstein]|1
    [Kleines Blaues Ruderboot]|1
    [Borotts Bifokalbrille]|1
    [Merpho]|1
    [Zirthanischer Traumegel]|1
    [Kleiner 5-Sterne-Dimensionsvorrat]|1
    [Zuckerstange]|1
    [Ein Abgenutzter Kieselstein]|1
    Alles anzeigen
  • Probleme mit Arrays

    • autoBert
    • 6. Februar 2016 um 12:01
    Zitat von Raupi

    @autoBert, warum hast du deinen letzten Beitrag deaktiviert?

    Ergebnis ist noch nicht überprüft. Übrigens differerieren alle 3 Ergebnisse: die von Mars und meine stimmen weitgehend überein. Differenz liegt bei Mars:

    Code
    [Thalasiterz] |2
    [Thalasiterz]|2
    [Durchsichtiger Stoff] |3
    [Durchsichtiger Stoff]|1

    Diese noch zusammengefasst stimmen sie mit meinen Summen überein.

    Zitat von thewanderer

    @autoBert ich bekomme bei der Funktion "_ArrayColInsert($aResult_u,1)" einen Error - undefined function. Mach ich da was falsch? Kann in der Hilfe die Funktion auch nicht finden.

    du benutzt noch nicht 3.3.14.x Wann genau diese Funktion hinzugefügt wurde weiß ich nicht ab 3.3.14.1 ist sie aber definitiv enthalten.

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™