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. Moombas

Beiträge von Moombas

  • Ini2Array() : Ini-Datei in Array einlesen + IniGetAllKeys() : Array mit allen vorkommenden Keys einer Ini-Datei erzeugen

    • Moombas
    • 24. August 2022 um 15:24

    Meine "gefixte" Version wäre so HansJ54 :

    AutoIt
    Opt('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
    Alles anzeigen
  • Ini2Array() : Ini-Datei in Array einlesen + IniGetAllKeys() : Array mit allen vorkommenden Keys einer Ini-Datei erzeugen

    • Moombas
    • 24. August 2022 um 14:24

    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

  • Probleme beim Download

    • Moombas
    • 24. August 2022 um 12:50

    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.

  • Ini2Array() : Ini-Datei in Array einlesen + IniGetAllKeys() : Array mit allen vorkommenden Keys einer Ini-Datei erzeugen

    • Moombas
    • 24. August 2022 um 08:29

    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.

  • Winhttp.au3 / requests

    • Moombas
    • 23. August 2022 um 13:26

    Trotzdem danke für die Mühe und den Versuch zu helfen, hätte nicht gedacht das dies einen (funktionellen) Unterschied macht.

  • Ini2Array() : Ini-Datei in Array einlesen + IniGetAllKeys() : Array mit allen vorkommenden Keys einer Ini-Datei erzeugen

    • Moombas
    • 23. August 2022 um 13:03

    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.

  • Ini2Array() : Ini-Datei in Array einlesen + IniGetAllKeys() : Array mit allen vorkommenden Keys einer Ini-Datei erzeugen

    • Moombas
    • 23. August 2022 um 12:36

    Freut mich das ich helfen konnte ;)

    Auch wenn ich jedes mal mit den Arrays kämpfen muss aber irgendwann kann ich die auch in- und auswendig und ist eine gute Übung.

  • Ini2Array() : Ini-Datei in Array einlesen + IniGetAllKeys() : Array mit allen vorkommenden Keys einer Ini-Datei erzeugen

    • Moombas
    • 23. August 2022 um 11:57

    HansJ54 Probier nochmal bitte, habs mal oben angepasst.

  • Ini2Array() : Ini-Datei in Array einlesen + IniGetAllKeys() : Array mit allen vorkommenden Keys einer Ini-Datei erzeugen

    • Moombas
    • 23. August 2022 um 11:50

    ja gut, das ist je nach Anwendungsfall unterschiedlich, ich habe natürlich jetzt nicht an gleiche Werte in der 1. Spalte gedacht... wäre aber sinnig ;)

  • Ini2Array() : Ini-Datei in Array einlesen + IniGetAllKeys() : Array mit allen vorkommenden Keys einer Ini-Datei erzeugen

    • Moombas
    • 23. August 2022 um 11:27

    Wie wäre es damit? HansJ54

    AutoIt
    Opt('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
    Alles anzeigen
  • Winhttp.au3 / requests

    • Moombas
    • 19. August 2022 um 15:38

    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.

  • Winhttp.au3 / requests

    • Moombas
    • 19. August 2022 um 11:36

    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.

  • Daten von einem iPhone auf ein anderes kopieren

    • Moombas
    • 19. August 2022 um 10:09
    Zitat von BugFix

    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.

  • Winhttp.au3 / requests

    • Moombas
    • 19. August 2022 um 10:00

    Als kleines Schmankerl: Folgendes funktioniert:

    AutoIt
    Func 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
    Alles anzeigen

    Kann mir jetzt jemand sagen, warum das eine geht und das andere nicht? -.-

  • Daten von einem iPhone auf ein anderes kopieren

    • Moombas
    • 19. August 2022 um 08:18

    Naja, wenn es über ein MDM gemanaged ist, kann es sein das entsprechende Wege/Möglichkeiten gesperrt sind und somit werfe ich die Frage in den Raum ob das seitens deines Arbeitgebers überhaupt erlaubt ist, die Daten zu übertragen. Ggf. mit einem der Personen mal Rücksprache halten, die das MDM betreuen.

    Ich kenne mich aktuell da nicht ganz so gut aus bei iOS, da ich nur Erfahrungen mit Android im MDM habe.

    Ich kann dich daher nur generell auf das hier verweisen: https://support.apple.com/de-de/HT201269…es%20Ger%C3%A4t.

    Bezüglich Whatsapp: So lange die Handynummer gleich bleibt, sollte das so gehen, generell müsstest du aber bei Whatsapp ein Backup erstellen können und aufs neue Gerät übertragen können. Mit 'WeChat und Signal habe ich mich noch nicht beschäftigt.

  • GUI Label zwischen variabeln wechseln

    • Moombas
    • 18. August 2022 um 07:48

    Ich hab es befürchtet. Danke Kanashius für die Aufklärung.

  • Ausgangsszenarien für Turniere auflisten lassen

    • Moombas
    • 17. August 2022 um 15:58

    @Musashi Das Beispiel von Lanealine entspricht doch der Bundesliga, denn dort kommt kein AAA, AAB, ABB etc. vor.

    Dann sind wir bei Matrizen (n*n) und wie du schon richtig sagtest, kann eine Mannschaft nicht gegen sich selbst spielen, daher dann n*(n-1).

    Ok, bei der Bundesliga habe ich mich vertan, bei 18 Mannschaften wäre das ja 18*17 = 306 und würde somit passen.

    Aber damit nicht mehr ganz so utopisch wie deine erste Rechnung. Bei 200 Teilnehmern "nur" noch 39800 Möglichkeiten.

  • Winhttp.au3 / requests

    • Moombas
    • 17. August 2022 um 15:26

    Hi gmmg, mit Postman habe ich keine Erfahrungen, ich habe bisher über https://reqbin.com/req/c-d2nzjn3z/curl-post-body getestet bzw. die API Doku selber bietet im Prinzip das Gleiche (und noch mehr). Dort bekomme ich ja da skomplette "curl" Paket das ich dann entsprechend umarbeiten kann.

    Ich würde gerne sehen ob AutoIt bei dem erstellen der Header (komplett) bzw. der Daten irgendwas ändert und somit die Daten nicht mehr hin kommen. Also im Prinzip, das was man mit den oben genannten Schritten erzeugt hat, sich einmal anzeigen lassen, wie sie abgeschickt würden.

    Kann man das irgendwie erreichen?

  • GUI Label zwischen variabeln wechseln

    • Moombas
    • 17. August 2022 um 14:36

    Alina : Das "=" ist ja nur die Zuweisung, also du weist der Variable (in diesem Fall) sein Gegenteil zu

    Code
    $abfrage = not $abfrage
    ;ist das Gleiche wie
    $puffer = not $abfrage
    $abfrage = $puffer

    Rot ist zudem kein gutes Beispiel. Konzentriere dich nicht auf das "not" im wörtlichen und eine mathematische Gleichung.

    Im Prinzip wird hierbei das Komplement (Gegenteil) gesetzt (https://de.wikipedia.org/wiki/Nicht-Gatter#:~:text=Ein%20Nicht%2DGatter%20(englisch%3A,Es%20entspricht%20dem%20logischen%20Nicht.)

    Daher wird aus einem True ein False und anders herum.

    Dein Rot (ich nehme mal RGB an) FF0000 würde somit Türkis 00FFFF werden (ob autoit das so abbilden kann und macht in diesem Fall kann ich nicht sagen)

  • Ausgangsszenarien für Turniere auflisten lassen

    • Moombas
    • 17. August 2022 um 14:26
    Zitat von Alina

    Ja, das stimmt.
    Ich denke derzeitig, das es sich um ein Sporttunier handelt. Aber das ist durch die :Glaskugel:gedacht.

    @Musashi : Ich dneke deine Berechnung passt in diesem Fall nicht. Beispiel: Bundesliga mit 16 Mannschaften wo das "Jeder gegen Jeden" Prinzip zieht und das einmal Hin- und Rückspie.

    Meiner Berechnung nach müssten die Formel so lauten: Konstellationen = Teilnehmer * (Teilnehmer - 1)

    Wäre dann bei 16 Teilnehmern 240 Konstellationen

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™