Progressbar anzeigen solang ein Prozess abläuft ..

  • Hallo,

    ich hab in meiner Anwendung eine Funktion geschrieben! Kann ich die Progressbar so darum bauen, dass die solange angezeigt wird, die die Funktion dauert? Einen Timer angeben ergibt ja keinen Sinn, weil die Funktion auf einem "langsameren" Rechner laenger braucht, als auf einen schnelleren ..

    Gruß

  • Das ganze Skript besteht aus mehreren Dateien, die includet werden. Die Funktion im ganzen macht nichts anderes als Daten, die sie vorher gesammelt hat in eine MySQL-DB zu speichern

    func funktion()
    speichere_daten_in_mysql_db
    EndFunc

    Und die Zeit soll irgendwie mit einer Progressbar angezeigt werden!

  • Wenn du mehrere SQL-Aufrufe machst, kannst du die Zeit errechnen anhand der Aufrufe. Ansonsten könntem an der Progressbar noch den MARQUEE style geben, dann lädt sie immer komplett durch und man sieht, das das Programm arbeitet. Allerdings hast du dann keine Zeitlichen Angaben. Poste mal den SQL part, dann kann man da evtl. was daraus schließen.

  • nachdem man wohl kaum im voraus sagen kann, wie lange so ein SQL-Aufruf dauern wird,
    würde ich in dem Fall die Anzahl der Aufrufe als Teiler hernehmen.

    Ist vielleicht nicht "flüssig", aber effektiv ;)

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Spoiler anzeigen
    [autoit]

    ; ------------------------------------------------------------------------------ [autoit]; ------------------------------------------------------------------------------
    ; Hauptprogramm
    ; ------------------------------------------------------------------------------
    func _insertToSQL()
    Local $lfdnr

    [/autoit] [autoit][/autoit] [autoit]

    $fsql = sqlconnect($mysql_host,$mysql_dbname,$mysql_login,$mysql_pass)

    [/autoit] [autoit][/autoit] [autoit]

    $select = "SELECT lfdnr FROM daten_system WHERE hostname='" & $v_hostname & "'"

    [/autoit] [autoit][/autoit] [autoit]

    _MySQL_Real_Query($fsql, $select)
    $res = _MySQL_Store_Result($fsql)
    $fields = _MySQL_Num_Fields($res)
    $rows = _MySQL_Num_Rows($res)
    Local $mysql[$rows+1][$fields+1]
    For $k = 1 To $rows

    [/autoit] [autoit][/autoit] [autoit]

    $mysqlrow = _MySQL_Fetch_Row($res,$fields)
    $lenthsStruct = _MySQL_Fetch_Lengths($res)
    For $i = 1 To $fields
    $length = DllStructGetData($lenthsStruct, 1, $i)
    $fieldPtr = DllStructGetData($mysqlrow, 1, $i)
    $data = DllStructGetData(DllStructCreate("char[" & $length & "]", $fieldPtr), 1)
    $mysql[$k][$i] = $data
    Next

    [/autoit] [autoit][/autoit] [autoit]

    Next

    [/autoit] [autoit][/autoit] [autoit]

    $lfdnr = ""

    [/autoit] [autoit][/autoit] [autoit]

    ; Schreibe Systemdaten in SQL-Datenbank
    if $rows <> 0 Then
    $lfdnr = $mysql[1][1]
    $insert = "UPDATE daten_system SET hostname='" & $v_hostname & "', arbeitsspeicher_frei='" & $v_arbeitsspeicher_frei & "', mainboard='" & $v_mainboard & "', teamviewerid='" & $v_teamviewer & "', proxy='" & $v_proxy & "', wsid='" & $v_wsid & "', anmeldename='" & $v_anmeldename & "', benutzerprofil='" & $v_benutzerprofil & "', standort='" & $v_standort & "', arbeitsspeicher='" & $v_arbeitsspeicher & "', cpu='" & $v_cpu & "', aufloesung='" & $v_aufloesung & "', systemlaufwerk_name='" & $v_systemlaufwerk_name & "', systemlaufwerk_frei='" & $v_systemlaufwerk_frei & "', systemlaufwerk_gesamt='" & $v_systemlaufwerk_gesamt & "', os='" & $v_os & "', os_servicepack='" & $v_os_servicepack & "', os_architektur='" & $v_os_architektur & "', os_sn='" & $v_os_sn & "', os_inst_date='" & $v_os_inst_date & "', os_letzter_start='" & $v_os_letzter_start & "', seriennummer='" & $v_seriennummer & "', aktualisierungsstempel='" & $v_aktualisierungsstempel & "' WHERE hostname='" & $v_hostname & "'"
    Else
    $insert = "INSERT INTO daten_system SET hostname='" & $v_hostname & "', arbeitsspeicher_frei='" & $v_arbeitsspeicher_frei & "', mainboard='" & $v_mainboard & "', teamviewerid='" & $v_teamviewer & "', proxy='" & $v_proxy & "', wsid='" & $v_wsid & "', anmeldename='" & $v_anmeldename & "', benutzerprofil='" & $v_benutzerprofil & "', standort='" & $v_standort & "', arbeitsspeicher='" & $v_arbeitsspeicher & "', cpu='" & $v_cpu & "', aufloesung='" & $v_aufloesung & "', systemlaufwerk_name='" & $v_systemlaufwerk_name & "', systemlaufwerk_frei='" & $v_systemlaufwerk_frei & "', systemlaufwerk_gesamt='" & $v_systemlaufwerk_gesamt & "', os='" & $v_os & "', os_servicepack='" & $v_os_servicepack & "', os_architektur='" & $v_os_architektur & "', os_sn='" & $v_os_sn & "', os_inst_date='" & $v_os_inst_date & "', os_letzter_start='" & $v_os_letzter_start & "', seriennummer='" & $v_seriennummer & "', aktualisierungsstempel='" & $v_aktualisierungsstempel & "'"
    EndIf
    if $debug = "1" Then
    _writelog($insert)
    EndIf
    _MySQL_Real_Query($fsql, $insert)
    $res = _MySQL_Store_Result($fsql)
    $select = "SELECT lfdnr FROM daten_system WHERE hostname='" & $v_hostname & "'"

    [/autoit] [autoit][/autoit] [autoit]

    _MySQL_Real_Query($fsql, $select)
    $res = _MySQL_Store_Result($fsql)
    $fields = _MySQL_Num_Fields($res)
    $rows = _MySQL_Num_Rows($res)
    Local $mysql[$rows+1][$fields+1]
    For $k = 1 To $rows

    [/autoit] [autoit][/autoit] [autoit]

    $mysqlrow = _MySQL_Fetch_Row($res,$fields)
    $lenthsStruct = _MySQL_Fetch_Lengths($res)
    For $i = 1 To $fields
    $length = DllStructGetData($lenthsStruct, 1, $i)
    $fieldPtr = DllStructGetData($mysqlrow, 1, $i)
    $data = DllStructGetData(DllStructCreate("char[" & $length & "]", $fieldPtr), 1)
    $mysql[$k][$i] = $data
    Next

    [/autoit] [autoit][/autoit] [autoit]

    Next
    $lfdnr = $mysql[1][1]

    [/autoit] [autoit][/autoit] [autoit]

    ; Lösche alle Netzwerkkdaten aus SQL-Datenbank
    if $lfdnr <> "" Then
    $delete = "DELETE FROM daten_netzwerkeinstellungen WHERE system_nummer='" & $lfdnr & "'"
    if $debug = "1" Then
    _writelog($delete)
    EndIf
    _MySQL_Real_Query($fsql, $delete)
    $res = _MySQL_Store_Result($fsql)
    EndIf
    ; Schreibe alle Netzwerkkdaten in SQL-Datenbank
    $insert = "INSERT INTO daten_netzwerkeinstellungen SET system_nummer='" & $lfdnr & "'"
    if $debug = "1" Then
    _writelog($insert)
    EndIf
    _MySQL_Real_Query($fsql, $insert)
    $res = _MySQL_Store_Result($fsql)

    [/autoit] [autoit][/autoit] [autoit]

    ; Lösche alle Softwaredaten aus SQL-Datenbank
    if $lfdnr <> "" Then
    $delete = "DELETE FROM daten_software WHERE system_nummer='" & $lfdnr & "'"
    if $debug = "1" Then
    _writelog($delete)
    EndIf
    _MySQL_Real_Query($fsql, $delete)
    $res = _MySQL_Store_Result($fsql)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ; Schreibe alle Softwaredaten in SQL-Datenbank
    for $i = 1 to $re[0][0]
    if $re[$i][0] <> "" Then
    $insert = "INSERT INTO daten_software SET system_nummer='" & $lfdnr & "', sw_name='" & $re[$i][0] & "', sw_version='" & $re[$i][1] & "', sw_uninstall='" & StringReplace($re[$i][3], "\", "\\") & "', automatisch='" & "1" & "', aktualisierungsstempel='" & $stamp & "'"
    if $debug = "1" Then
    _writelog($insert)
    EndIf
    _MySQL_Real_Query($fsql, $insert)
    $res = _MySQL_Store_Result($fsql)
    Endif
    Next

    [/autoit] [autoit][/autoit] [autoit]

    ; Lösche alle Systemdrucker aus SQL-Datenbank
    if $lfdnr <> "" Then
    $delete = "DELETE FROM daten_systemdrucker WHERE system_nummer='" & $lfdnr & "'"
    if $debug = "1" Then
    _writelog($delete)
    EndIf
    _MySQL_Real_Query($fsql, $delete)
    $res = _MySQL_Store_Result($fsql)
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    ; Schreibe alle Systemdrucker in SQL-Datenbank
    for $prti = 1 to UBound($v_drucker) -1
    ;if UBound($v_drucker) <> "" Then
    $insert = "INSERT INTO daten_systemdrucker SET system_nummer='" & $lfdnr & "', aktualisierungsstempel='" & $stamp & "', automatisch='" & "1" & "', drucker_standort ='" & $v_drucker[$prti][3] & "', drucker_name='" & StringReplace($v_drucker[$prti][0], "\", "\\") & "', drucker_treiber='" & $v_drucker[$prti][1] & "', drucker_anschluss='" & $v_drucker[$prti][2] & "'"
    if $debug = "1" Then
    _writelog($insert)
    EndIf
    _MySQL_Real_Query($fsql, $insert)
    $res = _MySQL_Store_Result($fsql)
    ;Endif
    Next

    [/autoit] [autoit][/autoit] [autoit]

    $ziele_max = $rows
    sql_end()
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    _insertToSQL()

    [/autoit] [autoit][/autoit] [autoit][/autoit]

    Das ist der Code und um die SQL-Inserts/Deletes/Updates geht es!

    Gruß