Beiträge von autoBert
-
-
Wenn schon ein Array vorhanden ist, warum benutzt du dann nicht _ArraySearch oder _ArrayFindAll? Beide können nach Teilstrings innerhalb von SubItems (Spalten) suchen.
-
Einen Arduino, paar Motoren, Blechstangen, Steckverbindungen und schon haste einen Roboter der deinen Müll entsorgt.
Gibt's das nicht schon fertig bei OPI?
-
Oder hast DU meine Posts nicht gelesen ?
ich deine schon, du aber hast mind. 1 überlesen: https://autoit.de/index.php/Thre…5503#post675503 geschweige denn getestet was ich als Demo eingestellt habe. Von daher halte ich
BugFix : bezweifle, daß er das liest ich habe ihm in meinem vorhergehenden Post etwas ähnliches demostriert, allerdings nicht mit Checkboxen.
diese Bemerkung für gerechtfertigt, im Gegensatz zu:
autoBert, Dich mögen bestimmt ganz viele Menschen oder ? kleiner Stinkstiefel !
damit macht man sich hier sicher Freunde.
-
Oscar : Full ack, würde ich auch so nie verwenden, war nur zur Demo um Lottichs Einwand zu widerlegen.
-
Das kann so eigentlich gar nicht funktionieren. Stringsplit liefert keinen String zurück, sondern ein Array.
Es kann funktionieren, siehe dieses Testskript:
Code$sTestString='Dies ist ein Test' MsgBox(0,'StringSplit-Test',StringSplit($sTestString,' ')[1]) MsgBox(0,'StringSplit-Test',StringSplit($sTestString,' ')[2]) MsgBox(0,'StringSplit-Test',StringSplit($sTestString,' ')[3]) MsgBox(0,'StringSplit-Test',StringSplit($sTestString,' ')[4])und es funktioniert wenn wie oben und auch im Snipet von @AutoMit direkt auf ein Element des zurügegebenen Arrays zugegriffen wird. Da kein Errorhandling eingebaut (und in der Kurzschreibweise auch nicht einbaubar), setzt es aber voraus das die Daten 100% dem erwartenten Muster enstsprechen.
-
Mars: das war ein IQ-Test von den ausseridrischen Headhunters. Auch im Paralleluniverusm werden fähige Leute gesucht.
-
ich habe ein Script, das eine https Seite öffnet, sich anmeldet und dann ein paar Sachen macht und sich wieder abmeldet.
Poste dein Skript,welches bei dir den Fehler verursacht und pushe nicht dein Thema. Pusher, werden hier gerne ignoriert. Solange keine 24 Stunden vorbei und auch niemand geantwortet hat, wird hier üblicherweise der Beitrag editiert und kein neuer erstellt.
mfg (auto)Bert
-
wenn nun PflichtCheckboxen nicht ausgefüllt worden sind sollen diese aufgelistet werden welche es sind und dann Return zur GUI
könnte alles so einfach sein, hierfür nimmt man Radio's und belegt einen der Werte vor. Dies habe ich so ähnlich schon ein paar Mal in deinem anderen Thema bemerkt:
Scheiß auf das Layout, die Funktionalität zählt und mit deinem (für dich) Superlayout kommen nur dumme Fragen, denn
Checkbox=Mehfachauswahl möglich, Radio=nur eine Antwort möglich. Man sollte Windowscontrols so verwenden wie sie vorgesehen sind, alles andere verunsichert nur den Anwender.
und wie man sieht, nicht nur den Anwernder. Der Programmierer ist sicher auch nicht sicher hat er oder hat er nicht?:
Habe es selber hin bekommen
leider doch noch nicht fertig
BugFix : bezweifle, daß er das liest ich habe ihm in meinem vorhergehenden Post etwas ähnliches demostriert, allerdings nicht mit Checkboxen. -
Hat jetzt zwar nichts mit Checkboxen zu tun, aber bei einer Auftragsprogrammierung habe ich folgendes Schema verwendet:
AutoIt
Alles anzeigen#AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 #include <ButtonConstants.au3> #include <ComboConstants.au3> #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <TabConstants.au3> #include <WindowsConstants.au3> #comments-start verwendetes Schema für Variablen Namen: $a = Arrays $h = Handles z.B. hForm für GuiHandle $id = für ControlID's gefolgt von 3 Buchstaben für den Controltyp Btn = Button Cbo = ComboBox Inp = Input Lbl = Label $i Integer $n Number $s String #comments-end #Region Hintergrundfarben für Eingabe Const $iDichte = 7.850 Const $iNegativ = 0xFF0000 Const $iPositiv = 0x000000 Const $iFehler = 0xFFAA00 Const $iNormal = 0xFFFFFF #EndRegion Hintergrundfarben für Eingabe #Region GUI Global $hForm = GUICreate("Infotool", 579, 456, 192, 124) GUICtrlSetState(-1, $GUI_SHOW) GUICtrlCreateGroup("Form&nestzahl", 32, 50, 250, 60) Global $idInpFNZ_n = GUICtrlCreateInput("", 57, 72, 200, 21, $ES_Number) GUICtrlCreateGroup("", -99, -99, 1, 1) GUICtrlCreateGroup("&Zykluszeit in Sek.", 32, 120, 250, 60) Global $idInpZyklus_n = GUICtrlCreateInput("", 57, 142, 200, 21) GUICtrlCreateGroup("", -99, -99, 1, 1) GUICtrlCreateGroup("Tagesproduktion (24 Std.)", 32, 190, 250, 60) Global $idLblProd24_n = GUICtrlCreateLabel("", 57, 212, 200, 21) GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif") ;GUICtrlSetColor(-1, 0xFF0000) GUICtrlCreateGroup("", -99, -99, 1, 1) Global $idBtnCalcProd_n = GUICtrlCreateButton("Tagesproduktion &berrechnen", 32, 260, 250, 30, $BS_DEFPUSHBUTTON) GUISetState(@SW_SHOW) #EndRegion GUI Global $iMsg While 1 $iMsg = GUIGetMsg() Switch $iMsg Case $GUI_EVENT_CLOSE Exit #comments-start Case $Tab1 $iTab = GUICtrlRead($Tab1) Switch $iTab Case 0 ControlFocus($hForm, '', $idInpFNZ_n) Case 1 ControlFocus($hForm, '', $idInpFNZ_e) Case 2 ControlFocus($hForm, '', $idCboMaschinen) Case 3 ControlFocus($hForm, '', $idInpLaenge) EndSwitch #comments-end Case $idBtnCalcProd_n _ProdCalc() EndSwitch WEnd #Region Berechnungen Func _ProdCalc() Local $iFNZ = Int(GUICtrlRead($idInpFNZ_n)) ;FormNestzahl ganzzahlig auslesen und zuweisen Local $nZyklus = _CommaToPeriod(GUICtrlRead($idInpZyklus_n)) ;Zykluszeit als Kommazahl (1 Nachkommastelle) auslesen und zuweisen Local $iError = 0 ;Fehlervariable initialisieren If $iFNZ <= 0 Then ;Fehler $iError += 1 ;also Fehlervaraible um 1 erhöhen 2^(ntes Eingabecontrol-1) => 2^(1-1) GUICtrlSetBkColor($idInpFNZ_n, $iFehler) Else GUICtrlSetBkColor($idInpFNZ_n, $iNormal) EndIf If $nZyklus <= 0 Then $iError += 2 ;also Fehlervaraible um 2 erhöhen 2^(ntes Eingabecontrol-1) => 2^(2-1) GUICtrlSetBkColor($idInpZyklus_n, $iFehler) Else GUICtrlSetBkColor($idInpZyklus_n, $iNormal) EndIf Local $iProd24 = Int($iFNZ * 24 * 3600 / $nZyklus) ;Tagesproduktion errechnen und auf ganze Zahl abrunden If Not $iError Then ;Alle Eingabefelder sind ausgefüllt GUICtrlSetData($idLblProd24_n, $iProd24) ;also Tagesproduktion anzeigen Else _MyErrorBox($iError, 'Formnestzahl|Zykluszeit', String($idInpFNZ_n & '|' & $idInpZyklus_n)) ;ansonsten auf fehlende Eingaben hinweisen EndIf EndFunc ;==>_ProdCalc #EndRegion Berechnungen #Region Hilfsfunktionen Func _MyErrorBox($iErr, $sErr, $sCtrls = '') #comments-start Hiermit werden Eingaben überprüft Parameter: $iErr Summe der Fehlerwerte 1. Fehler (2^0) 2. Fehler (2^1) ... n. Fehler (2^(n-1)) $sErr String aller möglichen Meldungen mit "|" getrennt $sCtrls optionaler Parameter enthält alle möglichen Fehler auslösenden ControlIDs in einem String mit "|" als Trennzeichen gleiche Reihefolge wie bei $iErr einhalten Autor: autoBert (autoit.de) #comments-end Local $iFocusCtrl, $bFirst = False Local $aCtrls = StringSplit($sCtrls, '|', 2) Local $aErr = StringSplit($sErr, '|', 2) Local $sMsg = 'Folgende(r) Wert(e): ' & @CRLF & @CRLF For $x = 0 To UBound($aErr) - 1 If BitAND(2 ^ $x, $iErr) = 2 ^ $x Then $sMsg &= $aErr[$x] & @CRLF If Not $bFirst Then $bFirst = True $iFocusCtrl = Int($aCtrls[$x]) EndIf EndIf ;ConsoleWrite($x&': '&$bFirst&@TAB&$iFocusCtrl&@CRLF) Next $sMsg &= @CRLF & 'überprüfen!' MsgBox(16, "Eingabe", $sMsg, 0, $hForm) If $bFirst Then ControlFocus($hForm, '', $iFocusCtrl) EndFunc ;==>_MyErrorBox Func _MyFormatedSetData($iCtrlID, $iWert) GUICtrlSetData($iCtrlID, $iWert) If $iWert < 0 Or Not (IsNumber($iWert)) Then GUICtrlSetColor($iCtrlID, $iNegativ) Else GUICtrlSetColor($iCtrlID, $iPositiv) EndIf EndFunc ;==>_MyFormatedSetData Func _CommaToPeriod($Var, $iDecPlaces = 1) $Var = StringReplace($Var, ',', '.') Return Round(Number($Var), $iDecPlaces) EndFunc ;==>_CommaToPeriod #EndRegion Hilfsfunktionenist nur ein kleiner Ausschnitt, da auf weitere Tabs u.U. schützenswertes Interesse des Kunden.
-
wie wäre es wenn du etwas mehr Angaben machst:
- wie, wo werden die Daten gespeichert (txt, ini, excel, SQLite)
- sollen Daten von mehreren Arbeitsplätzen aus erfasst werden
am besten zeigst du uns einmal was du bisher hast.
-
Wie stelle ich es jetzt noch an das ich nur den ersten Teil davon herausbekomme?
_GUICtrlListView_GetItemTextString returned ohne einen weiteren Paramter den Text von Col0 des aktuell sektierten Items. Wenn du aus diesem nur einen Teil brauchst, helfen alle Funktionen die mit String bzw. _String anfangen.
-
-
leeren übernimmt __GUICtrlListView_DeleteAllItems. Du solltest dir übrigens auch _GUICtrlListView_AddArray und _ArraySort anschauen. Mit diesen beiden funcs kannst du noch Zeit einsparen.
-
Ist das nicht eine Anwendung die im Browser läuft?
-
Homer J. S. wenn's hier einen LikeButton gäbe würde ich in klicken. Fühl dich also geehrt und füge ein Sir oder einen sonstigen Titel (außer Kaiser, König) vor deinem Namen ein!
-
Tweaky's antwort hat genau das Problem gelöst. Es geht jetzt lediglich um "Fine tuning" die "Funktionalität" ist auf jeden Fall gegeben.
was du da machst ist ähnlich wie wenn du in der BRD in einer einzigen Stadt Linksverkehr einführst!
-
wenn ja sollte der Status des Themas als erledigt gekennzeichnet werden.
-
Das könnte bereits die Lösung sein. Der Flag 1 gibt an, dass die Daten binär empfangen werden sollen.
und wenn es dann immer noch nicht klappt: BinaryToString kann mit 4 verschiedenen Flagwerten aufgerufen werden:
Zitat von HelpfileAlles anzeigen
Parametersexpression An expression to convert into a string. flag [optional] Changes how the binary data is converted:
$SB_ANSI (1) = binary data is ANSI (default)
$SB_UTF16LE (2) = binary data is UTF16 Little Endian
$SB_UTF16BE (3) = binary data is UTF16 Big Endian
$SB_UTF8 (4) = binary data is UTF8
Constants are defined in StringConstants.au3. -
in Pseudocode tue ich mich schwer, also gleich AutoIt:
Code
Alles anzeigen#include <Array.au3> Dim $Array1[]=[10, 20, 20, 100, 100, 100, 100] Dim $Array2[]=[20, 20, 100, 100, 50] For $i=UBound($Array2) -1 to 0 Step -1 $iFound=_ArraySearch($Array1,$Array2[$i]) ConsoleWrite($i&': '&$iFound&@CRLF) If $iFound <> -1 Then _ArrayDelete($Array1,$iFound) _ArrayDelete($Array2,$i) EndIf Next _ArrayConcatenate($Array1,$Array2) _ArraySort($Array1) _ArrayDisplay($Array1)idealerweise sollte immer durch das kleinere Array gelaufen werden