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

Beiträge von BugFix

  • Array ByRef in SubSkript registrieren?

    • BugFix
    • 17. August 2021 um 23:42
    Zitat von misterspeed

    Angenommen das passiert bei 50% des Füllvorgangs, dann verarbeitest du zur Hälfte "alte" Daten und zur Hälfte "neue" Daten. Wenn das ein Problem wäre kommt das so ohnehin nicht in Frage.

    Das Array würde natürlich ein Element enthalten, dass den Status mitteilt. Eine Verarbeitung würde davon abhängig sein.

    Das Hauptskript soll nur Daten von verschiedenen Quellen einsammeln und diese werden dann in einem anderen Skript verarbeitet.

    Ich werde mal versuchen, mit DllCallback zu arbeiten. Da habe ich dann Pointer zur Verfügung und somit einen Zugriff ByRef. Nur bin ich dann wieder beschränkt bei der Flexibilität meiner Datentypen.

  • Array ByRef in SubSkript registrieren?

    • BugFix
    • 17. August 2021 um 22:40

    Ja, das ist mir klar. ByRef ist nur als Funktionsparameter möglich. Adlib ist aber parameterlos und somit wird das Anfangsarray nur kopiert und in der Sub wird nur auf diese Kopie, die sich leider nicht aktualisieren lässt, zugegriffen.

    Ich hoffte nur, dass jemand einen genialen Hack kennt, um das irgendwie zu realisieren. ;)

  • Array ByRef in SubSkript registrieren?

    • BugFix
    • 17. August 2021 um 15:16

    Ich habs mal als lauffähiges Bsp. exrahiert:

    AutoIt: main.au3
    #include "sub.au3"
    
    HotKeySet("^!x", '_Exit')
    
    Global $aData[3]
    _FillArray($aData)
    
    ; sub - Funktionen
    _Register_Array($aData, 50)
    _Run()
    
    ; es werden immer dieselben Daten verarbeitet
    
    
    While True
        Sleep(50)
        _FillArray($aData)
    WEnd
    
    
    
    Func _Exit()
        Exit
    EndFunc
    
    Func _FillArray(ByRef $a)
        For $i = 0 To UBound($a) -1
            $a[$i] = Int(Random(1,50,1))
        Next
    EndFunc
    Alles anzeigen
    AutoIt: sub.au3
    Global $g_aUpdateValues = Null
    Global $g_iIntervall = Null
    
    ; Datenquelle und Intervall registrieren
    Func _Register_Array($_aValues, $_iIntervall)
        $g_aUpdateValues = $_aValues
        $g_iIntervall = $_iIntervall
    EndFunc
    
    
    ; Verarbeitung in Intervallen starten
    Func _Run()
        If $g_iIntervall <> Null Then
            AdlibRegister(_Calculation, $g_iIntervall)
        EndIf
    EndFunc
    
    
    ; Verarbeitung
    Func _Calculation()
        For $i = 0 To UBound($g_aUpdateValues) -1
            ConsoleWrite('Verarbeite ' & $g_aUpdateValues[$i] & @CRLF)
        Next
        ConsoleWrite('-----------------------' & @CRLF)
    EndFunc
    Alles anzeigen
  • Array ByRef in SubSkript registrieren?

    • BugFix
    • 17. August 2021 um 13:55

    Ich stehe gerade etwas auf der Leitung.

    Ich habe ein Skript, das ich includieren möchte. Von dort aus soll auf ein sich im Hauptskript befindliches Array mit wechselnden Inhalten, intervallmäßig zugegriffen werden.

    Deshalb habe ich eine Registrierfunktion, über die das Hauptskript das Array an das SubSkript meldet.

    Aber es nutzt ja nichts, wenn ich einer im SubSkript definierten Variable die Arrayvariable aus dem Hauptskript zuweise, das Array wird dann ja nur einmalig mit aktuellem Inhalt kopiert.

    Ich müsste ByRef zugreifen, also schick wäre ja sowas: $a_Sub = ByRef $a_Main - OK, geht nicht.

    Habt ihr einen Ansatz?

  • ConsoleWrite funktioniert mit ​#RequireAdmin nicht

    • BugFix
    • 16. August 2021 um 22:20
    Zitat von Tweaky

    Wenn ich SciTE als Admin starte funktioniert ConsoleWrite.

    OK, hatte ich noch nicht probiert.

    Zitat von Tweaky

    Seltsam ist warum ConsoleWrite funktioniert wenn z. B. <GuiListView.au3 inkludiert wird

    Bin gerade nicht am PC um das zu probieren. Mach ich morgen mal.

  • ConsoleWrite funktioniert mit ​#RequireAdmin nicht

    • BugFix
    • 16. August 2021 um 21:17

    #RequireAdmin startet das Skript in einem neuen Prozess, der keine Verbindung zur Konsole von SciTE hat. Somit ist ein ConsoleWrite nicht möglich.

    Das war es auch noch nie.

  • SQLite Backup

    • BugFix
    • 16. August 2021 um 08:29

    Neue Version 0.3

    Angabe von Schema Namen möglich (Standard To: "main", From: "main")

    Laden DB in Speicher: Handle-Variable muss nur deklariert, nicht vorbelegt sein

  • Ich möchte mein acc löschen lassen

    • BugFix
    • 15. August 2021 um 10:11
    Zitat von Haudiweg

    Ich bin auf linux umgestiegen deswegen kann ich autoit nicht mehr benutzen und möchte deswegen den acc hir löschen lassen (alles)

    Alles (Beiträge von dir) wird niemals gelöscht, das würde die Struktur des Forums zerstören. Wenn ich mich recht erinnere, wird in deinen Beiträgen ein Platzhalter (Gast oder so) für deinen Namen eingesetzt.

  • SQLite Backup

    • BugFix
    • 12. August 2021 um 11:21

    Version 0.2

    In der Backupfunktion für RunningDB wurde Sleep() verwendet, was einen Export dieser Funktion in einen eigenen Prozeß erforderlich machen würde, um tatsächlich im Skript die DB parallel weiterbearbeiten zu können.

    Das habe ich jetzt geändert und verwende eine Adlib-Funktion. Dadurch gibt es natürlich keinen Return mehr von dieser Funktion - zur Abfrage des Funktionsstatus und des letzten Fehlers wurden weitere Funktionen ergänzt.

    EDIT: Oops, da war ein (funktionell nicht tragischer) Fehler in der Adlibfunktion

    Zeile 296 muss heissen:

    statt

    $g_Backup_iRet = _SQLite_ErrCode($g_Backup_pFile)

    richtig

    $g_Backup_iErr = _SQLite_ErrCode($g_Backup_pFile)

    Ist im ersten Post und Dateianhang korrigiert.

  • SQLite Backup

    • BugFix
    • 11. August 2021 um 15:19

    Seit SQLite Version 3.7.4 gibt es die Backup-Funktionen. Im englischen Forum wurde dazu eine einzelne Backup-Funktion erstellt, die mir aber zu unflexibel ist und auch nicht mehr dem Versionsstand entspricht ( dort wird noch die Pagesize abgefragt, was inzwischen überflüssig ist, da Ungleichheiten von den Funktionen selbst korrigiert werden).

    EDIT 2021-08-12:

    In der Backupfunktion für RunningDB wurde Sleep() verwendet, was einen Export dieser Funktion in einen eigenen Prozeß erforderlich machen würde, um tatsächlich im Skript die DB parallel weiterbearbeiten zu können.

    Das habe ich jetzt geändert und verwende eine Adlib-Funktion. Dadurch gibt es natürlich keinen Return mehr von dieser Funktion - zur Abfrage des Funktionsstatus und des letzten Fehlers wurden weitere Funktionen ergänzt.

    EDIT 2021-08-16 v0.3:

    Ich habe zusätzlich noch einen Parameter für Schema-Namen eingefügt, falls nicht Standard (To: "main", From: "Main") verwendet wird. ACHTUNG: script breaking chance! bei _SQLite_Backup_RunningDB() zu Vorversion, da dieser Parameter vor dem Parameter max_Steps eingefügt wurde.

    Beim Laden einer DB in den Speicher ist das Vorbelegen der Handle-Variable mit "-1" nicht mehr erforderlich. Ich prüfe nun ob es ein Pointer ist (somit: Memory to File) oder keiner (somit: File to Memory).

    Ich habe die Dll-Aufrufe in einzelne Funktionen gepackt und zwei unterschiedliche Backup-Funktionen erstellt:

    Code
        _SQLite_Backup_LoadOrSaveDB
            Loads a database from file into memory or vice versa
    
        _SQLite_Backup_RunningDB
            Creates a backup of a running database. The database is not locked and can be used
            during the backup process. An optional progress function can be passed.
    
        _SQLite_Backup_RunningDB_Status
            Returns the status of _SQLite_Backup_RunningDB()
             $SQLITE_BACKUP_NOTRUNNING = 0 or $SQLITE_BACKUP_RUNNING = 1
    
        _SQLite_Backup_RunningDB_LastError
            Returns the last error from _SQLite_Backup_RunningDB()
    
        _SQLite_ErrCodeLiteral
            Returns the passed SQLite error code as corresponding literal
    Alles anzeigen

    Nicht ganz unwichtig: Die Zieldateien für das Backup werden ohne Nachfrage überschrieben, sofern sie bereits existieren!


    AutoIt: SQLite_Backup.au3
    ;-- TIME_STAMP   2021-08-15 12:32:35   v 0.3
    
    #include-once
    #include <SQLite.au3>
    
    #cs
        First implementation of sqlite3_backup_XXX() in version 3.7.4
        https://www.sqlite.org/backup.html
        Quote:
        "The online backup API allows the contents of one database to be copied into another database,
        overwriting the original contents of the target database. The copy operation may be done incrementally,
        in which case the source database does not need to be locked for the duration of the copy,
        only for the brief periods of time when it is actually being read from.
        This allows other database users to continue uninterrupted while a backup of an online database is made."
    
        Also useful to know: Default Page Size Change of SQLite 3.12.0
        https://www.sqlite.org/pgszchng2016.html
    
        Here tested with 32-bit DLL (x86) for SQLite version 3.36.0
        https://www.sqlite.org/download.html
        Paragraph: Precompiled Binaries for Windows
    #ce
    
    
    #cs
        FUNCTIONS
        ------------------------------------------------------------------------------------------------
    
        _SQLite_Backup_LoadOrSaveDB
            Loads a database from file into memory or vice versa
    
        _SQLite_Backup_RunningDB
            Creates a backup of a running database. The database is not locked and can be used
            during the backup process. An optional progress function can be passed.
    
        _SQLite_Backup_RunningDB_Status
            Returns the status of _SQLite_Backup_RunningDB()
             $SQLITE_BACKUP_NOTRUNNING = 0 or $SQLITE_BACKUP_RUNNING = 1
    
        _SQLite_Backup_RunningDB_LastError
            Returns the last error from _SQLite_Backup_RunningDB()
    
        _SQLite_ErrCodeLiteral
            Returns the passed SQLite error code as corresponding literal
    
        ------------------------------------------------------------------------------------------------
    
        DLL FUNCTIONS
        ------------------------------------------------------------------------------------------------
    
        _SQLite_Backup_Init
            Initialises a sqlite3_backup object
    
        _SQLite_Backup_Step
            Copy up to N pages between the source and destination databases specified by sqlite3_backup object
    
        _SQLite_Backup_Remaining
            Returns the number of pages still to be backed up at the conclusion of the most
            recent _SQLite_Backup_Step(). The value is updated each time _SQLite_Backup_Step() is called.
    
        _SQLite_Backup_Pagecount
            Returns the total number of pages in the source database at the conclusion of the most
            recent _SQLite_Backup_Step(). The value is updated each time _SQLite_Backup_Step() is called.
    
        _SQLite_Backup_Finish
            Releases all resources associated with the sqlite3_backup object
    
        ------------------------------------------------------------------------------------------------
    #ce
    
    
    
    
    ; Error constants (not included in SQLite.au3) from sqlite3.c
    If Not IsDeclared('SQLITE_FORMAT')  Then Global Const $SQLITE_FORMAT  = 24
    If Not IsDeclared('SQLITE_RANGE')   Then Global Const $SQLITE_RANGE   = 25
    If Not IsDeclared('SQLITE_NOTADB')  Then Global Const $SQLITE_NOTADB  = 26
    If Not IsDeclared('SQLITE_NOTICE')  Then Global Const $SQLITE_NOTICE  = 27
    If Not IsDeclared('SQLITE_WARNING') Then Global Const $SQLITE_WARNING = 28
    
    ; Time (ms) between 2 backup_step operations in _SQLite_Backup_RunningDB().
    ; Required in order not to block other file accesses. Please do not reduce too much.
    Global Const $BACKUP_STEP_WAIT = 100
    
    ; Global constants, variables to use with backup on running database
    Global Const $SQLITE_BACKUP_NOTRUNNING = 0
    Global Const $SQLITE_BACKUP_RUNNING = 1
    Global $g_Backup_pDB, $g_Backup_pFile, $g_Backup_nPage, $g_Backup_fProgress, $g_Backup_iErr, $g_Backup_iStatus = $SQLITE_BACKUP_NOTRUNNING
    
    
    
    ;===================================================================================================
    ; Function Name....: _SQLite_Backup_LoadOrSaveDB
    ; Description......: Loads a database from file into memory or vice versa
    ; Parameter(s).....: $_FileDB        The database file path. The database is loaded into the memory from there
    ; .................:                or the database is saved from the memory to there.
    ; .........ByRef!!.: $_MemDB        If you create this variable without any value (none DB pointer), it triggers the creation
    ; .................:                of a new :memory: database.
    ; .................:                This also determines the backup direction "file to memory".
    ; .................:                If $_MemDB is a DB pointer (holds the handle from a :memory: database) the backup direction
    ; .................:                is "memory to file". The file is overwritten without confirmation if it exists!
    ; .......optional..: $_sDBschemes    Database Names ("To From") associated with the databases. (Scheme names: "main", "temp" or AS-name from ATTACH statement)
    ; .................:                 Default: "", means: "main main". If not default, pass both names separated by a space. (e.g. "temp MYCOPY")
    ; .................:                 Please note: Scheme names are case sensitive
    ; Return Value(s)..: Success        $SQLITE_OK
    ; .................: Failure        $SQLITE_ERROR  If "_SQLite_Open(FILE)" fails: @error=error from this call, @extended=possible SQLite error there
    ; Remarks(s).......: The page parameter for _SQLite_Backup_Step() will not passed, the default (-1) copies all pages at once.
    ;===================================================================================================
    Func _SQLite_Backup_LoadOrSaveDB($_FileDB, ByRef $_MemDB, $_sDBschemes='')
        Local $pFile = _SQLite_Open($_FileDB)
        Local $iErr = @error, $iExt = @extended
        If $iErr Then Return SetError($iErr,$iExt,$SQLITE_ERROR)
        Local $bSaveToFile = True, $iRet, $pBackup, $pTo, $pFrom, $iErr
        If Not IsPtr($_MemDB) Then
            $bSaveToFile = False
            $_MemDB = _SQLite_Open()
        EndIf
        $pFrom = $bSaveToFile ? $_MemDB : $pFile
        $pTo = $bSaveToFile ? $pFile : $_MemDB
        Local $aSchemes[] = ['main','main']
        If $_sDBschemes <> '' Then $aSchemes = StringSplit($_sDBschemes, ' ', 2)
        $pBackup = _SQLite_Backup_Init($pTo, $aSchemes[0], $pFrom, $aSchemes[1])
        If @error = $SQLITE_OK And $pBackup <> 0 Then
            $iErr = _SQLite_Backup_Step($pBackup)
            If $iErr <> $SQLITE_ERROR Then _SQLite_Backup_Finish($pBackup)
            $iRet = _SQLite_ErrCode($pTo)
        Else
            $iRet = $SQLITE_ERROR
        EndIf
        _SQLite_Close($pFile)
        Return $iRet
    EndFunc  ;==>_SQLite_Backup_LoadOrSaveDB
    
    
    ;===================================================================================================
    ; Function Name....: _SQLite_Backup_RunningDB
    ; Description......: Creates a backup of a running database. The database is not locked and can be used
    ; .................: during the backup process.
    ; Parameter(s).....: $_pDB            Handle to an open database
    ; .................: $_FileDB        The file path for backing up the database. The file is overwritten without confirmation if it exists!
    ; .......optional..: $_funcProgress    The progress function like: progress(remaining, pagecount)
    ; .................:                 If defined, this function is called, so the percentage completion
    ; .................:                 of the process may be calculated as:
    ; .................:                 completion = 100% * (pagecount - remaining) / pagecount
    ; .......optional..: $_sDBschemes    Database Names ("To From") associated with the databases. (Scheme names: "main", "temp" or AS-name from ATTACH statement)
    ; .................:                 Default: "", means: "main main". If not default, pass both names separated by a space. (e.g. "temp MYCOPY")
    ; .................:                 Please note: Scheme names are case sensitive
    ; .......optional..: $_iMaxSteps    The max. number of step operations (default: 100). The sum of the pages
    ; .................:                is divided by this value to determine the number of pages per step.
    ; Return Value(s)..: None            Get it with call of _SQLite_Backup_RunningDB_LastError()
    ; Remark(s)........: You can get the current status ($SQLITE_BACKUP_NOTRUNNING = 0 or $SQLITE_BACKUP_RUNNING = 1)
    ; .................: with call of _SQLite_Backup_RunningDB_Status()
    ;===================================================================================================
    ; Uses AdlibRegister
    ; In Adlib-function needed values as Global: $g_Backup_pDB, $g_Backup_pFile, $g_Backup_nPage, $g_Backup_fProgress, $g_Backup_iErr, $g_Backup_iStatus
    Func _SQLite_Backup_RunningDB($_pDB, $_FileDB, $_funcProgress=Null, $_sDBschemes='', $_iMaxSteps=100)
        $g_Backup_nPage = 1
        $g_Backup_pFile = _SQLite_Open($_FileDB)
        If @error Then
            $g_Backup_iErr = $SQLITE_CANTOPEN
            Return
        EndIf
        Local $aSchemes[] = ['main','main']
        If $_sDBschemes <> '' Then $aSchemes = StringSplit($_sDBschemes, ' ', 2)
        $g_Backup_pDB = _SQLite_Backup_Init($g_Backup_pFile, $aSchemes[0], $_pDB, $aSchemes[1])
        $g_Backup_iErr = @error
        If $g_Backup_iErr = $SQLITE_OK And $g_Backup_pDB <> 0 Then
            $g_Backup_iStatus = $SQLITE_BACKUP_RUNNING
    
            ; run once
            ; _SQLite_Backup_Pagecount() needs first a call of _SQLite_Backup_Step()
            $g_Backup_iErr = _SQLite_Backup_Step($g_Backup_pDB, $g_Backup_nPage) ; 1st step with one page ($g_Backup_nPage=1)
            $g_Backup_nPage = Int(_SQLite_Backup_Pagecount($g_Backup_pDB)/$_iMaxSteps) ; calculate the number of pages per step for passed $_iMaxSteps
            If $g_Backup_nPage < 1 Then $g_Backup_nPage = 1 ; result may be <1, so correct it
            $g_Backup_fProgress = $_funcProgress
            If $g_Backup_fProgress <> Null Then
                $g_Backup_fProgress(_SQLite_Backup_Remaining($g_Backup_pDB), _SQLite_Backup_Pagecount($g_Backup_pDB))
            EndIf
    
            If ($g_Backup_iErr = $SQLITE_OK Or $g_Backup_iErr = $SQLITE_BUSY Or $g_Backup_iErr = $SQLITE_LOCKED) Then
                AdlibRegister(__SQLite_Backup_StepWait, $BACKUP_STEP_WAIT)
            ; The ElseIf branch is only executed if the entire database was copied the first time _SQLite_Backup_Step() was called.
            ElseIf ($g_Backup_iErr <> $SQLITE_OK And $g_Backup_iErr <> $SQLITE_BUSY And $g_Backup_iErr <> $SQLITE_LOCKED) Then
                _SQLite_Backup_Finish($g_Backup_pDB)
                $g_Backup_iErr = _SQLite_ErrCode($g_Backup_pFile)
                _SQLite_Close($g_Backup_pFile)
                $g_Backup_iStatus = $SQLITE_BACKUP_NOTRUNNING
            EndIf
        Else
            _SQLite_Close($g_Backup_pFile)
        EndIf
    EndFunc  ;==>_SQLite_Backup_RunningDB
    
    
    ;===================================================================================================
    ; Function Name....: __SQLite_Backup_StepWait
    ; Description......: Internal AdlibRegister function, called from _SQLite_Backup_RunningDB
    ; Parameter(s).....: None
    ; Return Value(s)..: None
    ;===================================================================================================
    Func __SQLite_Backup_StepWait()
        AdlibUnRegister(__SQLite_Backup_StepWait)
        $g_Backup_iStatus = $SQLITE_BACKUP_RUNNING
        $g_Backup_iErr = _SQLite_Backup_Step($g_Backup_pDB, $g_Backup_nPage)
        If $g_Backup_fProgress <> Null Then
            $g_Backup_fProgress(_SQLite_Backup_Remaining($g_Backup_pDB), _SQLite_Backup_Pagecount($g_Backup_pDB))
        EndIf
        If ($g_Backup_iErr = $SQLITE_OK Or $g_Backup_iErr = $SQLITE_BUSY Or $g_Backup_iErr = $SQLITE_LOCKED) Then
            AdlibRegister(__SQLite_Backup_StepWait, $BACKUP_STEP_WAIT)
        ElseIf ($g_Backup_iErr <> $SQLITE_OK And $g_Backup_iErr <> $SQLITE_BUSY And $g_Backup_iErr <> $SQLITE_LOCKED) Then
            _SQLite_Backup_Finish($g_Backup_pDB)
            $g_Backup_iErr = _SQLite_ErrCode($g_Backup_pFile)
            _SQLite_Close($g_Backup_pFile)
            $g_Backup_iStatus = $SQLITE_BACKUP_NOTRUNNING
        EndIf
    EndFunc  ;==>__SQLite_Backup_StepWait
    
    
    ;===================================================================================================
    ; Function Name....: _SQLite_Backup_RunningDB_Status
    ; Description......: Returns the status of _SQLite_Backup_RunningDB()
    ; Parameter(s).....: None
    ; Return Value(s)..: $SQLITE_BACKUP_NOTRUNNING = 0 or $SQLITE_BACKUP_RUNNING = 1
    ;===================================================================================================
    Func _SQLite_Backup_RunningDB_Status()
        Return $g_Backup_iStatus
    EndFunc  ;==>_SQLite_Backup_RunningDB_Status
    
    
    ;===================================================================================================
    ; Function Name....: _SQLite_Backup_RunningDB_LastError
    ; Description......: Returns the last error from _SQLite_Backup_RunningDB()
    ; Parameter(s).....: None
    ; Return Value(s)..: The last error from _SQLite_Backup_RunningDB
    ;===================================================================================================
    Func _SQLite_Backup_RunningDB_LastError()
        Return $g_Backup_iErr
    EndFunc  ;==>_SQLite_Backup_RunningDB_LastError
    
    
    ;===================================================================================================
    ; Function Name....: _SQLite_ErrCodeLiteral
    ; Description......: Returns the passed SQLite error code as corresponding literal
    ; Parameter(s).....: $_iErrCode  The SQLite error code
    ; Return Value(s)..: The corresponding literal
    ;===================================================================================================
    Func _SQLite_ErrCodeLiteral($_iErrCode)
        If $_iErrCode < 0 Or $_iErrCode > 101 Then Return "WRONG_OR_EXTENDED_ERROR_CODE"
        Local Static $aErrCodes[102] = ["$SQLITE_OK",        "$SQLITE_ERROR", _
                    "$SQLITE_INTERNAL", "$SQLITE_PERM" ,     "$SQLITE_ABORT", _
                    "$SQLITE_BUSY",     "$SQLITE_LOCKED",    "$SQLITE_NOMEM", _
                    "$SQLITE_READONLY", "$SQLITE_INTERRUPT", "$SQLITE_IOERR", _
                    "$SQLITE_CORRUPT",  "$SQLITE_NOTFOUND",  "$SQLITE_FULL", _
                    "$SQLITE_CANTOPEN", "$SQLITE_PROTOCOL",  "$SQLITE_EMPTY", _
                    "$SQLITE_SCHEMA",   "$SQLITE_TOOBIG",    "$SQLITE_CONSTRAINT", _
                    "$SQLITE_MISMATCH", "$SQLITE_MISUSE",    "$SQLITE_NOLFS", _
                    "$SQLITE_AUTH",     "$SQLITE_FORMAT",    "$SQLITE_RANGE", _
                    "$SQLITE_NOTADB",   "$SQLITE_NOTICE",    "$SQLITE_WARNING"]
        $aErrCodes[100] = "$SQLITE_ROW"
        $aErrCodes[101] = "$SQLITE_DONE"
        Return $aErrCodes[$_iErrCode]
    EndFunc  ;==>_SQLite_ErrCodeLiteral
    
    
    ;===================================================================================================
    ; Function Name....: _SQLite_Backup_Init
    ; Description......: Initialises a sqlite3_backup object
    ; Parameter(s).....: $_pTo            Database Connection Handle associated with the destination database.
    ; .................: $_NameToDB        Database Name associated with the destination database. ("main", "temp" or AS-name from ATTACH statement)
    ; .................: $_pFrom        Database Connection Handle associated with the source database.
    ; .................: $_NameFromDB    Database Name associated with the source database. ("main", "temp" or AS-name from ATTACH statement)
    ; Return Value(s)..: Success        The sqlite3_backup object if SQLITE_OK, otherwise null. @error=SQLITE_err_code (Dll call was successfull, the init operation may still have failed)
    ; .................: Failure        0, @errror=error from dll call
    ;===================================================================================================
    Func _SQLite_Backup_Init($_pTo, $_NameToDB, $_pFrom, $_NameFromDB)
        Local $aRet = DllCall($__g_hDll_SQLite, "int:cdecl", "sqlite3_backup_init", _
                "ptr", $_pTo, _
                "str", $_NameToDB, _
                "ptr", $_pFrom, _
                "str", $_NameFromDB)
        Local $iErr = @error
        If $iErr Then
            Return SetError($iErr,0,0)
        Else
            Return SetError(_SQLite_ErrCode($_pTo),0,$aRet[0])
        EndIf
    EndFunc  ;==>_SQLite_Backup_Init
    
    
    ;===================================================================================================
    ; Function Name....: _SQLite_Backup_Step
    ; Description......: Copy up to N pages between the source and destination databases specified by sqlite3_backup object
    ; Parameter(s).....: $_pBackup  The sqlite3_backup object (result from _SQLite_Backup_Init).
    ; .................: $_nPages   Number of pages to be copied. "-1" (default) copies all at once.
    ; Return Value(s)..: Success    The SQLite error code (Dll call was successfull, the step operation may still have failed)
    ; .................:            SQLITE_OK         - successfully copies N pages and there are still more pages to be copied
    ; .................:            SQLITE_DONE     - successfully finishes copying all pages from source to destination
    ; .................:            SQLITE_err_code - If an error occurs while running _SQLite_Backup_Step
    ; .................:            As well as SQLITE_OK and SQLITE_DONE, a call to _SQLite_Backup_Step() may return
    ; .................:            SQLITE_READONLY, SQLITE_NOMEM, SQLITE_BUSY, SQLITE_LOCKED, or an SQLITE_IOERR_XXX extended error code.
    ; .................: Failure    $SQLITE_ERROR, @error=error from dll call
    ;===================================================================================================
    Func _SQLite_Backup_Step($_pBackup, $_nPages=-1)
        Local $aRet = DllCall($__g_hDll_SQLite, "int:cdecl", "sqlite3_backup_step", _
                "ptr", $_pBackup, _
                "int", $_nPages)
        Local $iErr = @error
        If $iErr Then
            Return SetError($iErr,0,$SQLITE_ERROR)
        Else
            Return $aRet[0]
        EndIf
    EndFunc  ;==>_SQLite_Backup_Step
    
    
    ;===================================================================================================
    ; Function Name....: _SQLite_Backup_Remaining
    ; Description......: Returns the number of pages still to be backed up at the conclusion of the most
    ; .................: recent _SQLite_Backup_Step(). The value is updated each time _SQLite_Backup_Step() is called.
    ; Parameter(s).....: $_pBackup  The sqlite3_backup object (result from _SQLite_Backup_Init).
    ; Return Value(s)..: Success    Number of pages
    ; .................: Failure    $SQLITE_ERROR, @error=error from dll call
    ;===================================================================================================
    Func _SQLite_Backup_Remaining($_pBackup)
        Local $aRet = DllCall($__g_hDll_SQLite, "int:cdecl", "sqlite3_backup_remaining", _
                "ptr", $_pBackup)
        Local $iErr = @error
        If $iErr Then
            Return SetError($iErr,0,$SQLITE_ERROR)
        Else
            Return $aRet[0]
        EndIf
    EndFunc  ;==>_SQLite_Backup_Remaining
    
    
    ;===================================================================================================
    ; Function Name....: _SQLite_Backup_Pagecount
    ; Description......: Returns the total number of pages in the source database at the conclusion of the most
    ; .................: recent _SQLite_Backup_Step(). The value is updated each time _SQLite_Backup_Step() is called.
    ; Parameter(s).....: $_pBackup  The sqlite3_backup object (result from _SQLite_Backup_Init).
    ; Return Value(s)..: Success    Number of pages
    ; .................: Failure    $SQLITE_ERROR, @error=error from dll call
    ;===================================================================================================
    Func _SQLite_Backup_Pagecount($_pBackup)
        Local $aRet = DllCall($__g_hDll_SQLite, "int:cdecl", "sqlite3_backup_pagecount", _
                "ptr", $_pBackup)
        Local $iErr = @error
        If $iErr Then
            Return SetError($iErr,0,$SQLITE_ERROR)
        Else
            Return $aRet[0]
        EndIf
    EndFunc  ;==>_SQLite_Backup_Pagecount
    
    
    ;===================================================================================================
    ; Function Name....: _SQLite_Backup_Finish
    ; Description......: Releases all resources associated with the sqlite3_backup object
    ; Parameter(s).....: $_pBackup  The sqlite3_backup object (result from _SQLite_Backup_Init).
    ; Return Value(s)..: Success    The SQLite error code (Dll call was successfull, the finish operation may still have failed)
    ; .................: Failure    $SQLITE_ERROR, @error=error from dll call
    ;===================================================================================================
    Func _SQLite_Backup_Finish($_pBackup)
        Local $aRet = DllCall($__g_hDll_SQLite, "int:cdecl", "sqlite3_backup_finish", _
                "ptr", $_pBackup)
        Local $iErr = @error
        If $iErr Then
            Return SetError($iErr,0,$SQLITE_ERROR)
        Else
            Return $aRet[0]
        EndIf
    EndFunc  ;==>_SQLite_Backup_Finish
    Alles anzeigen
    AutoIt: SQLite_Backup_Example.au3
    #include 'SQLite_Backup.au3'
    
    ; min. required: version 3.7.4
    _SQLite_Startup(@ScriptDir & "\sqlite3.dll", False, 1)
    
    ; Modify the pathes for your SQLite database files!
    ; "germandict.db" - Erstellung s. hier: https://autoit.de/thread/85897-sqlite-m%C3%B6glichkeit-abfrage-beschleunigen/?postID=704374#post704374
    Global $g_sDBFile = @ScriptDir & "\germandict.db"
    Global $g_sDBFileCopy = @ScriptDir & "\germandict_copy_running.db" ; Target file: _Example_Backup_RunningDB()
    
    ; Function: _SQLite_Backup_LoadOrSaveDB
    ; ByRef parameter, must be declared (no preassignment required for: File -> Memory)
    Global $g_hDBMem
    
    ConsoleWrite('LOAD FILE TO MEMORY' & @CRLF)
    _Example_LoadFileToMemory()
    
    ConsoleWrite('SAVE MEMORY TO FILE' & @CRLF)
    _Example_SaveMemoryToFile()
    _SQLite_Close($g_hDBMem)
    
    ConsoleWrite('BACKUP RUNNING DB' & @CRLF)
    _Example_Backup_RunningDB()
    
    
    _SQLite_Shutdown()
    
    
    
    
    Func _Example_LoadFileToMemory()
    
        Local $Timer = TimerInit()
    
        ; Since $g_hDBMem is not a database pointer, a memory database is automatically created.
        ; This also results in the copy direction: file to memory.
        Local $iResult = _SQLite_Backup_LoadOrSaveDB($g_sDBFile, $g_hDBMem)
    #cs
        If you do not use the standard scheme names (To: 'main', From: 'main'), you can pass them as optional parameters.
        Local $iResult = _SQLite_Backup_LoadOrSaveDB($g_sDBFile, $g_hDBMem, 'temp MYCOPY')
    #ce
        If $iResult = $SQLITE_OK Then
            ConsoleWrite('COPY-TIME File -> Memory: ' & StringFormat('%.1f s', TimerDiff($Timer)/1000) & ' ' & _SQLite_ErrCodeLiteral($iResult) & @CRLF & @CRLF)
        Else
            ConsoleWrite('ERROR: ' & _SQLite_ErrCodeLiteral($iResult) & @CRLF & @CRLF)
        EndIf
    
    EndFunc  ;==>_Example_LoadFileToMemory
    
    
    Func _Example_SaveMemoryToFile()
    
        Local $Timer = TimerInit()
    
        ; $g_hDBMem is now a database pointer (created and filled by _Example_LoadFileToMemory() )
        ; This also results in the copy direction: memory to file.
        Local $iResult = _SQLite_Backup_LoadOrSaveDB($g_sDBFile, $g_hDBMem)
    #cs
        If you do not use the standard scheme names (To: 'main', From: 'main'), you can pass them as optional parameters.
        Local $iResult = _SQLite_Backup_LoadOrSaveDB($g_sDBFile, $g_hDBMem, 'temp MYCOPY')
    #ce
        If $iResult = $SQLITE_OK Then
            ConsoleWrite('COPY-TIME Memory -> File: ' & StringFormat('%.1f s', TimerDiff($Timer)/1000) & ' ' & _SQLite_ErrCodeLiteral($iResult) & @CRLF & @CRLF)
        Else
            ConsoleWrite('ERROR: ' & _SQLite_ErrCodeLiteral($iResult) & @CRLF & @CRLF)
        EndIf
    
    EndFunc  ;==>_Example_SaveMemoryToFile
    
    
    Func _Example_Backup_RunningDB()
    
        Local $hDB = _SQLite_Open($g_sDBFile)
    
        ; Parameter: Handle running DB, Path backup file, [optional] progress function, [optional] string scheme names, [optional] max. number progress steps
        _SQLite_Backup_RunningDB($hDB, $g_sDBFileCopy, _progress, '', 100)
    
        Local $Timer = TimerInit(), $iStatus
        While True
            Sleep(20)
            $iStatus = _SQLite_Backup_RunningDB_Status()
            ConsoleWrite('TIMER: ' & StringFormat('%.2f', TimerDiff($Timer)/1000)  & ' BACKUP-STATUS: ' & ($iStatus ? '$SQLITE_BACKUP_RUNNING' : '$SQLITE_BACKUP_NOTRUNNING') & @CRLF)
            If Not $iStatus Then
                ConsoleWrite('FINISHED, LAST_ERROR: ' & _SQLite_ErrCodeLiteral(_SQLite_Backup_RunningDB_LastError()) & @CRLF)
                ExitLoop
            EndIf
        WEnd
    
        _SQLite_Close($hDB)
    
    EndFunc  ;==>_Example_Backup_RunningDB
    
    
    Func _progress($r, $p) ; $r=remaining-pages, $p=page-count
        ConsoleWrite('Completion: ' & StringFormat('%.1f %%', (100 * ($p - $r) / $p))  & @CRLF)
    EndFunc  ;==>_progress
    Alles anzeigen

    Dateien

    SQLite_Backup.au3 19,49 kB – 530 Downloads SQLite_Backup_Example.au3 3,47 kB – 564 Downloads
  • Corona - endlich impfen

    • BugFix
    • 10. August 2021 um 21:26
    Zitat von Andy

    Wobei gefühlt die Impfbefürworter in der Minderheit sind....

    Bei uns glücklicherweise 90% pro Impfung. Zumal die Mitarbeiter im AD eh keine andere Meinung hätten haben können - dann wäre es für sie unmöglich geworden ihren Job weiter auszuüben. Aber der Konflikt ist ja nicht entstanden, da wirklich alle AD'ler wollten.

  • Problem beim Schließen eines Programms

    • BugFix
    • 10. August 2021 um 17:06

    Es wäre vielleicht sinnvoll einen Link zu dem Programm anzubieten.

  • SQLite - Möglichkeit Abfrage beschleunigen?

    • BugFix
    • 10. August 2021 um 16:09
    Zitat von BugFix

    Ich erstelle beim Skriptstart eine leere :memory: DB und binde die Wort-DB mit ATTACH an. Dann schaufele ich die Daten in die memory-DB (ca. 1,5 s).

    So, mit neuen Funktionen in der sqlite3.dll kann man das deutlich beschleunigen: Jetzt nur noch 0,1 Sekunden!!

    Statt mit INSERT die DS rüberzuschaufeln kann man jetzt die "sqlite3_backup_..." Funktionen nutzen. Da in der SQLite.au3 noch nicht enthalten, habe ich diese mal erstellt.

    Das Abfangen der Return-SQL-Codes aus der Init-Funktion ist mir nicht klar. Aber bei sauber übergebenen Parametern ist das ohne Problem.  Gelöst, s. hier.

    Hier die Anwendung mit der "germandict.db":

    AutoIt
    #include <SQLite.au3>
    
    _SQLite_Startup(@ScriptDir & "\sqlite3.dll", False, 1)
    
    ; source
    Global $sDBFile = @ScriptDir & "\germandict.db"
    ; destination
    Global $hDBMem = -1  ; -1=kopiert aus Datei in Memory-DB
    
    Global $Timer = TimerInit()
    _SQLite_Backup_LoadOrSaveDB($sDBFile, $hDBMem) ; kopiert aus Datei in Memory
    ConsoleWrite('Kopierzeit File -> Memory: ' & StringFormat('%.1f s', TimerDiff($Timer)/1000) & @CRLF)
    
    ;~ ; Test_1 - SELECT aus Memory-DB (alle Wörter, die mit "aus" beginnen)
    ConsoleWrite(__SelectFromWord($hDBMem, "SELECT word FROM dictionary WHERE word LIKE 'aus%';")  & @CRLF)
    
    ; Test_2 - Rückschreiben aus Menmory-DB in neue DB-Datei
    $Timer = TimerInit()
    _SQLite_Backup_LoadOrSaveDB(@ScriptDir & "\germandict_copy.db", $hDBMem) ; kopiert aus Memory in Datei, da $hDBMem jetzt ungleich -1
    ConsoleWrite('Kopierzeit Memory -> File: ' & StringFormat('%.1f s', TimerDiff($Timer)/1000) & @CRLF)
    
    _SQLite_Shutdown()
    
    
    Func __SelectFromWord($_hSQL, $_sSQL, $_sDelim=@CRLF)
        Local $aQuery, $hQuery, $sResult = '', $nRes = 0
        _SQlite_Query($_hSQL, $_sSQL, $hQuery)
        While _SQLite_FetchData($hQuery, $aQuery, False, False) = $SQLITE_OK
            $sResult &= $aQuery[0] & $_sDelim
            $nRes += 1
        WEnd
        _SQLite_QueryFinalize($hQuery)
        $sResult = $nRes > 0 ? StringTrimRight($sResult, StringLen($_sDelim)) : $sResult
        Return SetError(0,$nRes,$sResult)
    EndFunc
    
    
    Func _SQLite_Backup_LoadOrSaveDB($_FileDB, ByRef $_MemDB) ; default ($_MemDB mit -1 übergeben): save from file to memory
        Local $pFile = _SQLite_Open($_FileDB)
        If @error Then Return SetError(@error,0,0)
        Local $bSaveToFile = True, $iRet, $pBackup, $pTo, $pFrom
        If $_MemDB = -1 Then
            $bSaveToFile = False
            $_MemDB = _SQLite_Open()
        EndIf
        $pFrom = $bSaveToFile ? $_MemDB : $pFile
        $pTo = $bSaveToFile ? $pFile : $_MemDB
        $pBackup = _SQLite_Backup_Init($pTo, "main", $pFrom, "main")
        If @extended = $SQLITE_OK Then
            _SQLite_Backup_Step($pBackup)
            _SQLite_Backup_Finish($pBackup)
            $iRet = _SQLite_ErrCode()
        Else
            Return SetError(1,@extended,0)
        EndIf
        _SQLite_Close($pFile)
        Return $iRet
    EndFunc
    
    
    Func _SQLite_Backup_Init($_pTo, $_NameToDB, $_pFrom, $_NameFromDB)
        Local $aRet = DllCall($__g_hDll_SQLite, "int:cdecl", "sqlite3_backup_init", _
                "ptr", $_pTo, _         ; Database Connection Handle associated with the destination database.
                "str", $_NameToDB, _     ; Database Name associated with the destination database. ("main", "temp" or AS-name from ATTACH statement)
                "ptr", $_pFrom, _         ; Database Connection Handle associated with the source database.
                "str", $_NameFromDB)     ; Database Name associated with the source database. ("main", "temp" or AS-name from ATTACH statement)
        If Not @error Then
            Return SetError(0,$SQLITE_OK,$aRet[0])             ; The sqlite3_backup object
        Else
            Return SetError(1,0,$SQLITE_ERROR)
        EndIf
    EndFunc
    
    
    Func _SQLite_Backup_Step($_pBackup, $_nPages=-1)
        Local $aRet = DllCall($__g_hDll_SQLite, "int:cdecl", "sqlite3_backup_step", _
                "ptr", $_pBackup, _        ; The sqlite3_backup object
                "int", $_nPages)        ; Number of pages to be copied.
        If Not @error Then
            If $aRet[0] <> $SQLITE_DONE Or $aRet[0] <> $SQLITE_OK Then Return SetError(1,0,$aRet[0])
            Return $aRet[0]
        Else
            Return SetError(1,0,$SQLITE_ERROR)
        EndIf
    EndFunc
    
    
    Func _SQLite_Backup_Finish($_pBackup)
        Local $aRet = DllCall($__g_hDll_SQLite, "int:cdecl", "sqlite3_backup_finish", _
                "ptr", $_pBackup)        ; The sqlite3_backup object
        If Not @error Then
            Return $aRet[0]
        Else
            Return SetError(1,0,$SQLITE_ERROR)
        EndIf
    EndFunc
    Alles anzeigen
  • Corona - endlich impfen

    • BugFix
    • 10. August 2021 um 11:41

    Es ist für mich als gebürtiger Ostler immer wieder befremdlich, die sehr kruden Argumentationen vieler Westler zu hören.

    Einerseits wird es als NoGo betrachtet, dass der Staat sich in die Belange des Bürgers einschaltet und ihm eventuell sogar VORSCHRIFTEN macht - ist ja ein absolutes Unding!!

    Andererseits wird sofort nach Vater Staat geschrien, wenn die eigene Wohlfühlzone in Gefahr scheint, durch:

    - Ausländer - igittigitt, die nehmen unsere Jobs weg, vergewaltigen unsere Frauen, greifen nur Sozialleistungen ab und tun nix, unterwandern unsere schöne deutsche Kultur! :Face:

    - Kriminalität - warum machen DIE da oben nix dagegen

    - Arbeit - Ich als Deutscher muss ja wohl nicht für irgend einen Mindestlohn rackern, Der Staat soll man schön seine Hartz 4 -Hängematte aufspannen und mich in Watte packen.

    - Freiheit - Ich ALLEINE bestimme was Freiheit ist und andere Menschen gehen mir sowieso am Arsch vorbei. Sozial sollen gefälligst die anderen mit mir sein. Wenn ich als bekennender Aluhut-Träger mich nicht impfen lassen will, sollen sich die anderen Spacken gefälligst impfen, damit ich nicht krank werde.

    Könnte man stundenlang fortführen.

    Für mich ist ganz klar:

    Wer sich nicht impfen lässt, obwohl aus seiner gesundheitlichen Konstitution nichts dagegen spricht, derjenige gefährdet wissentlich Leben und Gesundheit von Menschen, für die eine Impfung nicht möglich ist. Und das ist meiner Meinung nach hochgradig asoziales Verhalten.

    Ich kann auch das Geeiere der Regierung nicht nachvollziehen, hier geht es nicht um Schnupfen, sondern um eine lebensbedrohende Erkrankung: Impfpflicht - Punkt - Fertig!

  • SQLite - Möglichkeit Abfrage beschleunigen?

    • BugFix
    • 10. August 2021 um 10:45

    EDIT:

    Ich muss nochmal über das Skript drüberschauen. Aus irgendeinem Grund wurde die DB nicht gespeichert. Melde mich wenn korrigiert.

    Möglicherweise sind in der aktuellen Version (habe ich eben zum ersten mal genutzt) Änderungen in den internen Funktionen, die die SQLite.au3 nicht kennt. Mal durchgraben.

    EDIT 2:

    Fehler gefunden: UNBEDINGT die 32-bit Version verwenden.

    Zitat von Banana_2_Day

    Weißt Du noch, wie / mit welchem Programm Du damals die SQLite Datenbank erzeugt hast?

    Na mit AutoIt! :rofl:

    Habe das Skript zwar nicht mehr gehabt, aber schnell nochmal erstellt:

    AutoIt: FreeGermanDict_CreateDB.au3
    #include <File.au3>
    #include <SQLite.au3>
    
    
    ; ACHTUNG! Für die verwendete INSERT-Syntax ist mindestens die SQLite-Version 3.7.11 erforderlich!!!
    
    ; "sqlite3.dll" muss im Skriptordner liegen
    ; DL aktuelle DLL: "https://www.sqlite.org/download.html" Abschnitt: "Precompiled Binaries for Windows"
    _SQLite_Startup(@ScriptDir & "\sqlite3.dll", False, 1)   ; version 3.36.0
    
    
    ; HIER PFAD ANPASSEN - entpackter Ordner "german.7z"  (DL: https://sourceforge.net/projects/germandict/)
    Global $sPathGER = @ScriptDir & '\german_2021'
    
    ; Text-Dateien (außer "LiesMich.txt") aus diesem Ordner in Array einlesen
    ; Array Dimension ggf. vergrößern - Anzahl steht auf DL-Seite (z.Zt. > 2 Mio)
    Global $aWords[2500000], $iCount = 0
    
    
    ; Zeitmessung
    Global $Timer = TimerInit()
    
    ; Array mit den Textdateien
    Global $aTxtFiles = _FileListToArray($sPathGER, '*.*', 1)
    
    Global $aTxt
    For $i = 1 To $aTxtFiles[0]
        If $aTxtFiles[$i] = "LiesMich.txt" Or _
           (Not StringInStr('.txt .dic', StringRight($aTxtFiles[$i], 4))) Then ContinueLoop
    
        ConsoleWrite('READING FILE: ' & $sPathGER & '\' & $aTxtFiles[$i] & @CRLF)
        $aTxt = FileReadToArray($sPathGER & '\' & $aTxtFiles[$i])
        For $j = 0 To UBound($aTxt) -1
            If $aTxt[$j] = '' Then ContinueLoop  ; evtl. Leerzeile abfangen
            $aWords[$iCount] = $aTxt[$j]
            $iCount += 1
        Next
    Next
    ReDim $aWords[$iCount]
    
    ConsoleWrite('FERTIG - Array, Anzahl: ' & $iCount & @CRLF)
    
    ; SQLite-DB erstellen
    Global $hSQL = _SQLite_Open(@ScriptDir & '\germandict.db')
    
    ; DB-Tabelle erstellen - hat nur ein Feld: word
    _SQLite_Exec($hSQL, 'CREATE TABLE dictionary (word TEXT);')
    
    ConsoleWrite('BEFÜLLEN SQLite-Table' & @CRLF)
    ; alle Item aus $aWords in die DB-Tabelle übertragen
    ; INSERT-Strings erstellen und einmalig ausführen (einzelner INSERT ist nicht möglich - Datenmenge zu groß)
    ; SQLITE_MAX_SQL_LENGTH = 1.000.000 bytes - ich prüfe auf > 900.000
    Global $currIndex = 0, $iLen = 0, $sSQL, $sEndChar
    
    While $currIndex < UBound($aWords) -1
        $sSQL = 'INSERT INTO dictionary (word) VALUES '
        For $i = $currIndex To UBound($aWords) -1
            $iLen += StringLen('("' & $aWords[$i] & '"),')
            $sEndChar = ($i = UBound($aWords) -1 Or $iLen > 900000) ? ';' : ','
            $sSQL &= '("' & $aWords[$i] & '")' & $sEndChar
            If $sEndChar = ';' Then
                $currIndex = $i +1
                $iLen = 0
                _SQLite_Exec($hSQL, 'BEGIN TRANSACTION;' & $sSQL & 'COMMIT;')
                ExitLoop
            EndIf
        Next
    WEnd
    
    _SQLite_Shutdown()
    
    ConsoleWrite('FERTIG - germandict.db, Dauer Erstellung: ' & StringFormat('%.1f s', TimerDiff($Timer)/1000) & @CRLF)
    Alles anzeigen

    Bei mir auf dem Laptop hat es rund 30 Sekunden gebraucht.

  • Beschreibung von Punkten und ihren Kanten zu anderen Punkten

    • BugFix
    • 9. August 2021 um 18:02

    [OT]

    WAS ist Kantenberechnung ?

    Den Begriff habe ich (zumindest im Zusammenhang von irgendwelchen Variationen, Kombinationen, Abhängigkeiten) noch nie gehört. Kann ja auch sein dass das irgendwie an mir vorbei gewabert ist. ;)

    Oder ist das eine regionale Sprachbesonderheit?

    [/OT]

  • SQLite - Möglichkeit Abfrage beschleunigen?

    • BugFix
    • 7. August 2021 um 10:10
    Zitat von Banana_2_Day

    Kannst Du die Datei bitte erneut hochladen?

    Ich nehme an, du meinst die db-Datei. Hier: https://we.tl/t-eFzg2ifUxQ

  • Textdatei Datenbank Zeilenumbruch

    • BugFix
    • 2. August 2021 um 19:18

    Was ist eine Leerzeile?

    @CRLF@CRLF

    Beachte die Parameter bei Stringsplit, dann kannst du daran splitten.

  • AutoIt gibt Komma Zahlen die er von Excel ausliest immer mit Punkt staat Komma ein

    • BugFix
    • 31. Juli 2021 um 22:51

    An deinem Code ist nichts erkennbar, was mit deinem Problem zu tun hat. Also stell bitte ein kurzes lauffähiges! Bsp. ein, in dem dein Problem nachvollziehbar ist.

    Im Übrigen ist "4,66" eine Formatierung in Excel, du kannst ebenso "4.66" verwenden, wie im englischen Sprachraum üblich. Wenn AutoIt mit solchen Zahlen arbeiten soll, müssen sie in der Form sein, die AutoIt versteht - also: 4.66

  • Kombinatorik UDF ArrayCombinations - Verschiedene Möglichkeiten der Zusammenstellung von Elementen einer Menge

    • BugFix
    • 28. Juli 2021 um 15:41

    Kombinatorik und Rationale Zahlen waren zwar in meinem fakultativen Mathe-Unterricht (heute nennt sich das wohl Leistungskurs) enthalten. Ich konnte zwar damit umgehen, mich aber nicht wirklich für begeistern. Insofern ist diese UDF eine echte Bereicherung für den Fall, dass man mal was "kombinieren" muss. :P

    Danke AspirinJunkie dafür.

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™