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

Beiträge von Oscar

  • Happy Birthday Oscar

    • Oscar
    • 18. Januar 2012 um 23:18

    Vielen Dank für die guten Wünsche!

    Heute wurde/wird nicht viel gefeiert. Die Feier ist erst am Wochenende. :)

  • _arraysearch: RegExp?

    • Oscar
    • 18. Januar 2012 um 09:46

    Dafür hatte ich mir mal eine UDF archiviert: _ArrayNaturalSort.au3 (siehe Anhang)
    Hier ein Beispiel:

    [autoit]


    #include "_ArrayNaturalSort.au3"
    Global $aIPs[5] = ["127.0.0.1", "196.168.21.101", "196.168.20.101", "196.168.201.102", "89.123.34.123"]

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

    _ArrayNaturalSort($aIPs)
    _ArrayDisplay($aIPs)

    [/autoit]
  • Variablen auf Eingabe prüfen

    • Oscar
    • 17. Januar 2012 um 21:28

    1. Zahl:

    [autoit]


    $sNumber = '0001'
    If Not StringRegExp($sNumber, '\A\d{4}\Z') Then MsgBox(0, 'Test1', 'falsche Zahl')

    [/autoit]

    2. Zahl:

    [autoit]


    $sNumber = '0.1234567890123'
    If Not StringRegExp($sNumber, '\A0\.\d{13}\Z') Then MsgBox(0, 'Test2', 'falsche Zahl')

    [/autoit]
  • [C++] GDI+ - Zeichnen ohne WM_PAINT Message

    • Oscar
    • 17. Januar 2012 um 18:45

    [verschoben nach "Andere Programmiersprachen"]

  • Probeleme beim Netzwerkzugriff auf DB

    • Oscar
    • 17. Januar 2012 um 18:43

    Der Denkfehler besteht darin, dass meine "Datenbank" nie für einen Mehrbenutzerzugriff gedacht war. :D

    Im Ernst: Da musst Du Vorkehrungen treffen, damit die Speicherfunktion nicht zeitgleich ausgeführt wird. Das kannst Du z.B. dadurch machen, dass Du vor dem Speichern das Dateiattribut "O = offline" bei der Datenbankdatei setzt und danach wieder löschst. Also die Savefunktion umschreiben: Prüfen, ob Attribut "O" gesetzt ist, wenn ja, dann so lange warten bis es nicht mehr gesetzt ist. Wenn es dann nicht mehr gesetzt ist, muss erst die Ladefunktion aufgerufen werden, um die neuen Daten des anderen Benutzers einzulesen. Das heißt aber, dass auch die Ladefunktion geändert werden muss, weil ja die Änderungen, die man selbst gerade gemacht hat, nicht überschrieben werden sollen.

  • Wie Bildschirmausdruck in einem GUI anzeigen lassen ???

    • Oscar
    • 13. Januar 2012 um 09:56

    Wozu als Datei speichern?
    Es soll doch nur in der GUI angezeigt werden.

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <GDIPlus.au3>
    #include <ScreenCapture.au3>

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

    _Main()

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

    Func _Main()
    Local $hGUI, $hBMP, $hBitmap, $hGraphic
    $hBMP = _ScreenCapture_Capture("", 0, 0, @DesktopWidth, @DesktopHeight)

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

    ; Create GUI
    $hGUI = GUICreate("Screenshot", @DesktopWidth / 2, @DesktopHeight / 2)
    GUISetState()

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

    ; Initialize GDI+ library
    _GDIPlus_Startup()

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

    ; Draw bitmap to GUI
    $hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hBMP)
    $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
    _GDIPlus_GraphicsDrawImageRect($hGraphic, $hBitmap, 0, 0, @DesktopWidth / 2, @DesktopHeight / 2)

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

    ; Clean up resources
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_BitmapDispose($hBitmap)
    _WinAPI_DeleteObject($hBMP)

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

    ; Shut down GDI+ library
    _GDIPlus_Shutdown()

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

    ; Loop until user exits
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    EndFunc ;==>_Main

    [/autoit]
  • Zähler von For Schleife im Array verwenden

    • Oscar
    • 13. Januar 2012 um 05:00

    Das ist so nicht möglich. Es gibt zwar den Befehl "Eval" mit dem man Variablen zusammensetzen kann, aber damit kann man nicht auf die Arraywerte zugreifen.
    Also so:

    [autoit]


    Global $aList1[5] = [1, 2, 3, 4, 5]
    Global $aList2[8] = [1, 2, 3, 4, 5, 6, 7, 8]
    Global $aList3[12] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

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

    For $i = 1 To 3
    For $j = 0 To UBound(Eval('aList' & $i)) - 1
    ConsoleWrite('innerer Schleifenwert = ' & $j & @CR) ; <- hier kann man mit Eval nicht auf den Arraywert zugreifen
    Next
    Next

    [/autoit]

    Als Lösung würde ich ein 2D-Array verwenden:

    [autoit]


    Global $a2DList[3][12] = [[1, 2, 3, 4, 5, 0, 0, 0, 0, 0, 0, 0], [1, 2, 3, 4, 5, 6, 7, 8, 0, 0, 0, 0], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]]

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

    For $i = 0 To UBound($a2DList, 1) - 1
    For $j = 0 To UBound($a2DList, 2) - 1
    If $a2DList[$i][$j] <> 0 Then
    ConsoleWrite($a2DList[$i][$j] & @CR)
    EndIf
    Next
    Next

    [/autoit]
  • Run Problem

    • Oscar
    • 27. Dezember 2011 um 17:13

    Versuchs mal so:

    [autoit]

    $run = Run(FileGetShortName(@ScriptDir & "\FileManager\Uploader32.exe"), @ScriptDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)

    [/autoit]


    Vielleicht stören die Leerzeichen?!

  • Frohe Weihnachten

    • Oscar
    • 23. Dezember 2011 um 17:25

    Ich wünsche euch allen auch ein Frohes Weihnachtsfest. Werde wohl erst nach den Feiertagen wieder hier online sein.
    Bis dahin: Macht es euch gemütlich und genießt die Tage. :)

  • CPU und RAM Modell herausfinden

    • Oscar
    • 21. Dezember 2011 um 16:39

    Na gut, dann hier die anderen Funktionen:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    $aCPU = _CI_GetCPU()
    _ArrayDisplay($aCPU, 'Prozessor(en)')
    $aRAM = _CI_GetRAM()
    _ArrayDisplay($aRAM, 'Arbeitsspeicher')

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

    Func _CI_GetCPU($strComputer = '.')
    Local $aReturn[2][12] = [[ _
    'Prozessor:', 'Name:', 'Beschreibung:', 'Sockel:', 'Taktfrequenz:', 'Ext. Taktfrequenz:', 'Spannung:', _
    'Adress-Bitbreite:', 'Daten-Bitbreite:', 'Prozessor-ID:', '', '']]
    Local $x = 0, $objWMIService, $colItems
    $objWMIService = ObjGet('winmgmts:\\' & $strComputer & '\root\cimv2')
    If Not IsObj($objWMIService) Then Return SetError(1, 0, 0)
    $colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_Processor', 'WQL', 0x30)
    If IsObj($colItems) Then
    For $objItem In $colItems
    $x += 1
    ReDim $aReturn[$x + 1][12]
    $aReturn[$x][0] = $objItem.DeviceID
    $aReturn[$x][1] = $objItem.Name
    $aReturn[$x][2] = $objItem.Description
    $aReturn[$x][3] = $objItem.SocketDesignation
    $aReturn[$x][4] = $objItem.CurrentClockSpeed & ' MHz (max. ' & $objItem.MaxClockSpeed & ' MHz)'
    $aReturn[$x][5] = $objItem.ExtClock & ' MHz'
    $aReturn[$x][6] = Round($objItem.CurrentVoltage / 10, 1) & ' V'
    $aReturn[$x][7] = $objItem.AddressWidth & ' Bit'
    $aReturn[$x][8] = $objItem.DataWidth & ' Bit'
    $aReturn[$x][9] = $objItem.ProcessorId
    Switch @OSVersion
    Case 'WIN_VISTA', 'WIN_7'
    $aReturn[0][10] = 'Prozessorkerne:'
    $aReturn[0][11] = 'logische Prozessoren:'
    $aReturn[$x][10] = $objItem.NumberOfCores
    $aReturn[$x][11] = $objItem.NumberOfLogicalProcessors
    EndSwitch
    Next
    EndIf
    Return $aReturn
    EndFunc ;==>_CI_GetCPU

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

    Func _CI_GetRAM($strComputer = '.')
    Local $aMemType[22] = ['Unbekannt', 'Anderes', 'DRAM', 'Sync DRAM', 'Cache DRAM', _
    'EDO', 'EDRAM', 'VRAM', 'SRAM', 'RAM', 'ROM', _
    'Flash', 'EEPROM', 'FEPROM', 'EPROM', 'CDRAM', '3DRAM', _
    'SDRAM', 'SGRAM', 'RDRAM', 'DDR', 'DDR-2']
    Local $aFormFactor[24] = ['Unbekannt', 'Andere', 'SIP', 'DIP', 'ZIP', 'SOJ', _
    'Proprietär', 'SIMM', 'DIMM', 'TSOP', 'PGA', 'RIMM', _
    'SODIMM', 'SRIMM', 'SMD', 'SSMP', 'QFP', 'TQFP', _
    'SOIC', 'LCC', 'PLCC', 'BGA', 'FPBGA', 'LGA']
    Local $aErrCorr[8] = ['Reserviert', 'Andere', 'Unbekannt', 'Keine', 'Parity', 'Single-bit ECC', 'Multi-bit ECC', 'CRC']
    Local $aReturn[2][8] = [[ _
    'Belegung:', 'Kapazität:', 'Daten-Bitbreite:', 'Steckplatz:', _
    'Typ:', 'Format:', 'Fehlerkorrektur:', 'Bezeichnung:']]
    Local $x = 0, $objWMIService, $colItems, $iMemDev, $iMaxCap, $iErrCorr
    $objWMIService = ObjGet('winmgmts:\\' & $strComputer & '\root\cimv2')
    If Not IsObj($objWMIService) Then Return SetError(1, 0, 0)
    $colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_PhysicalMemoryArray', 'WQL', 0x30)
    If IsObj($colItems) Then
    For $objItem In $colItems
    $iMemDev = $objItem.MemoryDevices
    $iMaxCap = _ByteAutoSize($objItem.MaxCapacity * 1024, 0, 3)
    $iErrCorr = Number($objItem.MemoryErrorCorrection)
    Next
    EndIf
    $colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_PhysicalMemory', 'WQL', 0x30)
    If IsObj($colItems) Then
    For $objItem In $colItems
    $x += 1
    ReDim $aReturn[$x + 1][8]
    $aReturn[$x][0] = $objItem.BankLabel
    $aReturn[$x][1] = _ByteAutoSize($objItem.Capacity, 0, 3) & ' (max. ' & $iMaxCap & ')'
    $aReturn[$x][2] = $objItem.TotalWidth & ' Bit'
    $aReturn[$x][3] = $objItem.DeviceLocator & ' (max. ' & $iMemDev & ' Steckplätze)'
    $aReturn[$x][4] = $aMemType[Number($objItem.MemoryType)]
    $aReturn[$x][5] = $aFormFactor[Number($objItem.FormFactor)]
    $aReturn[$x][6] = $aErrCorr[$iErrCorr]
    $aReturn[$x][7] = $objItem.PartNumber
    Next
    EndIf
    Return $aReturn
    EndFunc ;==>_CI_GetRAM

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

    ;===============================================================================
    ; Function Name: _ByteAutoSize($iSize[, $iRound][, $iFormat][, $bThousands])
    ; Description:: Gibt einen Bytewert in einer bestimmten Einheit zurück
    ; Parameter(s): $iSize = Größe in Byte übergeben
    ; $iRound = Anzahl der Nachkommastellen (0...8)
    ; $iFormat = bestimmt den Rückgabewert
    ; 0 = Automatisch (je nach übergebenen Wert)
    ; 1 = in Byte
    ; 2 = in KByte
    ; 3 = in MByte
    ; 4 = in GByte
    ; $bThousands = Rückgabe mit Tausendertrennzeichen (True/False)
    ; Requirement(s): #include <String.au3>
    ; Author(s): Oscar (http://www.autoit.de)
    ;===============================================================================
    Func _ByteAutoSize($iSize, $iRound = 2, $iFormat = 0, $bThousands = True)
    Local $aSize[4] = [' Byte', ' KByte', ' MByte', ' GByte'], $sReturn
    If $iFormat < 0 Or $iFormat > 4 Then $iFormat = 0
    If $iRound < 0 Or $iRound > 8 Then $iRound = 2
    If Not IsBool($bThousands) Then $bThousands = False
    $iSize = Abs($iSize)
    If $iFormat = 0 Then
    For $i = 30 To 0 Step -10
    If $iSize > (2 ^ $i) Then
    $iFormat = $i / 10 + 1
    ExitLoop
    EndIf
    Next
    EndIf
    If $iFormat = 0 Then $iFormat = 1
    $sReturn = StringFormat('%.' & $iRound & 'f', Round($iSize / (2 ^ (($iFormat - 1) * 10)), $iRound))
    If $bThousands Then $sReturn = _StringAddThousandsSep($sReturn, '.', ',')
    Return $sReturn & $aSize[$iFormat - 1]
    EndFunc ;==>_ByteAutoSize

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

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _StringAddThousandsSep
    ; Description ...: Returns the original numbered string with the Thousands delimiter inserted.
    ; Syntax.........: _StringAddThousandsSep($sString[, $sThousands = -1[, $sDecimal = -1]])
    ; Parameters ....: $sString - The string to be converted.
    ; $sThousands - Optional: The Thousands delimiter
    ; $sDecimal - Optional: The decimal delimiter
    ; Return values .: Success - The string with Thousands delimiter added.
    ; Author ........: SmOke_N (orignal _StringAddComma
    ; Modified.......: Valik (complete re-write, new function name)
    ; ===============================================================================================================================
    Func _StringAddThousandsSep($sString, $sThousands = -1, $sDecimal = -1)
    Local $sResult = "" ; Force string
    Local $rKey = "HKCU\Control Panel\International"
    If $sDecimal = -1 Then $sDecimal = RegRead($rKey, "sDecimal")
    If $sThousands = -1 Then $sThousands = RegRead($rKey, "sThousand")
    Local $aNumber = StringRegExp($sString, "(\D?\d+)\D?(\d*)", 1) ; This one works for negatives.
    If UBound($aNumber) = 2 Then
    Local $sLeft = $aNumber[0]
    While StringLen($sLeft)
    $sResult = $sThousands & StringRight($sLeft, 3) & $sResult
    $sLeft = StringTrimRight($sLeft, 3)
    WEnd
    $sResult = StringTrimLeft($sResult, StringLen($sThousands)) ; Strip leading thousands separator
    If $aNumber[1] <> "" Then $sResult &= $sDecimal & $aNumber[1]
    EndIf
    Return $sResult
    EndFunc ;==>_StringAddThousandsSep

    [/autoit]
  • Grafikkarte herausfinden

    • Oscar
    • 21. Dezember 2011 um 16:34

    Hier die Funktionen zum erkennen der Grafikkarte:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>
    $aVideoController = _CI_GetVideoController()
    _ArrayDisplay($aVideoController)

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

    Func _CI_GetVideoController($strComputer = '.')
    Local $aReturn[2][12] = [[ _
    'Hersteller:', 'Beschreibung:', 'RAMDAC:', 'Grafikkarten-RAM:', _
    'RAM-Typ:', 'Horiz. Auflösung:', 'Vertik. Auflösung:', 'Bits/Pixel:', _
    'Anzahl der Farben:', 'Bildwiederholfrequenz:', 'Treiberversion:', 'Treiberdatum:']]
    Local $aRAMType[14] = ['', 'Anderer', 'Unbekannt', 'VRAM', 'DRAM', 'SRAM', 'WRAM', 'EDO RAM', _
    'Burst Sync DRAM', 'Pipelined Burst SRAM', 'CDRAM', '3DRAM', 'SDRAM', 'SGRAM']
    Local $x = 0, $objWMIService, $colItems, $Output
    $objWMIService = ObjGet('winmgmts:\\' & $strComputer & '\root\cimv2')
    If Not IsObj($objWMIService) Then Return SetError(1, 0, 0)
    $colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_VideoController', 'WQL', 0x30)
    If IsObj($colItems) Then
    For $objItem In $colItems
    $x += 1
    ReDim $aReturn[$x + 1][12]
    $aReturn[$x][0] = $objItem.AdapterCompatibility
    $aReturn[$x][1] = $objItem.Description
    $aReturn[$x][2] = $objItem.AdapterDACType
    $aReturn[$x][3] = _ByteAutoSize($objItem.AdapterRAM, 0, 3)
    $aReturn[$x][4] = $aRAMType[Number($objItem.VideoMemoryType)]
    $aReturn[$x][5] = $objItem.CurrentHorizontalResolution
    $aReturn[$x][6] = $objItem.CurrentVerticalResolution
    $aReturn[$x][7] = $objItem.CurrentBitsPerPixel
    $aReturn[$x][8] = _StringAddThousandsSep($objItem.CurrentNumberOfColors, '.', ',')
    $aReturn[$x][9] = $objItem.CurrentRefreshRate & ' Hz'
    $aReturn[$x][10] = $objItem.DriverVersion
    $aReturn[$x][11] = _WMIDateStringToDate($objItem.DriverDate)
    Next
    EndIf
    Return $aReturn
    EndFunc ;==>_CI_GetVideoController

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

    Func _WMIDateStringToDate($dtmDate)
    Return (StringMid($dtmDate, 7, 2) & '.' & StringMid($dtmDate, 5, 2) & '.' & StringLeft($dtmDate, 4) _
    & ' ' & StringMid($dtmDate, 9, 2) & ':' & StringMid($dtmDate, 11, 2) & ':' & StringMid($dtmDate, 13, 2))
    EndFunc ;==>_WMIDateStringToDate

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

    ;===============================================================================
    ; Function Name: _ByteAutoSize($iSize[, $iRound][, $iFormat][, $bThousands])
    ; Description:: Gibt einen Bytewert in einer bestimmten Einheit zurück
    ; Parameter(s): $iSize = Größe in Byte übergeben
    ; $iRound = Anzahl der Nachkommastellen (0...8)
    ; $iFormat = bestimmt den Rückgabewert
    ; 0 = Automatisch (je nach übergebenen Wert)
    ; 1 = in Byte
    ; 2 = in KByte
    ; 3 = in MByte
    ; 4 = in GByte
    ; $bThousands = Rückgabe mit Tausendertrennzeichen (True/False)
    ; Requirement(s): #include <String.au3>
    ; Author(s): Oscar (http://www.autoit.de)
    ;===============================================================================
    Func _ByteAutoSize($iSize, $iRound = 2, $iFormat = 0, $bThousands = True)
    Local $aSize[4] = [' Byte', ' KByte', ' MByte', ' GByte'], $sReturn
    If $iFormat < 0 Or $iFormat > 4 Then $iFormat = 0
    If $iRound < 0 Or $iRound > 8 Then $iRound = 2
    If Not IsBool($bThousands) Then $bThousands = False
    $iSize = Abs($iSize)
    If $iFormat = 0 Then
    For $i = 30 To 0 Step -10
    If $iSize > (2 ^ $i) Then
    $iFormat = $i / 10 + 1
    ExitLoop
    EndIf
    Next
    EndIf
    If $iFormat = 0 Then $iFormat = 1
    $sReturn = StringFormat('%.' & $iRound & 'f', Round($iSize / (2 ^ (($iFormat - 1) * 10)), $iRound))
    If $bThousands Then $sReturn = _StringAddThousandsSep($sReturn, '.', ',')
    Return $sReturn & $aSize[$iFormat - 1]
    EndFunc ;==>_ByteAutoSize

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

    ; #FUNCTION# ====================================================================================================================
    ; Name...........: _StringAddThousandsSep
    ; Description ...: Returns the original numbered string with the Thousands delimiter inserted.
    ; Syntax.........: _StringAddThousandsSep($sString[, $sThousands = -1[, $sDecimal = -1]])
    ; Parameters ....: $sString - The string to be converted.
    ; $sThousands - Optional: The Thousands delimiter
    ; $sDecimal - Optional: The decimal delimiter
    ; Return values .: Success - The string with Thousands delimiter added.
    ; Author ........: SmOke_N (orignal _StringAddComma
    ; Modified.......: Valik (complete re-write, new function name)
    ; ===============================================================================================================================
    Func _StringAddThousandsSep($sString, $sThousands = -1, $sDecimal = -1)
    Local $sResult = "" ; Force string
    Local $rKey = "HKCU\Control Panel\International"
    If $sDecimal = -1 Then $sDecimal = RegRead($rKey, "sDecimal")
    If $sThousands = -1 Then $sThousands = RegRead($rKey, "sThousand")
    Local $aNumber = StringRegExp($sString, "(\D?\d+)\D?(\d*)", 1) ; This one works for negatives.
    If UBound($aNumber) = 2 Then
    Local $sLeft = $aNumber[0]
    While StringLen($sLeft)
    $sResult = $sThousands & StringRight($sLeft, 3) & $sResult
    $sLeft = StringTrimRight($sLeft, 3)
    WEnd
    $sResult = StringTrimLeft($sResult, StringLen($sThousands)) ; Strip leading thousands separator
    If $aNumber[1] <> "" Then $sResult &= $sDecimal & $aNumber[1]
    EndIf
    Return $sResult
    EndFunc ;==>_StringAddThousandsSep

    [/autoit]
  • Mehrere Funktionen paralell ablaufen lassen?

    • Oscar
    • 21. Dezember 2011 um 14:36

    Die Timer-UDF ist nicht dasselbe wie AdlibRegister.
    Hier mal an einem Beispiel veranschaulicht:

    Spoiler anzeigen
    [autoit]


    #include <Timers.au3>
    Global $iCount = 0
    $hGui = GUICreate('Test')
    $hLabel = GUICtrlCreateLabel($iCount, 10, 10, 40, 20)
    GUISetState()
    AdlibRegister('_Counter')
    MsgBox(0, 'Test1', 'Counter angehalten, wegen MsgBox')
    AdlibUnRegister('_Counter')

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

    $iTimer = _Timer_SetTimer($hGui, 250, '_TimerCounter')
    MsgBox(0, 'Test2', 'Counter trotz MsgBox nicht angehalten')
    Do
    Until GUIGetMsg() = -3
    _Timer_KillAllTimers($hGui)
    Exit

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

    Func _Counter()
    $iCount += 1
    GUICtrlSetData($hLabel, $iCount)
    EndFunc

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

    Func _TimerCounter($hWnd, $Msg, $iIDTimer, $dwTime)
    #forceref $hWnd, $Msg, $iIDTimer, $dwTime
    $iCount += 1
    GUICtrlSetData($hLabel, $iCount)
    EndFunc

    [/autoit]
  • Bild-Downloader

    • Oscar
    • 21. Dezember 2011 um 14:25

    Naja, über den Sinn eines solchen Skripts kann man ja geteilter Meinung sein. :D
    Bei meinem Browser brauche ich lediglich einen rechten Mausklick auf ein Bild machen und "Grafik speichern unter..." auswählen.
    Wozu also so umständlich? ;)

  • MSP - Mini-Sync-Programm

    • Oscar
    • 13. Dezember 2011 um 18:49

    Hier kommt jetzt ein Programm, zum synchronisieren zweier Verzeichnisse.
    Man gibt also ein Quell- und ein Zielverzeichnis an und das Programm passt das Zielverzeichnis an das Quellverzeichnis an.
    Das heißt, dass neue oder geänderte Dateien aus dem Quellverzeichnis ins Zielverzeichnis kopiert werden und alle Dateien/Verzeichnisse die sich im Zielverzeichnis befinden, im Quellverzeichnis aber nicht (mehr), im Zielverzeichnis gelöscht werden.

    Ich habe das Programm so geschrieben, dass möglichst alle Fehleingaben (Quelle und Ziel gleich, Ziel ist Unterverzeichnis von Quelle, Ziel ist Teil von Quelle, Ziel ist Hauptpfad von Festplatte, usw.) entsprechend abgefangen werden.
    Bevor das Programm irgendwelche Änderungen vornimmt, bekommt man außerdem eine Auflistung zu sehen, die man bestätigen oder abbrechen kann. Erst dann beginnt der Sync-Vorgang.

    Wenn Dateien aus dem Quellverzeichnis im Zielverzeichnis bereits vorhanden sind, wird standardmäßig eine Gleichheitsprüfung vorgenommen.
    Diese prüft ob sich die Dateigröße geändert hat. Da es aber sein kann, dass die zwei Dateien ungleich sind, obwohl sie die gleiche Dateigröße besitzen, habe ich noch einen Vergleich per Checksumme eingebaut.
    Das erstellen der Checksummen dauert aber relativ lange, sodass dieser Vergleich nur als zusätzliche Option angeboten wird.

    Man kann auch mehrere Profile erstellen/laden/löschen.

    Screenshots:
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist. Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    Dateien

    MSP1.png 45,04 kB – 0 Downloads MSP2.png 47,49 kB – 0 Downloads MSP.au3 39,99 kB – 309 Downloads
  • Programm funktioniert nach dem Compilieren nicht mehr richtig!

    • Oscar
    • 12. Dezember 2011 um 19:09

    Dann benutzt Du irgendwelche falschen Pfade oder, oder, oder...
    Wie sollen wir das sagen ohne das Skript?

  • Script zu uhrzeit X beenden

    • Oscar
    • 12. Dezember 2011 um 19:05

    Benutze doch einfach einen Timer (hier zum Beispiel nach 5 Sekunden):

    Spoiler anzeigen
    [autoit]


    $iTimer = TimerInit()
    $iBreak = 5000 ; <- in Millisekunden
    while 1
    Sleep(20)
    If TimerDiff($iTimer) > $iBreak Then ExitLoop
    WEnd
    MsgBox(0, 'Test', 'Ende!')

    [/autoit]
  • Checksummen von Dateien erstellen

    • Oscar
    • 8. Dezember 2011 um 23:19

    Nachdem ich das jetzt mit einer ca. 100MB großen Datei getestet habe, schneidet die DLL von eukalyptus noch am besten ab.

    Eukalyptus, wenn Du nichts dagegen hast, verwende ich Deine DLL in meinem Programm. Du kommst auch in die Credits. :)

  • Checksummen von Dateien erstellen

    • Oscar
    • 8. Dezember 2011 um 20:35

    Das spielt aber für mein Sync-Programm keine Rolle. In dem Fall wird es ja mit dem anderen Dateinamen (falls vorhanden) verglichen.

  • Checksummen von Dateien erstellen

    • Oscar
    • 8. Dezember 2011 um 18:50

    Ich bin gerade dabei ein Programm zum synchronisieren von Verzeichnissen zu erstellen.
    Dafür benötige ich eine Funktion zum vergleichen des Inhalts der Dateien. Wenn der Dateiname gleich ist und die Dateigröße gleich ist, kann ja immer noch der Dateiinhalt unterschiedlich sein.
    Deshalb muss ich eine Checksumme für die Dateien erstellen. Nun habe ich mit _Crypt_HashFile experimentiert:

    Spoiler anzeigen
    [autoit]


    #include <Crypt.au3>
    _Crypt_Startup()
    Global $iTimer, $sFile = @AutoItExe

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

    $iTimer = TimerInit()
    $sChecksum = _Crypt_HashFile($sFile, $CALG_MD2)
    ConsoleWrite('MD2 = ' & TimerDiff($iTimer) & @CR)

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

    $iTimer = TimerInit()
    $sChecksum = _Crypt_HashFile($sFile, $CALG_MD4)
    ConsoleWrite('MD4 = ' & TimerDiff($iTimer) & @CR)

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

    $iTimer = TimerInit()
    $sChecksum = _Crypt_HashFile($sFile, $CALG_MD5)
    ConsoleWrite('MD5 = ' & TimerDiff($iTimer) & @CR)

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

    $iTimer = TimerInit()
    $sChecksum = _Crypt_HashFile($sFile, $CALG_SHA1)
    ConsoleWrite('SHA1 = ' & TimerDiff($iTimer) & @CR)

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

    _Crypt_Shutdown()

    [/autoit]


    Bei mir ist der MD4-Algorithmus am schnellsten = rund 12 ms. Das ist aber immer noch eine relativ lange Zeit für diese "kleine" Datei.
    Gibt es da nicht vielleicht eine schnellere Methode? Oder muss ich damit leben?

  • eure Lieblings-Weinachtslieder

    • Oscar
    • 8. Dezember 2011 um 04:49

    Hier mal eine Liste mit meinen Favoriten:

    - Band Aid - Do They Know It's Christmas
    - Bing Crosby - Merry Christmas
    - Bing Crosby & Rosemary Clooney - Silver Bells
    - Chris Rea - Driving Home From Christmas
    - Dean Martin - Let It Snow, Let It Snow, Let It Snow
    - Dean Martin - Winter Wonderland
    - Emerson, Lake & Palmer - I Believe In Father Christmas
    - Errol Brown - Send A Prayer (To Heaven)
    - Harry Belafonte - Christmas Medley
    - Jim Reeves - Mary's Boychild
    - Mike Oldfield - In Dulci Jubilo
    - Pat Boone - Silver Bells
    - Pat Boone - The First Noel

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™