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

Beiträge von misterspeed

  • Bestimmte Dateien in .Ini schreiben lassen

    • misterspeed
    • 30. Juli 2012 um 21:21

    Also ich bezweifle mal, dass man protokollieren kann welche Dateien den Tag über geöffnet werden, zumindestens dürfte es recht aufwendig werden sowas zu realisieren.

    Das ist btw auch eine seltsame Backupstrategie. Viel einfachher wäre es doch einen bestimmten Ordner und die darin enthaltenen Dateien auf Veränderung im Vergleich zum vorherigen Backup zu überprüfen und die Datei nur dann zu kopieren, wenn sie nicht identisch mit dem letzten Backup ist, also bearbeitet wurde. Das geht natürlich am besten wenn alle Dateien im selben Ordner sind. Wenn diese Dateien wild verstreut sind wird das schwieriger.

    Wie man Dateien auf Veränderung prüfen kann? Entweder man vergleicht simple die Dateigröße und das Änderungsdatum (kann man beides problemlos auslesen) oder man macht die Methode etwas zuverlässiger und erstellt eine Tabelle mit MD5 Checksummen.

  • Eingebettetes Child window

    • misterspeed
    • 30. Juli 2012 um 19:46

    Was funktioniert an deinem Beispiel denn nicht? Hatte keine Lust es zu testen, zumal ich dieses PDF Programm nicht habe.

    Sofern es nur darum geht die Fenstertitel Leiste mit den Schliessen, Minimieren, Maximieren Symbolen wegzubekommen, dann hilft dir vielleicht diese Funktion:

    [autoit]


    _WinAPI_SetWindowRgn

    [/autoit]

    Schau dir am besten mal das Hilfebeispiel dazu an. Allerdings geht dabei bei mir der Aero Style des Fensters flöten und wird durch den classic/basic style ersetzt. Ob das bei Child Windows überhaupt noch funktioniert konnte ich nicht testen.

  • Schnitt ausrechnen

    • misterspeed
    • 30. Juli 2012 um 18:59
    [autoit]


    iniread() ; Anwendung siehe Hilfeeintrag

    [/autoit]
  • Windows 8 - Unpin from Start

    • misterspeed
    • 29. Juli 2012 um 15:34

    Hmm doof. Wie schauts in der Registry aus? Werden da evtl Werte verändert wenn man einzelne Kacheln manuell "unpinned" ?

    Hier wird z.B. ein Registry Schlüssel verwendet um die Zahl der angezeigten Kacheln pro Seite zu verändern:

    http://www.ampercent.com/how-to-change-…t-screen/10494/


    Eventuell werden dort auch noch andere Dinge vermerkt, die dir behilflich sein könnten.

  • Windows 8 - Unpin from Start

    • misterspeed
    • 29. Juli 2012 um 11:55

    Ok andere frage, was mach Metro, wenn man einer Verknüpfung (also der lnk Datei selbst) das Attribut "hidden" gibt und in den Ansichtsoptionen des Users einstellt, dass versteckte Dateien nicht angezeigt werden dürfen? Theoretisch sollte er das dann ja weder im explorer noch sonst wo sehen können, aber wahrscheinlich gilt das Dateiattribut wieder nicht für die erstellten Kacheln (kanns nicht testen...)

  • Windows 8 - Unpin from Start

    • misterspeed
    • 28. Juli 2012 um 20:23
    Zitat


    Hi,

    Thanks for your feedback and for trying Windows8! The Start layout is personalized by the user and it puts the user in control of how they want to personalize Start and be confident that it won't change unless they customize it. And so, there is no API or scripting generally available for changing the layout, but we are investigating how to support the enterprise image creation scenario in particular.

    Thanks again,

    Nazia

    http://social.msdn.microsoft.com/Forums/en-US/w…f-a64983d13a19/


    Wenn das noch aktuell sein sollte schauts eher schlecht aus...

    EDIT:

    Hier die selbe Antwort: http://social.msdn.microsoft.com/Forums/en-US/w…4-64d934b3d73b/

  • Windows 8 - Unpin from Start

    • misterspeed
    • 28. Juli 2012 um 20:07
    Zitat von veronesi

    Aber nach meinem Verständnis heißt das nur, dass dieser Befehl dies nicht kann. Aber es gibt doch bestimmt einen neuen Befehl!


    Joar anzunehmen, dass es dafür neue Methoden gibt. Hatte vorhin noch was in Bezug auf Windows Phone gefunden:

    http://msdn.microsoft.com/en-us/library/…61%28v=vs.92%29

    Aber wird dir vermutlich auch nicht wirklich weiterhelfen. Am ehesten wirste solche Infos wohl direkt bei MS bekommen, ggf. mal dort im Forum suchen/fragen oder den Support direkt kontaktieren. ;)

  • Windows 8 - Unpin from Start

    • misterspeed
    • 28. Juli 2012 um 18:31
    Zitat von veronesi


    Bitte nun keine Diskussion, ob das wirklich notwendig ist, oder nicht. Das hat eine Person weit über meiner Gehaltsstufe entschieden!

    Mein Beileid, man sollte sein Gehalt kürzen :D

    200 Arbeitsplätze direkt nach Releaseday mit einem derart verkorksten Betriebssystem ausstatten ist schon mutig. Kann man nur hoffen, dass der gute Mann nicht vergessen hat die 200 Anwender vorab mit den Release Previews zu schulen. Ich habe jedenfalls starke Zweifel daran, dass bei uns in der Firma irgend ein Anwender auf anhieb mit Windows 8 klar kommen würde. Nun gut ist ja dann eher dein Problem und nicht das Problem der hohen Tiere die das neueste vom neusten wollen. :D

    MS sagt unter anderem:

    Zitat


    Windows 8 Release Preview: Unpins the item from the taskbar but does not remove the item from the Start screen. Items cannot be programmatically removed from Start; they can only be unpinned by the user or removed as part of a program's uninstallation.

    http://msdn.microsoft.com/en-us/library/…v=vs.85%29.aspx
    http://msdn.microsoft.com/en-us/library/…v=vs.85%29.aspx


    Da ich hier gerade kein Windows 8 habe und @work nach jeweils wenigen Minuten keinen Bock mehr auf die Previews hatte kann ich leider auch nicht wirklich viel mehr als meine kurze google suche beitragen.

  • InetRead und InetGet ohne Wert

    • misterspeed
    • 28. Juli 2012 um 18:03

    Benutz halt das was dir google oder wikipedia an API's anbieten, alles andere ist sowieso nur rumgepfusche.

    https://developers.google.com/custom-search/v1/overview
    http://de.wikipedia.org/wiki/Wikipedia:API

  • _FileListToArray: zwei dateiendungen von dateien filtern

    • misterspeed
    • 28. Juli 2012 um 12:41

    Oder eben die komplette Dateiliste einlesen und das Ergebnis array danach filtern.

    Vorteil im Vergleich zu AspirinJunkie oder auch dem mehrmaligen Einsatz von filelisttoarray wäre, dass die Zahl der Festplattenzugriffe minimiert wird sofern der Filter vom User mehrmals aufgerufen werden muss/soll, da die komplette Dateiliste nur einmal eingelesen wird und danach beliebig oft neue gefilterte Arrays erstellt werden können.

    Spoiler anzeigen
    [autoit]


    #include <array.au3>
    #include <file.au3>

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

    $path = "c:\windows"

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

    $aTemp = _FileListToArray($path,"*",1)

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

    $aFiles = filterArray($aTemp,"ext","bmp|exe|jpg|png|dll",1)
    if $aFiles < 0 then
    msgbox(0,"Fehler","Fehlercode: " & $aFiles)
    else
    _arraydisplay($aFiles)
    endif

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

    #cs
    Func filterarray()

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

    $mode: Kann "ext" oder "name" sein, jenachdem ob die Dateiendung oder der gesamte Dateiname gefiltert werden soll
    $sString: Der zu suchende String, bei mehreren Suchstrings müssen diese mit "|" getrennt werden

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

    Return Values:

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

    Gibt ein 1D Array zurück mit Basis 0

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

    Fehler:
    -1 Kein gültiges Array
    -2 Array Dimension > 1
    -3 $startIndex > als gegebenes Array
    -4 $mode ist ungültig
    -5 Keine Suchergebnisse

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

    #ce
    func filterarray(ByRef $aFilter,$mode,$sString,$startIndex=0)

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

    if not isarray($aFilter) then return -1
    If UBound($aFilter,0) > 1 Then Return -2
    if $startindex > ubound($aFilter)-1 then return -3
    if $mode <> "ext" and $mode <> "name" then return -4
    if $sString = "" then return $aFilter

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

    local $aReturn[ubound($aFilter)]
    local $count=0
    local $split = False
    local $temp

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

    if stringinstr($sString,"|") then
    $split = True
    local $aSplit = stringsplit($sString,"|")
    endif

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

    for $i=$startIndex to ubound($aFilter)-1
    if $mode="ext" then
    if $split = True then
    for $j=1 to $aSplit[0]
    $temp = stringright($aFilter[$i],stringlen($aSplit[$j]))
    if $temp = $aSplit[$j] then
    $aReturn[$count]=$aFilter[$i]
    $count+=1
    exitloop
    endif
    next
    else
    $temp = stringright($aFilter[$i],stringlen($sString))
    if $temp = $sString then
    $aReturn[$count]=$aFilter[$i]
    $count+=1
    continueloop
    endif
    endif
    else
    if $split = True then
    for $j=1 to $aSplit[0]
    if stringinstr($aFilter[$i],$aSplit[$j]) then
    $aReturn[$count]=$aFilter[$i]
    $count+=1
    exitloop
    endif
    next
    else
    if stringinstr($aFilter[$i],$sString) then
    $aReturn[$count]=$aFilter[$i]
    $count+=1
    continueloop
    endif
    endif
    endif
    next

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

    if $count = 0 then
    return -5
    else
    redim $aReturn[$count]
    return $aReturn
    endif

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

    endfunc

    [/autoit]
  • Bestimmte Dateien in .Ini schreiben lassen

    • misterspeed
    • 26. Juli 2012 um 22:06

    Ja ein Script kann den ganzen Tag laufen, ob das sinnvoll, angebracht oder effektiv ist? Kommt drauf an was du überhaupt tun willst.
    Kann man Dateipfade in eine ini schreiben? Klar kann man, ich schätze mal die Frage ist hier eher wo die Pfade herkommen, wie sie ermittelt werden usw. Was wolltest du nun genau tun?
    Ist eine ini Struktur sinnvoll oder angebracht? Kommt drauf an was später mit den Daten passieren soll. Was wolltest du tun?
    Kann man Dateien Anhand des Dateityps filtern? Ja kann man, auch hier wäre die Frage woher die Dateilisten überhaupt kommen sollen.

    Codeschnippsel? Schau dir die Hileeinträge zu diesen Funktionen an:

    [autoit]


    _filelisttoarray()
    iniwrite()
    iniwritesection()

    [/autoit]

    Ausserdem Hilfreich sollten die Hilfeeinträge du den Schleifenstatements sein:

    [autoit]


    for
    while
    do

    [/autoit]

    Mehr kann man dir anhand der mageren Beschreibung deines Vorhabens leider nicht helfen.

  • Warten auf ein Fenster das vielleicht nie kommt.

    • misterspeed
    • 22. Juli 2012 um 11:54
    Zitat von AspirinJunkie


    @Edit: Der über mir denkt genauso wie ich aber schneller... ;)

    "Speed" wirkt eben besser als "Aspirin" :P

  • Warten auf ein Fenster das vielleicht nie kommt.

    • misterspeed
    • 22. Juli 2012 um 11:44

    Wie wäre es einfach beide Varianten in einer Schleife abzugfragen bis eines der Fenster existiert?

    [autoit]


    dim $timeout
    dim $timer=timerinit()
    dim $step1Success = False
    do
    if winexists("Fenster1") then
    functionStep1()
    $step1Success = True
    exitloop
    endif
    if winexists("Fenster2") then
    functionStep1_other()
    $step1Success = True
    exitloop
    endif
    $timeout=timerdiff($timer)
    until $timeout>=60000 ; nach spätestens 60 Sekunden warten abbrechen, Setup startet garnicht oder mit nicht unterstütztem Fenster...
    if $step1Success = False then exit msgbox(0,"Fehler","Timeout für Step 1 überschritten")

    [/autoit]
  • WinHttp - wie besucht man eine zweite Seite (Server) richtig?

    • misterspeed
    • 3. Juli 2012 um 18:12

    Was ich aber in jedem Fall machen würde an deiner Stelle:

    Überschreib dir nicht die Handles durch die erneute Nutzung der selben Variable, denn sonst kannst du immer nur die letzte Verbindung sauber trennen.

  • Tabs in 2 oder mehreren Zeilen

    • misterspeed
    • 24. Juni 2012 um 20:43
    Zitat von ohforf

    Ich kann mich nicht erinnern, jemals so eine schlechte GUI gesehen zu haben.

    Dann verwendest du wohl kein Windows, da sind solche Einstellungs Dialoge eigtl. üblich, genauso in den Optionen von aufwendigen Programmen wie Word/Excel und Co., zumindestens in den etwas älteren Versionen. ;)
    Gibt auch zugenüge andere Tools / Programme, die einfach massenhaft Einstellungen oder Funktionen haben und dadurch auf mehrer Tabreihen angewiesen sind. Dass es auch schöner und anwenderfreundlicher geht, da sind wir uns natürlich einig.

  • Tabs in 2 oder mehreren Zeilen

    • misterspeed
    • 24. Juni 2012 um 14:23
    Zitat von ohforf

    Was passiert, wenn in dem Beispielbild der Tab "Settings" offen ist ?
    Wird dann die 2. Zeile Tabs zugedeckt und für immer unerreichbar ?
    Irgendwie macht das keinen Sinn.

    Du hast wohl noch nie eine GUI mit mehreren TAB Zeilen gesehen, was mich doch ein wenig verwundert, denn so selten und ungewöhnlich ist das nun auch wieder nicht.
    Klickt man bei solch einer GUI einen Tab aus der hinteren Tabreihe an, so wird die ganze Reihe nach vorne geholt, also die Reihen quasi getauscht. Somit bleiben alle Tabs erreichbar. Ich persönlich fand dieses Verhalten allerdings immer etwas irritierend, gerade dann wenn man auch noch 3 Reihen an Tabs hat und alle Tabs der Reihe nach nach der gewünschten Funktionalität absuchen möchte.

    Übersichtlicher finde ich da eher ein seitlich angeordnetes Menü, mit Hilfe dessen man unterschiedliche GUI Seiten anzeigen lassen kann.

  • Offlinelogger --Probleme mit timer / while-Schleife

    • misterspeed
    • 24. Juni 2012 um 13:10

    Hier mal ein etwas anderer Aufbau, der einfachheithalber nur die ausgabe in Form von Sekunden, kann man aber natürlich abändern:


    Spoiler anzeigen
    [autoit]


    #include <Date.au3>
    #include <file.au3>

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

    Global $LogFile = @ScriptDir & "\" & _NowDate() & "_" & @HOUR & @MIN & @SEC & ".log"
    Global $aLog[2]=[0,""]
    Global $aPingSites[5] = [ _
    "www.google.de", _
    "www.ifa-clan.de", _
    "www.autoit.de", _
    "www.web.de", _
    "www.gmx.de" _
    ]

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

    Global $lastCheck = -1
    Global $onlineSince = TimerInit()
    Global $offlineSince = TimerInit()
    Global $totalTime = TimerInit()
    Global $checkEvery = 10000 ; alle 10 Sekunden prüfen, würde das eher sogar auf einmal pro Minute setzen
    Global $online = True
    Global $onlineOld = $online

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

    While 1
    If $lastCheck = -1 Or TimerDiff($lastCheck) > $checkEvery Then
    $onlineOld = $online
    $online = onlinecheck()
    if $onlineOld <> $online Then
    If $online = False Then
    ConsoleWrite("Computer war für " & Round(TimerDiff($onlineSince)/1000,0) & " Sekunden online" & @CRLF)
    $offlineSince = TimerInit()
    Else
    ConsoleWrite("Computer war für " & Round(TimerDiff($offlineSince)/1000,0) & " Sekunden offline" & @CRLF)
    ReDim $aLog[UBound($aLog)+1]
    $aLog[0]+=1
    $aLog[UBound($aLog)-1]= _NowCalc() & @TAB & "=" & @TAB & Round(TimerDiff($offlineSince)/1000,0) & " Sekunden keine Verbindung zum Internet"
    $onlineSince = TimerInit()
    EndIf
    EndIf
    $lastCheck = TimerInit()
    $aLog[1]=Round(TimerDiff($totalTime)/1000,0) & " Sekunden"
    writeLog()
    EndIf
    WEnd

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

    Func onlinecheck()
    Local $badPings = 0
    For $i=0 to UBound($aPingSites)-1
    Ping($aPingSites[$i],500)
    if @error Then $badPings+=1
    Next
    ConsoleWrite("negative pings: " & $badPings & @CRLF)
    If $badPings = UBound($aPingSites) Then
    Return False
    Else
    Return True
    EndIf
    EndFunc

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

    Func writeLog()
    Local $data, $hLogFile

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

    If UBound($aLog) < 3 Then Return

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

    if Not FileExists($LogFile) Then _FileCreate($LogFile)

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

    $data = "[registrierte Ausfälle]" & @CRLF & _
    "Anzahl" & @TAB & @TAB & @TAB & "=" & @TAB & $aLog[0] & @CRLF
    $data &= "Zeit Total" & @TAB & @TAB & "=" & @TAB & $aLog[1] & @CRLF & @CRLF & _
    "[detailierte Liste]" & @CRLF
    For $i=2 to UBound($aLog)-1
    $data &= $aLog[$i] & @CRLF
    Next

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

    $hLogFile = FileOpen($LogFile,10)
    FileWrite($hLogFile,$data)
    FileClose($hLogFile)
    EndFunc

    [/autoit]
  • ISN AutoIt Studio

    • misterspeed
    • 17. Juni 2012 um 03:23
    Zitat von ISI360

    Und wieder mal brauch ich eure Hilfe:

    Da ich nicht soo der Array Experte bin frag ich am besten gleich euch:
    Also...ich habe ein array in dem z.b folgende Werte stehen:

    Spoiler anzeigen
    [autoit]


    $WM_KILLFOCUS
    $WM_KILLFOCUS
    $WM_ENABLE
    $WM_SETREDRAW
    $WM_SETTEXT
    $WM_PAINT
    $WM_CLOSE
    $WM_PAINT
    $WM_SETREDRAW
    $WM_SETREDRAW

    [/autoit]


    jezt möchte ich daraus ein neues Array Bilden in dem alle Doppelten Einträge entfernt werden. (Was ja noch nicht soo schwer wäre..)
    Ich möchte jedoch auch noch mitzählen wie oft ein Element im Array Doppelt vorkommt und die Anzahl an das Element anhängen...
    Das Fertige Array sollte dan ca. so aussehen:

    Spoiler anzeigen
    [autoit]


    $WM_KILLFOCUS {2x}
    $WM_ENABLE
    $WM_SETREDRAW {3x}
    $WM_SETTEXT
    $WM_PAINT {2x}
    $WM_CLOSE

    [/autoit]

    Wie könnte man das am einfachsten lösen?! :huh:
    Danke im Vorraus!!!!

    Alles anzeigen


    Zitat von chip

    Kannst du z.b. so machen:

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    #include <WindowsConstants.au3>
    Dim $avArray[10] = ["$WM_KILLFOCUS", "$WM_KILLFOCUS", "$WM_ENABLE", "$WM_SETREDRAW", "$WM_SETTEXT", "$WM_PAINT", "$WM_CLOSE", "$WM_PAINT", "$WM_SETREDRAW", "$WM_SETREDRAW"]

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

    $unique = _ArrayUnique($avArray)

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

    For $i = 1 To $unique[0] Step 1
    $result = _ArrayFindAll($avArray, $unique[$i])
    If UBound($result) > 1 Then
    $unique[$i] = $unique[$i] & " {" & UBound($result) & "x}"
    EndIf
    Next

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

    _ArrayDelete($unique,0)
    _ArrayDisplay($unique)

    [/autoit]
    Alles anzeigen

    Aus Performance Gründen würde ich allerdings einen anderen Lösungsweg wählen und auf die Nutzung der array UDF weitestgehendst verzichten. Gerade bei einem derart umfangreichen Projekt sollte man jeden Performance Engpass vermeiden. Ich gehe mal davon aus, dass die meisten Projekte deutlich mehr Variablennamen als im Beispiel enthalten. Die gewünschte Aufgabe kann man mit einem einzigen Arraydurchlauf lösen, arrayunique und die nachfolgende Schleife mit arrayfindall verursachen deutlich mehr Arraydurchläufe und kosten wertvolle Zeit.

    Effizientere Methode:

    Spoiler anzeigen
    [autoit]


    #include <Array.au3>

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

    Global $avArray[10] = ["$WM_KILLFOCUS", "$WM_KILLFOCUS", "$WM_ENABLE", "$WM_SETREDRAW", "$WM_SETTEXT", "$WM_PAINT", "$WM_CLOSE", "$WM_PAINT", "$WM_SETREDRAW", "$WM_SETREDRAW"]

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

    $timer=TimerInit()
    $aUniqueCount = _arrayUniqueCount($avArray,1)
    ConsoleWrite(TimerDiff($timer) & @CRLF)

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

    _ArrayDisplay($aUniqueCount)

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

    Func _arrayUniqueCount(ByRef $aData, $mode=2, $sepChar=",") ; mode: 1 = 1D Rückgabe , 2 = 2D Rückgabe
    Local $aNew[1][2] ; für 2D Rückgabe
    Local $aNew1D[1] ; für 1D Rückgabe
    Local $sTemp="" ; string verkettung des ergebnis arrays für schnelle unique prüfung
    Local $j=0 ; zahl der unique treffer

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

    ; hier sollten noch prüfungen folgen ob es sich bei $aData um ein array handelt und ob es eindimensional ist...

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

    For $i=0 To UBound($aData)-1
    If StringInStr($sTemp,$aData[$i] & $sepChar,1,-1) Then ; stringprüfung arbeitet schneller als große arrays zu durchlaufen und "viele" strings zu vergleichen
    For $k=0 To UBound($aNew)-1 ; bei bereits vorhandenen einträgen müssen wir zwangsweise die bisherigen suchergebnisse durchlaufen um den korrekten index zu finden
    If $aNew[$k][0]=$aData[$i] Then
    $aNew[$k][1]+=1
    ExitLoop
    EndIf
    Next
    Else
    $aNew[$j][0] = $aData[$i]
    $aNew[$j][1] = 1
    $sTemp &= $aData[$i] & $sepChar
    $j += 1
    ReDim $aNew[$j+1][2]
    EndIf
    Next

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

    If UBound($aNew) > 1 Then ReDim $aNew[UBound($aNew)-1][2]

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

    ; sofern zwingend ein 1D Array als Ausgabe benötigt wird muss das neue Array noch einmal durchlaufen werden:
    if $mode = 1 Then
    ReDim $aNew1D[UBound($aNew)]
    For $i=0 To UBound($aNew)-1
    If $aNew[$i][1] > 1 Then
    $aNew1D[$i]=$aNew[$i][0] & " {" & $aNew[$i][1] & "x}"
    Else
    $aNew1D[$i]=$aNew[$i][0]
    EndIf
    Next
    $aNew=$aNew1D
    EndIf

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

    Return $aNew
    EndFunc

    [/autoit]

    Direkter Vergleich zwischen beiden Methoden:

    Code
    bei einem Array mit 1600 Datensätzen und sehr langen werten (csv Datei) keine doubletten:
    29236.5581379756 ms ; chip
    2401.29373984682 ms ; me
    
    
    bei einem Array mit 1900 Variablennamen (dein Beispiel mehrfach kopiert), also viele doubletten:
    1106.71663577354 ms ; chip
    40.5784813432992 ms ; me


    EDIT: Der stringinstr Vergleich ist nun mit Parameter $occurence=-1 und der Umstellung der if Bedingung nochmals einige ms schneller

    PS:

    Auch von mir ein dickes Lob für dieses tolle Projekt, hatte zwar noch keine Zeit und Lust mir das anzusehen, aber nach 15 Seiten dieses Threads und den Screenshots bin ich wirklich begeistert und werde das ganze bei Gelegenheit mal antesten. ;)

  • Invert Mouse input

    • misterspeed
    • 16. Juni 2012 um 19:48
    Zitat von BugFix

    Läuft AutoIt auf Touchscreen-Geräten?

    Warum sollte es nicht? Auch Windows unterstützt Touchscreen Monitore, haben selbst einige Win7 Touchscreen Workstations bei uns in der Firma. ;)
    Für einen Administrator sind die Dinger allerdings mehr als nervig, gottseidank haben wir zusätzlich Tastatur und Maus an den Geräten...

  • Transparenz einer Combobox

    • misterspeed
    • 16. Juni 2012 um 19:33

    Gibt es irgendeinen Weg um das Auswahlfenster welches beim Klicken einer Combobox erscheint transparent zu bekommen?
    Habe nur den Lösungsansatz von funkey gefunden, hier wird allerdings nur das obere Editfeld des Combocontrols transparent, die Auswahlliste ansich behält den weißen Hintergrund.

    https://autoit.de/index.php?page=Thread&amp;postID=185956


    Meine Testgui:

    [autoit]


    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <ComboConstants.au3>

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

    Global $transparency = 220

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

    $gDrop = GUICreate("Drop GUI", 350, 200, 0, 0, $WS_POPUP,BitOR($WS_EX_ACCEPTFILES,$WS_EX_TOPMOST))
    $cOutputFrameRate = GUICtrlCreateCombo("",145,30,60,20,BitOr($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL, $WS_VSCROLL))

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

    GUICtrlSetData($cOutputFrameRate,"23.976|23.978|24.000|25.000|29.970|30.000","25.000")
    GUISetState(@SW_SHOW)

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

    WinSetTrans($gDrop,"",$transparency)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit]

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™