Ja, das war richtig knapp.
Beiträge von autoiter
-
-
Dankeschön!
Hat unabhängig vom Sieg (freut mich natürlich auch) Spaß gemacht, hier mal eine größere Tipprunde zu haben. Danke an alle- war cool!
-
Aber das ist Zukunftsmusik, erstmal brauchen wir einen "UDF" Foren Abschnitt.
Ich fände das auch gut. Allerdings halte ich das in diesem Zusammenhang wirklich nicht für einen entscheidenden Punkt. Einfach weil ein Großteil aller UDF, ja gar nicht aus diesem Forum kommt..
Das heißt, man kommt wohl nie zu einem System in dem alle UDF von einem Paketmanager automatisch gefunden und aktualisiert werden können. Es müssten immer Nutzer eingreifen und ein Archiv pflegen, wie es Water und Churanos hier in Beitrag 2 und 3 verlinkt haben.
Wenn man nun einen Paketmanager erstellen möchte scheint mir das englische Wiki als Basis eigentlich der beste Ausgangspunkt.
-
Also wozu der Index?
Der Index war nur ein Vorschlag als plausible Rückmeldung. Du hast doch geschrieben, dass du unzufrieden seist, nur den Button-Text zurück zu liefern..
Brauch ich hier auch kein Dim? Wenn ja wieso ?
Kannst du vorher mal erklären, warum du glaubst das an der Stelle zu brauchen und was da geschieht?
(Das soll eigentlich nur als Anstoß gelten, das noch einmal selbst zu durchdenken und ist keine Wissensabfrage. Wenn du Probleme hast, kannst du dich gerne melden).
-
Genau! Danke dir alpines
-
-
Ich könnte doch mit _ArraySearch den SetExtended(z.B 1) machen je nach Button und dann Return @extended ?
Nein.
Du kannst mit _ArraySearch den Index ermitteln und mit SetExtended zurückgeben (Return SetExtended(Index, Text). @extended dient im aufrufenden Skript um die Rückgabe des extended-Wertes abzufragen.
Führe mal folgenden Code aus:
-
Gib doch stattdessen den Index zurück, das erscheint mir logischer. Oder biete einen Switch an der entweder Index oder Name zurückgibt.
Oder gib beides zurück. Schau dir mal SetError an.
Stett Return $Return könntest du Return SetError(0, $iIndex, $Return) zurückgeben. @error wäre hier Null, @extended könnte der Index sein und $Return weiterhin der Text.
-
Leute, das einzige Problem wäre doch, wenn die Spaltenüberschriften in den unterschiedlichen Arbeitsblättern an unterschiedlichen Stellen wären. Dann müsste man das ja ganz anders angehen. Da tubsids aber _ArrayAdd verwendet scheint das nicht der Fall zu sein. Die Zeilenanzahl spielt ja keine Rolle. Es geht nur um die Spalten - und da muss das Array nie verkleinert werden sondern nur vergrößert werden, falls im anzuhängendem Array eine größere Anzahl an Spalten vorhanden ist.
ich glaube es war von der Erweiterung der Dimensionen eines Arrays die Rede
Das wäre natürlich noch ein Punkt. Mal sehen ob tubsids da noch etwas Klarheit hineinbringen kann.
-
Hallo Mikki
bspw. könnte man das so machen:
Code
Alles anzeigen#include <Array.au3> _test(15) ; erste Message _test(55) ; zweite Message Func _test($iMsg) Local $aArray[] = [10, 15, 29, 37, 38, 90] ; wenn zwischen den einzelnen Combos andere Controls erstellt wurden, sieht es eher so aus. Local $aArray2[] = [55, 56, 57, 58, 59, 60] ; wenn du die Controls alle nacheinander erstellt hast, haben sie aufeinander folgende Nummern (IDs). Switch $iMsg Case _ArraySearch($aArray, $iMsg) <> -1 MsgBox(0, "Treffer $aArray mit $iMsg: " & $iMsg, "Message ist im Array-Index " & _ArraySearch($aArray, $iMsg) & " gespeichert.") Case $aArray2[0] To $aArray2[5] ; bzw $aArray2[Ubound($aArray2)-1] For $i = 0 To 5 ; Kannst du auch mit _ArraySearch ersetzen. If $iMsg = $aArray2[$i] Then MsgBox(0, "Treffer $aArray2 mit $iMsg: " & $iMsg, "Message ist im Array-Index " & $i & " gespeichert.") ExitLoop EndIf Next Case Else MsgBox(0, "Fehler", "Kein Treffer.") EndSwitch EndFunc ;==>_test
-
Eine Zentrale Verwaltung gibt es leider nicht
Das ist der springende Punkt.
soetwas müsste von irgendwem gemanaged werden und dazu ist die Community zu klein, als dass sich das lohnt.
Da gibt es sicher kleinere Communities. Es würde schon helfen, wenn man dasUDF in den Foren immer gleich speziell ausweisen würde. Aber im Endeffekt hängt es aber an Leuten, die dem Thema eine solche Bedeutung beimessen, dass sie das sammeln und pflegen wollten. An diesen Leuten fehlt es uns. (Ich gehöre auch nicht dazu).
-
Wie kommst du darauf, dass der bisherige Inhalt verloren ginge?
Code
Alles anzeigen#include <Array.au3> Local $aArray_2D[20][15] For $i = 0 To UBound($aArray_2D) - 1 For $j = 0 To UBound($aArray_2D, 2) - 1 $aArray_2D[$i][$j] = "Item " & StringFormat("%02i", $i) & StringFormat("%02i", $j) Next Next _ArrayDisplay($aArray_2D, "2D display") ReDim $aArray_2D[20][20] _ArrayDisplay($aArray_2D, "2D after ReDim")
-
Um das noch zu ergänzen. Vielleicht sehe ich es einfach nicht. Dieses Skript fängt die Message des Scanners nicht in dem Sinne ab, dass nichts mehr an das aktive Fenster gesendet wird. Hier wird nur mitgelesen. Wenn wirklich ein Abfangen notwendig sein sollte, hätte ich einen Blick in Extensa - Hotkeys für unterschiedliche Eingabegeräte trennen empfohlen.
-
Hallo Scritch
meinst du nur während des Scans mitlesen, um mit dem Inhalt arbeiten zu können, oder willst du die Eingabe wirklich auch so abfangen, dass sie nicht weitergeleitet wird?
-
Selbst wenn die Arrays immer gleich groß wären, würde es ja nicht klappen, weil du das Array ja immer überschreibst. Wie geschrieben, das solltest du ändern ($aResultGesamt = _ArrayAdd($aResultGesamt,$aResult)).
Man kann das natürlich auch ganz anders manchen. Aber was hindert dich daran, erst die Spalten des neuen Arrays zu ermitteln, zu schauen, ob es mehr sind als die Spalten des bisherigen Array und in diesem Fall das bisherige Array ($aResultGesamt) per ReDim auf die notwendige Größe zu erweitern. Das ist nicht viel Arbeit und dukannst danach dein _ArrayAdd ausführen.
-
Hallo tubsids
Also für mich ist da kein Hinweis auf eine dritte Dimension. Aber ich kenne den Code ja auch nicht. Der Tipp von Musashi ist dennoch gut. Immer auf Fehler prüfen.
Allerdings kommt hier bei _ArrayDisplay gar kein Array mehr an, weil du es vorher schon mit einem numerischen Wert überschreibst. Schau dir mal an, was _ArraAdd für Rückgabe-Werte hat.
-
Nun ja, deshalb habe ich gefragt, ob du Kanashius Code ausgeführt hast.
Denn dort ist kein Zeilenumbruch in der Ausgabe der Message Box. MsgBox(48,"",$sDate&" == "&$arStrings[$i]&" => "&$equal) In deinem Screenshot ist aber ein solcher zu sehen. Der würde auch das fehlgeschlagene Prüfen erklären.
Ich weiß natürlich, dass der Text in einer Message Box automatisch umgebrochen wird. Auf meinem System aber nicht bei so einem kurzen Text...
Hast du denn den Code angepasst? Du kannst ja mal schauen, wie diese Message Box bei dir aussieht: -
Die ID deiner Controls hast du in dem Array gespeichert. Das gedrückte Control ist bei dir in der Variable $nMsg gespeichert. Du musst nun nur prüfen welcher Index mit $nMsg übereinstimmt. Das kannst du mit einer For-Schleife machen oder mit _ArraySearch.
-
Hallo sooooooooshunter ,
hast du das Bild nach Ausführung von Kanashius Code gemacht?
Dann scheint dein Problem zu sein, dass bei deinem Split noch ein Zeilenumbruch vor dem Datum enthalten ist.
-
Hey @claushendrik
bevor Oscar antwortet, möchte ich voranschicken: Man kann den Balken, wie bereits in Oscars Skript geschehen, als Endlosschleife (Marquee-Style) laufen lassen. Dabei kann regelmäßig geprüft werden, ob der gestartete Prozess noch läuft und wenn nicht -> Tata, beendet.
Wird die Progressbar vorher beendet dann soll die ausführende Batch to EXE auch beendet werden!
Dafür muss sich die (Batch).exe aber auch problemlos beenden lassen. Dann ist das kein Problem.
PS: Ich möchte Oscars Hinweis noch einmal bekräftigen. Was du mit Batch machst, kannst du auch mit AutoIt. Machst du es mit AutoIt, so hast du eine viel bessere Kontrolle über den Programmablauf. Daher solltet du wirklich erwägen, die benötigten Abläufe genau zu beschreiben.