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

Beiträge von Lambdax

  • Strings nach Länge sortieren (_ArraySortStringLen)

    • Lambdax
    • 10. April 2022 um 12:11
    Zitat von Oscar

    Ich habe mal eine UDF daraus gemacht und damit die auch mit älteren AutoIt-Versionen funktioniert, habe ich statt MAPS ein Array benutzt. Das ist nur geringfügig langsamer.

    Alles Weitere in Post#1.

    Cool danke, ich finde bestimmt mal eine anwendung dafür

  • Steam spiel ownership verifikation. Aber wie?

    • Lambdax
    • 28. März 2022 um 20:51

    Ich danke euch beiden, das könnte sehr wohl gut so funktionieren mit der Steam-API ! :part:

  • Steam spiel ownership verifikation. Aber wie?

    • Lambdax
    • 27. März 2022 um 20:20

    Ich schreibe an einem Frontend für eine Modifikation welches einem Spiel einen Multiplayer modus gibt. Und mir ist über die zeit aufgefallen das spieler diesen mod auch nutzen können wenn sie es pirated haben. Das misfällt mir und ich will die externe anwendung dahingehend ausweiten das diese überprüft ob der nutzer auch wirklich das Spiel in seiner Steam Bibliothek besitzt. Oder anders gesagt ich will den zugang zu der mod zumindestens erschweren für die jenigen die die das spiel nicht legitim besitzen.

    Eine google suche war dabei jetzt nicht hilfreich also habe ich mir mal die Steam dateien angesehen. Im Ordner "Steam\steamapps" befinden sich appmanifests, die die ID's der spiele enthalten die via Steam installiert worden sind, aber so eine datei lässt sich zuleicht selbst erstellen.

    Dann ist mir eingefallen: Als ich mal gecrackte software untersucht habe ist mir aufgefallen das immer die "steam_api.dll", die sich im spiele ordner selbst befindet, verändert wird. Wenn ich davon einen hash hardcode oder auf einem server bereithalte und prüfe ob der stimmt bei jedem start dann würde das zumindestens solange funktionieren bis die "steam_api.dll", entweder durch steam selbst, oder durch das spiel geupdated wird. In anderen worten, ein update und der mod geht offline bis der hash aktualisiert wurde.

    Da das nicht so praktisch ist frage ich mich ob es eine möglichkeit gibt steam direkt zu fragen, entweder durch ein argument an die steam.exe oder durch einen dllcall, ob der angemeldete nutzer das spiel hat oder nicht. Ich halte das für laufzeitfreundlicher aber habe bisher nicht herausgefunden wie.

    Hat jemand eine idee? :S

  • Strings nach Länge sortieren (_ArraySortStringLen)

    • Lambdax
    • 19. März 2022 um 13:03

    Mir ist bei der entwicklung der _storageS udf aufgefallen das maps langsamer werden je mehr elemente darin gespeichert werden. Das passiert beim dictionary auch, aber nicht so schnell.

    Hier mal veranschaulicht. Die map und das dictionary bekommen jeweils eine millionen elemente. Die zeit die beide je element brauchen wird in ein array gespeichert und am ende wird verglichen.

    Man sieht das die map ab ca. 120000 langsamer wird neue elemente hinzuzufügen als das dictionary. Mir ist das auch bei .Exists aufgefallen, hab ich in dem test aber nicht beachtet. Zwischendurch wird die map auch wieder schneller. Aber generell braucht es deutlich mehr zeit die eine millionen elemente der map zuzufügen als dem dictionary.

    AutoIt
    #NoTrayIcon
    
    Local $hTimer = 0, $nDiff = 0, $nAdds = 1e6
    Local $arResults[$nAdds + 1][3] = [["Map","Object","Zunahme / Abnahme"]] ; map | object | difference
    Local $hCheckProgressTimer = 0
    Local $sfSaveResultsHere = @ScriptDir & "\results.txt"
    Local $mMap[], $oDict = ObjCreate('Scripting.Dictionary')
    
    
    ; map
    For $i = 1 To $nAdds
        $hTimer = TimerInit()
        $mMap['a' & $i] = Null
        $nDiff = TimerDiff($hTimer)
    
        $arResults[$i][0] = $nDiff
    
        If TimerDiff($hCheckProgressTimer) > 1000 Then
            ConsoleWrite("Map Progress: " & $i & '/' & $nAdds & @TAB & "Currently taking: " & $nDiff & ' ms' & @CRLF)
            $hCheckProgressTimer = TimerInit()
        EndIf
    Next
    
    
    ; object
    $hCheckProgressTimer = 0
    For $i = 1 To $nAdds
        $hTimer = TimerInit()
        $oDict('a' & $i)
        $nDiff = TimerDiff($hTimer)
    
        $arResults[$i][1] = $nDiff
    
        If TimerDiff($hCheckProgressTimer) > 1000 Then
            ConsoleWrite("Dict Progress: " & $i & '/' & $nAdds & @TAB & "Currently taking: " & $nDiff & ' ms' & @CRLF)
            $hCheckProgressTimer = TimerInit()
        EndIf
    Next
    
    
    
    ; calculate differences
    For $i = 1 To $nAdds
        If $arResults[$i][0] < $arResults[$i][1] Then
            $arResults[$i][2] = Round((($arResults[$i][1] - $arResults[$i][0]) / $arResults[$i][0]) * 100, 2) & ' %'
        Else
            $arResults[$i][2] = '-' & Round((($arResults[$i][0] - $arResults[$i][1]) / $arResults[$i][1]) * 100, 2) & ' %'
        EndIf
    Next
    
    
    ; save
    Local $hOpen = FileOpen($sfSaveResultsHere, 2)
    FileWrite($hOpen, "Amount" & @TAB & $arResults[0][0] & @TAB & @TAB & @TAB & $arResults[0][1] & @TAB & @TAB & $arResults[0][2] & @CRLF)
    For $i = 1 To $nAdds
        FileWrite($hOpen, $i & @TAB & @TAB & $arResults[$i][0] & @TAB & @TAB & $arResults[$i][1] & @TAB & @TAB & $arResults[$i][2] & @CRLF)
    Next
    FileClose($hOpen)
    Alles anzeigen

    Das script braucht einige minuten. Leider ist das ergebnis zu groß für den anhang.

  • Strings nach Länge sortieren (_ArraySortStringLen)

    • Lambdax
    • 16. März 2022 um 19:16
    Zitat von AspirinJunkie

    Ist ein "Bucket-Sort".

    Es fehlt nur noch der Schritt, dass die einzelnen Buckets noch in sich selbst sortiert werden müssen.

    In Oscars Falle wäre dies lexikographisch unter Beachtung der Groß/Kleinschreibung.

    I.d.R. wird für diesen Schritt dann ein anderes Sortierverfahren verwendet (_ArraySort könnte man hierfür verwenden).

    Für den Fall hier wäre Bucket Sort wirklich ein ziemlich vernünftiger Ansatz :thumbup:

    Bucket-Sort also. Noch nicht gehört von, danke fürs mitteilen :thumbup: Und die buckets müssen auch noch sortiert werden. Dann vielleicht so hier

    C
    #NoTrayIcon
    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <WindowsConstants.au3>
    
    Global $sFile = @ScriptDir & '\autocomplete.txt'
    Global $sData = FileRead($sFile)
    Global $aWords = StringSplit($sData, @CRLF, 3)
    Global $iTimer, $iDiff
    
    
    $iTimer = TimerInit()
    _BucketSort($aWords, True, True)
    $iDiff = TimerDiff($iTimer) / 1000
    
    
    ConsoleWrite(StringFormat('Wörter: %i\r\nZeit: %.03f s\r\n', UBound($aWords), $iDiff))
    _ArrayShow($aWords)
    
    
    Func _BucketSort(ByRef $arWords, $bReverse = False, $bSortBuckets = False, $nMaxWordLen = 1000)
    
        ; we are going to need these locals
        Local $nWords = UBound($arWords) - 1, $nMaxLen = 0, $arMap[], $nLen = 0, $nCount = 0
        Local $arElements[$nWords + 1]
    
        ; create local maps, one for each len
        For $i = 1 To $nMaxWordLen
            Assign($i & 'm', $arMap, 1)
        Next
    
        ; sort the words by their len into the buckets
        For $i = 0 To $nWords
            $nLen = StringLen($arWords[$i])
            If $nLen > $nMaxLen Then $nMaxLen = $nLen
            Execute('__storageS_AssignMap($' & $nLen & 'm, $arWords[$i])')
        Next
    
        ; fetch the buckets
        If $bReverse Then
            For $i = $nMaxLen To 1 Step - 1
                $arMap = MapKeys(Eval($i & 'm'))
    
                ; and sort them by name
                If $bSortBuckets Then _ArraySort($arMap, 1)
                For $iS = 0 To UBound($arMap) - 1
                    $arElements[$nCount] = $arMap[$iS]
                    $nCount += 1
                Next
            Next
        Else
            For $i = 1 To $nMaxLen
                $arMap = MapKeys(Eval($i & 'm'))
                If $bSortBuckets Then _ArraySort($arMap)
                For $iS = 0 To UBound($arMap) - 1
                    $arElements[$nCount] = $arMap[$iS]
                    $nCount += 1
                Next
            Next
        EndIf
    
        $arWords = $arElements
    
    EndFunc
    
    ; cut from _storageS-UDF, to perform the execute trick
    Func __storageS_AssignMap(ByRef $Var, $Item)
        $Var[$Item] = Null
    EndFunc
    
    
    ; Funktion zum Anzeigen des Arrays
    Func _ArrayShow(ByRef $aData, $sTitle = 'ArrayShow')
        Local $hGui = GUICreate($sTitle, 540, @DesktopHeight - 140, -1, 10, BitOR($GUI_SS_DEFAULT_GUI, $WS_SIZEBOX))
        Local $idLV = GUICtrlCreateListView('Row|Data', 5, 5, 530, @DesktopHeight - 150)
        GUICtrlSetFont(-1, 12, 400, 0, 'Courier New')
        GUICtrlSetResizing(-1, $GUI_DOCKBORDERS)
        _GUICtrlListView_JustifyColumn($idLV, 0, 1)
        _GUICtrlListView_BeginUpdate($idLV)
        For $i = 0 To UBound($aData) - 1
            GUICtrlCreateListViewItem($i & '|"' & $aData[$i] & '"', $idLV)
        Next
        _GUICtrlListView_SetColumnWidth($idLV, 0, $LVSCW_AUTOSIZE)
        _GUICtrlListView_SetColumnWidth($idLV, 1, $LVSCW_AUTOSIZE)
        _GUICtrlListView_EndUpdate($idLV)
        GUISetState()
        Do
        Until GUIGetMsg() = -3
        GUIDelete($hGui)
    EndFunc   ;==>_ArrayShow
    Alles anzeigen

    Zeit: 0.247 s

  • Strings nach Länge sortieren (_ArraySortStringLen)

    • Lambdax
    • 16. März 2022 um 17:29

    Ich habs so gemacht: Quasi, keine ahnung ob sowas einen namen hat, ich nenne es mal ein kassen system. Jede wort länge hat eine eigene spalte (map in dem fall hier), wie in der kasse wo nach den münzen sortiert wird. Am ende werden die spalten (maps) einfach zusammen geworfen. Das braucht dann auch nur 0.231 s

    C
    #NoTrayIcon
    #include "_storageS_UDF.au3"
    #include <GUIConstantsEx.au3>
    #include <GuiListView.au3>
    #include <WindowsConstants.au3>
    
    Global $sFile = @ScriptDir & '\autocomplete.txt'
    Global $sData = FileRead($sFile)
    Global $aWords = StringSplit($sData, @CRLF, 3)
    Global $iTimer, $iDiff
    
    
    $iTimer = TimerInit()
    _SortWordsByLen($aWords, True)
    $iDiff = TimerDiff($iTimer) / 1000
    
    
    ConsoleWrite(StringFormat('Wörter: %i\r\nZeit: %.03f s\r\n', UBound($aWords), $iDiff))
    _ArrayShow($aWords)
    
    
    Func _SortWordsByLen(ByRef $arWords, $bReverse = False, $nMaxWordLen = 1000)
    
        Local $nArSize = UBound($arWords) - 1
    
        ; create MLx data lists, one for each word len
        For $i = 1 To $nMaxWordLen
            _storageMLx_CreateGroup($i)
        Next
    
        ; sort, by len, into the data lists
        Local $nMax = 0, $nLen = 0
        For $i = 0 To $nArSize
            $nLen = StringLen($arWords[$i])
            If $nLen > $nMax Then $nMax = $nLen
            _storageMLxRapid_AddElement($nLen, $arWords[$i])
        Next
    
        ; put the data lists together into an array
        Local $arElements[0]
        If $bReverse Then
            For $i = $nMax To 1 Step - 1
    
                $arElements = _storageMLx_GetElements($i)
    
                For $iS = 0 To UBound($arElements) - 1
                    _storageALR_AddElement($arElements[$iS])
                Next
    
                _storageMLx_DestroyGroup($i)
            Next
    
            For $i = $nMaxWordLen To $nMax Step - 1
                _storageMLx_DestroyGroup($i)
            Next
        Else
            For $i = 1 To $nMax
    
                $arElements = _storageMLx_GetElements($i)
    
                For $iS = 0 To UBound($arElements) - 1
                    _storageALR_AddElement($arElements[$iS])
                Next
    
                _storageMLx_DestroyGroup($i)
            Next
    
            For $i = $nMax To $nMaxWordLen
                _storageMLx_DestroyGroup($i)
            Next
        EndIf
    
        ; convert ALRapid to AL
        _storageALR_ConvertToAL("Words")
        _storageALR_Destroy()
    
        ; fetch the result
        $arWords = _storageAL_GetElements("Words")
        _storageAL_DestroyGroup("Words")
    
    EndFunc
    
    
    ; Funktion zum Anzeigen des Arrays
    Func _ArrayShow(ByRef $aData, $sTitle = 'ArrayShow')
        Local $hGui = GUICreate($sTitle, 540, @DesktopHeight - 140, -1, 10, BitOR($GUI_SS_DEFAULT_GUI, $WS_SIZEBOX))
        Local $idLV = GUICtrlCreateListView('Row|Data', 5, 5, 530, @DesktopHeight - 150)
        GUICtrlSetFont(-1, 12, 400, 0, 'Courier New')
        GUICtrlSetResizing(-1, $GUI_DOCKBORDERS)
        _GUICtrlListView_JustifyColumn($idLV, 0, 1)
        _GUICtrlListView_BeginUpdate($idLV)
        For $i = 0 To UBound($aData) - 1
            GUICtrlCreateListViewItem($i & '|"' & $aData[$i] & '"', $idLV)
        Next
        _GUICtrlListView_SetColumnWidth($idLV, 0, $LVSCW_AUTOSIZE)
        _GUICtrlListView_SetColumnWidth($idLV, 1, $LVSCW_AUTOSIZE)
        _GUICtrlListView_EndUpdate($idLV)
        GUISetState()
        Do
        Until GUIGetMsg() = -3
        GUIDelete($hGui)
    EndFunc   ;==>_ArrayShow
    Alles anzeigen

    Edit: Hab nen bug gefunden, jetzt läuft es bei 0.203 s

    Dateien

    _storageS_UDF.au3 132,08 kB – 264 Downloads
  • AutoIt 3.3.16.0 ist zur Welt gekommen ...

    • Lambdax
    • 16. März 2022 um 14:11

    mir fällt noch ein:

    - SRandom() funktioniert nicht mehr mit großen zahlen die als Double datentyp gespeichert sind, dafür aber jetzt mit großen Zahlen als Int64

  • [Wettbewerb] String komprimieren

    • Lambdax
    • 4. März 2022 um 19:12
    Zitat von Oscar

    Dann müssen wir die Gesamtgröße (inkl. Script und aller Zusatzdateien) vergleichen. Das wird absurd kompliziert.

    Es geht hier ja nicht darum, eine Kompressions-UDF zu entwickeln. Da gibt es bereits zahlreiche Methoden, um Text/Grafik/Binaries zu komprimieren.

    Ich wollte einen Wettbewerb, was mit reinem AutoIt-Code möglich ist.

    Vielleicht um auch mal kuriose Lösungswege aufzuzeigen.

    Alles klar, dann ist diese Variante raus. Für was anderes reicht meine Erfahrung leider nicht. Bin also gespannt was hier nächsten monat rauskommt :theke:

  • [Wettbewerb] String komprimieren

    • Lambdax
    • 4. März 2022 um 18:59
    Zitat von Oscar

    Ok, ich habe das nicht explizit gesagt/geschrieben, aber ich hielt das auch für selbstverständlich.

    Man muss die komprimierte Datei ja schließlich irgendwie wieder entpacken können, z.b auf einem anderen Rechner.

    Und wenn das Wörterbuch nicht mitzählt, dann kann man natürlich gigantische Kompressionsraten erzielen.

    Das halte ich nicht für Selbstverständlich. Mein Gedanke war, das zwei rechner auch die selbe Kompressions technik kennen müssen um den Text zu De/Komprimieren. Warum nicht also auch eine Standartisierte Wortliste, die die meißt verwendeten Wörter einer Sprache beinhaltet. Quasi das der Komprimierungsvorgang nur jene Worte austauscht die er auch kennt. Was AspirinJunkie da erzählt halte ich für ausgeschlossen, den dann müsste jeder Rechner jeden Text der je versendet werden würde, bereits vollständig kennen. Das wäre absurd platzbedürftig, je nach fall. Aber meine methode hingegen halte ich nicht für unrealistisch.

  • [Wettbewerb] String komprimieren

    • Lambdax
    • 4. März 2022 um 07:12
    Zitat von Oscar

    Eine Kompressionsrate besser als beim ZIP-Format erscheint mir zu gut, um wahr zu sein.

    Nur um das nochmal deutlich zu sagen: Ein verwendetes Wörterbuch bzw. eine Ersetztabelle muss natürlich im Kompressionsformat mit enthalten sein, sodass es von der Größe her mitzählt.

    Ehh, wo hast du das gesagt? Lese ich zum ersten mal

    Edit: selbst beim nochmal lesen, sehe ich diese regel nirgends. Bin mittlerweile bei 72.584 %. Wenn diese art der komprimierung nicht erlaubt ist, dann bin ich raus

  • [Wettbewerb] String komprimieren

    • Lambdax
    • 4. März 2022 um 04:58

    Hab mit Kompressionen noch nie was am hut gehabt. Tu mich auch mit der nutzung von externen libaries schwer. Aber warum nicht mal selbst versuchen

    Bisheriger Stand

    Code
    ============================================================
    Result for "Lambdax"
    ============================================================
    Decompressed = Original: True
    Length Original: 6033
    Length compressed: 1690
    Length decompressed: 6033
    Compress-Ratio: 71.987 %
    Time compressed: 143 ms
    Time decompressed: 11 ms
    ============================================================
    Alles anzeigen

    Da ist noch Luft denke ich

  • Globale Variablen mit den gleichen daten werden anscheinend von Autoit zusammengefasst

    • Lambdax
    • 17. Februar 2022 um 22:00

    Ich kann nicht behaupten alles davon zu verstehen, aber ich denke ich kann es mir vorstellen.

    Jedenfalls hab ich mal ein wenig herum probiert umzusehen wer noch so davon profitiert in Autoit.

    Locale Variablen - Ja

    Arrays - Nein

    Maps - Nein

    DictObj - Nein

    Dann hab ich einfach mal eintausend variablen erstellt in ein script geschrieben

    Code
    ....
    Global $990 = _Data()
    Global $991 = _Data()
    Global $992 = _Data()
    Global $993 = _Data()
    Global $994 = _Data()
    Global $995 = _Data()
    ....

    und diese mit je 1 MB gefüllt. Das selbe dann nochmal mit Localen und ohne sie in einen Scope zusetzen.

    Und auch hier profitiert Autoit davon.

  • Globale Variablen mit den gleichen daten werden anscheinend von Autoit zusammengefasst

    • Lambdax
    • 17. Februar 2022 um 19:58
    Zitat von BugFix

    das meiste landet dann doch auf der Platte in einem TMP-File. ^^

    Nun ja die 1 GB sind in 4 ms gelesen oder 5 GB in 5 ms. Egal ob die daten immer die selben sind oder sich für jede variable unterscheiden. So schnell ist meine HDD jetzt nicht. Aber deine vermutung das Windows dafür verantwortlich ist halte ich für möglich, auch wenn ich es nicht weiß.

  • Globale Variablen mit den gleichen daten werden anscheinend von Autoit zusammengefasst

    • Lambdax
    • 17. Februar 2022 um 18:31

    Bin bei der arbeit mit einer UDF darauf gestoßen das Globale variablen die die gleichen Daten tragen anscheinend von Autoit nicht erneut in den Speicher geschrieben werden, sondern wohl möglich nur einen Pointer bekommen.

    Beispiel.

    1. Ich Erstelle ein test datensatz von 1 MB

    2. Ich schreibe diese per Assign in 1000 verschiedene globale variablen. Immer den selben datensatz.

    3. prüfe danach ob die variablen auch wirklich die daten tragen die sie sollen

    4. prüfe mit ProcessGetStats() wie der RAM verbrauch ist

    und stelle fest

    Vor dem schreiben: 15.3 MB

    nach dem schreiben: 15.7 MB

    Und das obwohl 1 GB an daten vorhanden sind und auch ohne probleme ausgelesen werden können.

    C
     #NoTrayIcon
    #include "_storageS_UDF.au3"
    #include <Array.au3>
    #include <WinAPIConv.au3>
    
    Local $hTimer = 0, $nTime = 0, $sData = "", $nMemBefore = 0, $nMemAfter = 0, $sCheckData = ""
    
    ; create test data set
    ConsoleWrite("Creating test Data set of 1 MB" & @CRLF)
    For $i = 1 To 1048576
        $sData &= String(Random(0, 9, 1))
    Next
    ConsoleWrite("Created Data set" & @CRLF & @CRLF)
    
    
    $nMemBefore = ProcessGetStats(@AutoItPID)[0]
    
    ConsoleWrite("Writing 1 MB 1000 Times to 1000 different global variables" & @CRLF)
    $hTimer = TimerInit()
    For $i = 1 To 1000
        _storageG_Overwrite(123, $i, $sData)
    Next
    $nTime = TimerDiff($hTimer)
    
    ConsoleWrite("Write took: " & $nTime & " ms" & @CRLF & @CRLF)
    
    $nMemAfter = ProcessGetStats(@AutoItPID)[0]
    
    ConsoleWrite("Checking all variables for if the Data is correct" & @CRLF)
    For $i = 1 To 1000
        $sCheckData = _storageG_Read(123, $i)
        if $sCheckData <> $sData Then
            ConsoleWrite("Data at variable: " & $i & " is wrong" & @CRLF)
        EndIf
    Next
    
    ConsoleWrite("Check done" & @CRLF & @CRLF)
    
    ConsoleWrite("Mem Stats" & @CRLF & "Started at: " & _WinAPI_StrFormatByteSize($nMemBefore) & @CRLF & "Ended at: " & _WinAPI_StrFormatByteSize($nMemAfter) & @CRLF)
    Alles anzeigen

    Jetzt verändere ich den Test

    1. Ich Erstelle ein test datensatz von 1 MB

    2. Ich schreibe diese per Assign in 1000 verschiedene globale variablen und füge dem datensatz noch $i hinzu

    3. prüfe danach ob die variablen auch wirklich die daten tragen die sie sollen

    4. prüfe mit ProcessGetStats() wie der RAM verbrauch ist

    und stelle jetzt fest

    Vor dem schreiben: 15.3 MB

    nach dem schreiben: 1,97 GB

    C
    #NoTrayIcon
    #include "_storageS_UDF.au3"
    #include <Array.au3>
    #include <WinAPIConv.au3>
    
    Local $hTimer = 0, $nTime = 0, $sData = "", $nMemBefore = 0, $nMemAfter = 0, $sCheckData = ""
    
    ; create test data set
    ConsoleWrite("Creating test Data set of 1 MB" & @CRLF)
    For $i = 1 To 1048576
        $sData &= String(Random(0, 9, 1))
    Next
    ConsoleWrite("Created Data set" & @CRLF & @CRLF)
    
    
    $nMemBefore = ProcessGetStats(@AutoItPID)[0]
    
    ConsoleWrite("Writing 1 MB 1000 Times to 1000 different global variables" & @CRLF)
    $hTimer = TimerInit()
    For $i = 1 To 1000
        _storageG_Overwrite(123, $i, $sData & $i)
    Next
    $nTime = TimerDiff($hTimer)
    
    ConsoleWrite("Write took: " & $nTime & " ms" & @CRLF & @CRLF)
    
    $nMemAfter = ProcessGetStats(@AutoItPID)[0]
    
    ConsoleWrite("Checking all variables for if the Data is correct" & @CRLF)
    For $i = 1 To 1000
        $sCheckData = _storageG_Read(123, $i)
        if $sCheckData <> $sData & $i Then
            ConsoleWrite("Data at variable: " & $i & " is wrong" & @CRLF)
        EndIf
    Next
    
    ConsoleWrite("Check done" & @CRLF & @CRLF)
    
    ConsoleWrite("Mem Stats" & @CRLF & "Started at: " & _WinAPI_StrFormatByteSize($nMemBefore) & @CRLF & "Ended at: " & _WinAPI_StrFormatByteSize($nMemAfter) & @CRLF)
    Alles anzeigen

    Ich fand das interessant zu sehen, ist mir so vorher noch nicht aufgefallen. Vielleicht findet ihr das auch interessant. Deshalb der Post.

    UDF gibts im Anhang oder hier zum selbst probieren: https://github.com/OfficialLambdax/_storageS-UDF

    Dateien

    _storageS_UDF.au3 32,28 kB – 289 Downloads
  • Ein Typ namens Lambdax

    • Lambdax
    • 16. Februar 2022 um 22:16
    Zitat von SOLVE-SMART

    Hi Lambdax ,

    auch von mir ein herzliches Willkommen 👋 .
    Viel Erfolg bei deinen ambitionierten Vorhaben 👍 .

    Viele Grüße
    Sven

    Alles anzeigen

    Vielen Dank auch an dich ! :)

  • Ein Typ namens Lambdax

    • Lambdax
    • 16. Februar 2022 um 21:28
    Zitat von Musashi

    Willkommen im Forum !

    Es gibt viele Bereiche des Lebens (Musik, Literatur, selbst Medizin), in denen die Welt von Autodidakten maßgeblich bereichert wurde ;) .

    Gruß Musashi

    Dankeschön ! :)

  • Ein Typ namens Lambdax

    • Lambdax
    • 16. Februar 2022 um 19:47

    Ich hab das Programmier handwerk nicht gelernt sondern mir selbst beigebracht. Dementsprechend fallen meine Antworten und Repositories regelrecht Amateurhaft aus.

    Momentan versuche ich zu bewerkstellen eine TCP libary zu programmieren welche zu gleich leicht zu bedienen ist, sichere verschlüsselungs techniken bereitstellt, stabil ist und auch so schnell ist wie es in Autoit nur möglich ist. Damit will ich erreichen das Anfänger und Amateur Programmierer, wie ich, endlich leichten zugang zu den modernen Sicherheitstechniken bekommen und somit das Internet sicherer machen. Zumindestens soweit es mir möglich ist. Gleichzeitig soll diese libary auch genug komplexität besitzen, das damit ausgefallene und große projekte umgesetzt werden können.

    Praktisch eine GoTo libary für Autoit wen es um Kommunikation zwischen computern geht.

    Allerdings ist das für mich eine ganz schöne aufgabe und ich sitze seit bereits Mitte 2021 daran.

    Finden kann man das gesammelt hier: https://github.com/OfficialLambdax/_netcode-UDF

    Anonsten habe ich einfach nur Spaß am programmieren :theke:

    Tschüss und schönen tag noch

  • SVG Inhalt mit Autoit auslesen

    • Lambdax
    • 16. Februar 2022 um 19:09

    Und aus der Hilfe

    "The URL parameter should be in the form "http://www.somesite.com/path/file.html""

    Also SOLVE-SMART 's vorschlag mit dem www. wäre mal nen versuch wert

  • SVG Inhalt mit Autoit auslesen

    • Lambdax
    • 16. Februar 2022 um 19:06

    Catch mal den Error

    Code
    Local $sText = InetRead($sURL, 1)
    ConsoleWrite("Return: " & $sText & @TAB & "Error: " & @error & @TAB & "Extended: " & @extended" & @CRLF)
  • TCPNameToIP Problem

    • Lambdax
    • 16. Februar 2022 um 14:28
    Zitat von Moombas

    Ich würde nun gerne sagen "ich habs gewusst" aber musste selber erst mal wühlen und hatte das gleiche Ergebnis wie du.

    Irgendwo in einem Unterbeitrag hatten sie das www. davor - ausprobiert - funktioniert :P

    Manchmal ist es auch ein ww3. oder was anderes was davor muss. In der Regel teil der Browser dem proxy mit was er will. Ich hab die dinge aber immer alle abgeschnitten und nicht gedacht das sich je ein problem daraus ergeben würde. Ich hab dir jedenfalls auch ein Dank in dem Script gewidmet.

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™