Warum überhaupt die Beeps? Die kannst du doch (normalerweise) auch über den Scanner machen lassen und das dann komplett unabhängig von dem verwendeten Programm.
Beiträge von Moombas
-
-
Und wenn du das Zahlenformat willst ginge das in etwa so (ich bin mir sicher das geht einfacher kürzer ist abe raus dem Ärmel geschüttelt):
AutoIt
Alles anzeigenOpt('MustDeclareVars', 1) #include <Date.au3> ConsoleWrite(SwitchTimeFormat( 1234, True ) & @CRLF) ;Anzahl der Ticks übergeben ConsoleWrite(SwitchTimeFormat('0:20:34', False) & @CRLF) ;Formatierte Zeit übergeben, wobei führende Nullen egal sind Func SwitchTimeFormat($Time, $Direction) Local $Min, $Sec, $Hou, $NewTime If $Direction then $Min = Number(Stringsplit($Time / 60, '.')[1]) $Sec = $Time - ($Min * 60) $Hou = Number(Stringsplit($Min / 60, '.')[1]) $Min = $Min - ($Hou * 60) $NewTime = StringFormat("%02s", $Hou) & ':' & StringFormat("%02s", $Min) & ':' & StringFormat("%02s", $Sec) Else $Time = Stringsplit($Time, ':') $NewTime = $Time[1] * 60 * 60 $NewTime += $Time[2] * 60 $NewTime += $Time[3] EndIf Return $NewTime EndFunc
-
-
Vielleicht bin ich blind aber wo packst du die Zeiten denn ins Array oder hakt es da schon?
Und wann soll das passieren? Ich gehe davon aus, jedesmal wenn der Timer gestoppt wird, das würde bedeuten, das das immer vor dem Zurücksetzen der Daten passieren muss.
1. Ein leeres (dummy) array erstellen.
2. wenn der Timer beendet wird den eintrag per arrayinsert (arrayadd geht besser, wenn das Ergebnis nicht auch im Array angezeigt werden soll oder oben anstatt unten steht) hinzufügen und (z.B. per Schleife) alle einzelnen Werte als Number() auslesen, zusammenrechnen und ausgeben.
-
HansJ54 : Hast du Recht, ich war da irgendwie bei einer eigenen Funktion. Sorry dafür
BugFix : Das würde bedeuten, das du jede einzelne Zeile selber durcharbeiten müsstest und auch die Sortierung in diesem 2D-Array komplett selber erledigen musst. Ich war von der Verwendung des vorhandenen _ArraySort() ausgegangen mit meiner Aussage, dem genau das Begreiflich zu machen.
Aber ich habe das hier gefunden: https://www.autoitscript.com/forum/topic/18…comment=1347110
-
HansJ54 : Zu Zeile 15 ja aber dein @error grift ja nicht, da es sich auf diene Funktion IniReadSectionNames bezieht und du diesen dort garnicht setzt. Du musst solch einen Fehler ansonsten innerhalb der Funktion definieren und dort dann auch @error (ggf. auch @extended) setzen. Bitte korrigiert mich aber @error dürfte in diesem Fall auch bei Fehlern innerhalb der Funktion niemals triggern.
Wegen dem sortieren: Autoit betrachtet die Versionsnummer als String und eine 9 ist größer als die 1. Ich weiß aktuell keinen guten Workaround dafür. Ich habe das bei mir mal damit gelöst mit einer zus. Spalte wo über Stringsplit auf den Punkt der Vordere Teil als Zahl interpretiert wird und somit richtig sortiert und danach diese Hilfsspalte gelöscht wird. Aber das war in dem Fall nur ein 1D-Array, das wird bei so einem wie hier ggf. schwer.
-
Meine "gefixte" Version wäre so HansJ54 :
AutoIt
Alles anzeigenOpt('MustDeclareVars', 1) #include <Array.au3> Global $sIniDatei = @ScriptFullPath Global $aErgebnis = Ini2Array($sIniDatei, True, True) ; sort sections and keys $aErgebnis[0][0] = "Client" Local $aRowLatest = _ArrayFindAll($aErgebnis, "Latest-->") ; row for latest version For $i = 1 To UBound($aErgebnis, $UBOUND_COLUMNS) - 1 $aErgebnis[$aRowLatest[0]][$i] = _ArrayMax($aErgebnis, 0, 1, $aRowLatest[0], $i) Next _ArrayDisplay($aErgebnis, "Browser- und WebDriver-Versionen", "1:", $ARRAYDISPLAY_NOROW + $ARRAYDISPLAY_COLALIGNCENTER, Default, _ArrayToString($aErgebnis, "|", 0, 0)) Func Ini2Array($sIni, $bSortSections = False, $bSortKeys = False, $bTranspose = False, $sEmptyField = "---") ;Habe auch mal den "Füller" für leere Felder Optional gemacht, nicht jeder mag das dort etwas drin steht obwohl dort nix drin steht^^ Local $sSection Local $aSectionNames = IniReadSectionNames($sIni) ;~ If @error Then Return SetError(@error, 0, 0); Aus meiner Sicht greift das nicht, da du in deiner Funktion keinen Seterror nutzt und somit überflüssig Local $aKeys = IniGetAllKeys($sIni) Local $aResult[$aSectionNames[0] + 1][$aKeys[0] + 1] ;Ubound unnötig, da bei allen Arrays die Anzahl mit übergeben werden ; Das sortieren ist kritisch, wenn ein Schlüssel Zahlen enthält passt das ganz so nicht mehr, daher geändert. If $bSortSections Then _ArraySort($aSectionNames, Default, 1) If $bSortKeys Then _ArraySort($aKeys, Default, 1) For $I = 1 To $aKeys[0] $aResult[0][$I] = $aKeys[$I] Next For $I = 1 To $aSectionNames[0] $sSection = $aSectionNames[$I] $aResult[$I][0] = $sSection For $J = 1 To $aKeys[0] $aResult[$I][$J] = IniRead($sIni, $sSection, $aKeys[$J], $sEmptyField) Next Next If $bTranspose Then _ArrayTranspose($aResult) Return $aResult Endfunc Func IniGetAllKeys($sIni) Local $sData = "|" Local $aSectionNames = IniReadSectionNames($sIni) If @error Then Return SetError(@error, 0, 0) For $i = 1 To $aSectionNames[0] Local $aInhalt = IniReadSection($sIni, $aSectionNames[$i]) If @error = 0 Then For $j = 1 To $aInhalt[0][0] If Not StringInStr($sData, "|" & $aInhalt[$j][0] & "|") Then $sData &= $aInhalt[$j][0] & "|" Next EndIf Next If StringRight($sData, 1) = "|" Then $sData = StringTrimRight($sData, 1) Local $aKeys[0] _ArrayAdd($aKeys, $sData) $aKeys[0] = Ubound($aKeys) - 1 ;Lieber direkt die Anzahl mit übergeben, da hier so oder so Zeile 0 leer ist Return $aKeys EndFunc #Region eingebettete INI #cs [Latest-->] [BLP1-WX] EdgeVersion=105.0.1293.63 FirefoxVersion=103.0.3.8255 ChromeVersion=105.0.5112.102 OfficeVersion=16.0.10389.20033 [BLP3-WX] ChromeVersion=104.0.5112.102 EdgeVersion=104.0.1293.63 FirefoxVersion=103.0.2.8255 OfficeVersion=16.0.10389.20033 [BLP2-WX] EdgeVersion=104.0.1293.63 ChromeVersion=104.0.5112.102 FirefoxVersion=103.0.2.8255 OfficeVersion=16.0.10389.20033 [BLP4-WX] ChromeVersion=104.0.5112.102 EdgeVersion=105.0.1293.63 FirefoxVersion=104.0.2.8255 OfficeVersion=16.0.10389.20033 [BLP5-WX] ChromeVersion=104.0.5112.102 EdgeVersion=104.0.1293.63 FirefoxVersion=103.0.2.8255 OfficeVersion=16.0.10389.20033 [BLP6-WX] ChromeVersion=104.0.5112.102 EdgeVersion=104.0.1293.63 FirefoxVersion=103.0.2.8255 OfficeVersion=16.0.10389.20033 [WebDriver] ChromeVersion=104.0.5112.79 EdgeVersion=104.0.1293.63 FirefoxVersion=0.31.1 #ce #EndRegion eingebettete INI
-
HansJ54 : Für mich sieht Zeile 38 falsch aus. $aSectionNames[0] - 1
In dem Feld $aSectionNames[0] sollte bereits die richtige Anzahl stehen, da dies somit kein 0-basiertes Array mehr ist, sondern ein 1-basiertes, geht das Array von 1 bis zur Zahl in [0]
Edit: Grad getestet und du bekommst zwar die Spalte mit Überschrift aber liest deren Daten nicht ein, bedeutet die -1 hier muss weg
-
Dazu gab es hierzu shcon mal ein Thema, das ist ein Problem seitens der Webseite (also AutoIt.de) und nicht deines PC's oder so.
-
BugFix : Ging mir auch so, mittlerweile sind aber so viele Web-Anwendungen am Laufen, die eine aktuelle Version erfordern, das es besser ist auf der neuesten zu bleiben (bezüglich der Browser, Windows etc. ist wieder eine andere Sache).
HansJ54 : Nicht das ich wüsste, dann müsstes du dir dafür eine eigene kleine GUI bauen aber da kann ich nicht bei helfen. AutoIt GUI und ich mögen uns nicht besonders :D.
-
Trotzdem danke für die Mühe und den Versuch zu helfen, hätte nicht gedacht das dies einen (funktionellen) Unterschied macht.
-
HansJ54 : Ich habe diese Option (Transpose) mal mit eingebaut, da dies je nach Anwendugsfall jemand anders haben wollen könnte, über einen Parameter steuerbar.
Damit sollte sie nun dynamisch genug sein.
-
-
HansJ54 Probier nochmal bitte, habs mal oben angepasst.
-
-
Wie wäre es damit? HansJ54
AutoIt
Alles anzeigenOpt('MustDeclareVars', 1) #Region ;************ Includes ************ #include <Array.au3> #EndRegion ;************ Includes ************ Global $aArray Global Const $sDatei = @scriptdir & "/settings.ini" $aArray = _FileReadIniToArray($sDatei, False) _ArrayDisplay($aArray) Func _FileReadIniToArray($File, $Transpose = False) Local $aInhalt, $sInsert, $Search Local $aErgebnis[1] = ['0'] Local Const $aSektions = IniReadSectionNames($File) For $Section = 1 To $aSektions[0] ;braucht kein Ubound, da dies im Array steht if UBound($aErgebnis, $UBOUND_COLUMNS) = 0 then _ArrayColInsert($aErgebnis, 1) Else _ArrayColInsert($aErgebnis, UBound($aErgebnis, $UBOUND_COLUMNS)) EndIf $aErgebnis[0][$Section] = $aSektions[$Section] $aInhalt = IniReadSection($File, $aSektions[$Section]) For $Row = 1 to $aInhalt[0][0] For $Column = 1 to $Section $sInsert &= '|' Next $Search = _ArraySearch($aErgebnis, $aInhalt[$Row][0], Default, Default, Default, Default, Default, 0, Default) if $Search = -1 then _ArrayAdd($aErgebnis, $aInhalt[$Row][0] & $sInsert & $aInhalt[$Row][1]) Else $aErgebnis[$Search][$Section] = $aInhalt[$Row][1] EndIf $sInsert = '' Next ;~ _ArrayAdd($aErgebnis, $aSektions[$Section] & "|" & $aInhalt[1][1] & "|" & $aInhalt[2][1] & "|" & $aInhalt[3][1] & "|" & $aInhalt[4][1]) Next $aErgebnis[0][0] = UBound($aErgebnis, $UBOUND_ROWS) - 1 if $Transpose Then _ArrayTranspose($aErgebnis) Return $aErgebnis EndFunc
-
Achso, wie gesagt der "POST" API call aus Beitrag nr. 13 funktioniert ja witzigerweise, ich habe nun alles auf dieses umgestellt.
Nur nicht das per winhttp.au3 (also direktem DLL Call) und das finde ich etwas verwirrend.
-
Was meinst du mit Beispiel?
Alles was ich bisher gepostet habe ist das was ich bereitstellen kann.
Mich wundert halt, warum das per Objekt funktioniert aber nicht per winhttp.au3, irgendwas muss da ja anders/falsch laufen.
Aber wenn da sonst auch keiner eine Idee hat, lasse ich diesen Teil per Objekt laufen, funktioniert ja jetzt.
Warum aber der direkte DLL Aufruf (winhttp.au3) nicht funktioniert dabei würde mich dennoch interessieren, falls jemand eine Erklärung hat.
-
Mal als Hinweis:
In Android ist es möglich auf dem Handy mehrere Nutzer einzurichten, analog zu den Benutzern in Windows.
Jaein, das kommt darauf an ob das Gerät als Work Managed (komplett Verwaltet), Work Profile (getrennte Bereiche für Privat und Geschäftlich) oder Corporate Personel (mix aus beidem) eingerichtet ist.
Bedeutet, wenn es ein Work Managed mit entsprechenden freigaben ist, kann es jedes dieser Profile sein. Und somit ist das nicht gesagt, das dies wirklich getrennte Daten sind. Ich emfpehle das weitehin mit dem Verwaltungsadmin des MDM zusammen zu machen, diese rkann ggf auch entsprechend e"Sperren" zurückziehen oder Wege freigeben, damit du deine Daten sichern kannst.
-
Als kleines Schmankerl: Folgendes funktioniert:
AutoIt
Alles anzeigenFunc SendFWRequest($Target, $RequestType, $Request, $OptionalData = $WINHTTP_NO_REQUEST_DATA) Local $sOut, $Url, $oHTTP, $Response Local Const $HTTPREQUEST_PROXYSETTING_DEFAULT = 0 Local Const $HTTPREQUEST_PROXYSETTING_PRECONFIG = 0 Local Const $HTTPREQUEST_PROXYSETTING_DIRECT = 1 Local Const $HTTPREQUEST_PROXYSETTING_PROXY = 2 $Url = "https://" & $Target & $Request $oHTTP = ObjCreate("winhttp.winhttprequest.5.1") $oHTTP.Open($RequestType, $Url, False) $oHTTP.Option(4) = 13056 $oHTTP.SetRequestHeader('accept', 'application/json') $oHTTP.SetRequestHeader('Authorization', 'Basic ' & base64($sUserName & ':' & $sPassword & ':' & somethingmore, True, True)) $oHTTP.SetRequestHeader('Content-Type', 'application/json') $oHTTP.Send($OptionalData) $Response = $oHTTP.Status $sOut = $oHTTP.ResponseText ;... EndFunc
Kann mir jetzt jemand sagen, warum das eine geht und das andere nicht? -.-