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

  • Switch Case <> Syntax ?

    • BugFix
    • 28. Oktober 2007 um 14:40
    Zitat

    Xenobiologist
    BugFix wieso sagst du, dass es nicht geht?

    ;) weil größer oder kleiner halt nicht geht.
    Aber:

    Zitat

    BugFix
    Bereichsabfragen hingegen sind möglich.


    Also: Case Wert1 To Wert2 :P

  • vergleichen

    • BugFix
    • 28. Oktober 2007 um 11:54

    Hier bekommst du aus allen gegebenen Zahlen
    - sortiert nach Häufigkeit (fallend)
    - bei gleicher Häufigkeit, diese sortiert nach Größe (fallend)

    Spoiler anzeigen
    [autoit]

    #include <array.au3>
    Dim $arTMP[1][2], $count=1
    $str1 = '23,45,67,23,768,45,878,34,67,34 / 34'
    $str2 = '45,23,57,34,789,46,78,345,768,89,34 / 12'

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

    $str = $str1 & $str2
    $str = StringReplace($str, '/', ',')

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

    $arSplit = StringSplit($str, ',')
    _ArrayDelete($arSplit, 0)
    For $i = 0 To UBound($arSplit) -1
    $arSplit[$i] = Number(StringStripWS($arSplit[$i], 8))
    Next
    _ArraySort($arSplit)

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

    For $i = 0 To UBound($arSplit) -1
    If $i < UBound($arSplit)-1 Then
    If $arSplit[$i] = $arSplit[$i+1] Then
    $count += 1
    Else
    ReDim $arTMP[UBound($arTMP)+1][2]
    $arTMP[UBound($arTMP)-1][1] = $arSplit[$i]
    $arTMP[UBound($arTMP)-1][0] = $count
    $count = 1
    EndIf
    Else
    If $count <> 1 Then $count += 1
    ReDim $arTMP[UBound($arTMP)+1][2]
    $arTMP[UBound($arTMP)-1][1] = $arSplit[$i]
    $arTMP[UBound($arTMP)-1][0] = $count
    $count = 1
    EndIf
    Next
    _ArraySort_2ary($arTMP, 0, 1)

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

    _ArrayDisplay($arTMP)

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

    ; $arTMP[$i][0] = Häufigkeit
    ; $arTMP[$i][1] = Wert

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

    ;----------------------------------------------------------------------------------------------------------------------
    ; Function _ArraySort_2ary(ByRef $ARRAY [, $DIM_1ST=0 [, $DESCENDING=0 [$REVERSE=False]]])
    ;
    ; Description sort an 2D-Array 2-ary
    ; BaseIndex is 0
    ; sort the whole array
    ;
    ; Parameter $ARRAY: Array to sort
    ; optional $DIM_1ST: MainSortIndex; 1st Dim. [0] or last occurence in 2nd Dim.[all other values] (default 0)
    ; optional $DESCENDING: Sort ascending[0]/descending[1] (default 0)
    ; optional $REVERSE: Sort 2nd Dimension reverse to 1st Dimension (default False)
    ;
    ; Return Succes -1 ByRef 2-ary sorted Array
    ; Failure 0 set @error
    ; @error = 1 given array is not array
    ; @error = 2 given array has only 1 dimension
    ;
    ; Requirements By using numeric entry, be sure that type is "number" for correct sort
    ; Works with any occurences in 2nd Dimension
    ;
    ; Author BugFix ([email='bugfix@autoit.de'][/email])
    ;----------------------------------------------------------------------------------------------------------------------
    Func _ArraySort_2ary(ByRef $ARRAY, $DIM_1ST=0, $DESCENDING=0, $REVERSE=False)
    If ( Not IsArray($ARRAY) ) Then
    SetError(1)
    Return 0
    EndIf
    Local $FIRST = 0, $LAST, $tmpFIRST, $sortYES = 0
    Local $UBound2nd = UBound($ARRAY,2)
    If @error = 2 Then
    SetError(2)
    Return 0
    EndIf
    If $DIM_1ST <> 0 Then $DIM_1ST = $UBound2nd-1
    Local $arTmp[1][$UBound2nd]
    _ArraySort($ARRAY,$DESCENDING,0,0,$UBound2nd,$DIM_1ST)
    If $REVERSE Then
    Switch $DESCENDING
    Case 0
    $DESCENDING = 1
    Case 1
    $DESCENDING = 0
    EndSwitch
    EndIf
    For $u = 0 To $UBound2nd-1
    For $i = 0 To UBound($ARRAY)-1
    If $sortYES = 0 Then
    If $u > 0 Then
    If ( $i < UBound($ARRAY)-1 ) And ( $ARRAY[$i][$u] = $ARRAY[$i+1][$u] ) And _
    ( $ARRAY[$i][$u-1] = $ARRAY[$i+1][$u-1] )Then
    $sortYES = 1
    $FIRST = $i
    EndIf
    Else
    If ( $i < UBound($ARRAY)-1 ) And ( $ARRAY[$i][$u] = $ARRAY[$i+1][$u] ) Then
    $sortYES = 1
    $FIRST = $i
    EndIf
    EndIf
    ElseIf $sortYES = 1 Then
    If ( $i = UBound($ARRAY)-1 ) Or ( $ARRAY[$i][$u] <> $ARRAY[$i+1][$u] ) Then
    $sortYES = 0
    $LAST = $i +1
    ReDim $arTmp[$LAST-$FIRST][$UBound2nd]
    $tmpFIRST = $FIRST
    For $k = 0 To UBound($arTmp)-1
    For $l = 0 To $UBound2nd-1
    $arTmp[$k][$l] = $ARRAY[$tmpFIRST][$l]
    Next
    $tmpFIRST += 1
    Next
    $tmpFIRST = $FIRST
    Switch $DIM_1ST
    Case 0
    If $u = $UBound2nd-1 Then
    _ArraySort($arTmp,$DESCENDING,0,0,$UBound2nd,$UBound2nd-1)
    Else
    _ArraySort($arTmp,$DESCENDING,0,0,$UBound2nd,$u+1)
    EndIf
    For $k = 0 To UBound($arTmp)-1
    For $l = 1 To $UBound2nd-1
    $ARRAY[$tmpFIRST][$l] = $arTmp[$k][$l]
    Next
    $tmpFIRST += 1
    Next
    Case $UBound2nd-1
    If $u = $UBound2nd-1 Then
    _ArraySort($arTmp,$DESCENDING,0,0,$UBound2nd,$UBound2nd-1)
    Else
    _ArraySort($arTmp,$DESCENDING,0,0,$UBound2nd,$UBound2nd-1-$u-1)
    EndIf
    For $k = 0 To UBound($arTmp)-1
    For $l = 0 To $UBound2nd-2
    $ARRAY[$tmpFIRST][$l] = $arTmp[$k][$l]
    Next
    $tmpFIRST += 1
    Next
    EndSwitch
    EndIf
    EndIf
    Next
    $sortYES = 0
    Next
    Return -1
    EndFunc ;==>_ArraySort_2ary

    [/autoit]
  • Switch Case <> Syntax ?

    • BugFix
    • 27. Oktober 2007 um 21:13

    Select verwenden, damit geht das.

  • Switch Case <> Syntax ?

    • BugFix
    • 27. Oktober 2007 um 20:58

    Das geht so nicht.
    Bei Switch wird nur eine Variable nach unterschiedlichen Werten unterschieden. Im Gegensatz zu Select, wo verschiedene Variablen abgefragt werden können. Es ist auch nicht möglich mit Switch > oder < zu vergleichen, Bereichsabfragen hingegen sind möglich.

  • vergleichen

    • BugFix
    • 27. Oktober 2007 um 17:45

    Ansatz:
    - mit StringReplace alle '/' durch ',' ersetzen
    - dann mit StringSplit($str, ',') aufdröseln
    - Array sortieren
    - dann Element für Element durchgehen
    wenn Element = voriges Element dann $tmp +=1
    sonst
    $arTemp[$i][0] = $Element
    $arTemp[$i][1] = $tmp

    Somit hast du im TempArray die Werte und deren Häufigkeit.
    Nach Häufigkeit sortieren - fertig.

    Ist jetzt nicht 100% exakt aber die Richtung stimmt. ;)

  • Router zwischenschalten

    • BugFix
    • 27. Oktober 2007 um 17:36

    Also:
    - nicht jeder WLAN-Router verfügt auch über eine Repeaterfunktion
    - die es können sind zu 90% 'Bandbreitenhalbierer', da sie ja nun abwechselnd über eine Antenne empfangen und senden müssen
    - häufig steht für die Repeaterfunktion nur das WEP-Protokoll zur Verfügung

    Wenn du die Möglichkeit hast, den 2.ten Router an den ersten anzukabeln, kannst du volle Bandbreite und Leistung abschöpfen.
    Folgende Anschlußvariante:

    Router mit DSL-Anschluß
    ||
    LAN-Ausgang
    ||
    an WAN-Eingang zweiter Router

    Konfiguration 2.ter Router:
    - Zugangsdaten: statische IP (IP des ersten Routers)
    IP-Range des zweiten Routers unterschiedlich zu erstem Router

    Das muß nicht zwingend funktionieren, einige Router sperren sich gegen solch eine Verwendung ;).

    Also Viel Glück.

  • Desktop2HTML

    • BugFix
    • 27. Oktober 2007 um 17:25

    Mal als Tipp um die Datenmenge runterzuschrauben:
    Setz nur die Werte, die sich ändern. Ansonsten vergrößerst du den Bereich für den der letzte Wert gilt. So kannst du zumindest gleichgefärbte Bereich innerhalb einer Pixelzeile zusammenfassen.

  • vergleichen

    • BugFix
    • 27. Oktober 2007 um 17:18

    Frage nicht beantwortet:
    Zahl oder Ziffer?

    Schreib doch mal was rauskommen soll!

  • FAQ

    • BugFix
    • 27. Oktober 2007 um 17:07

    Array Tutorial

    Hi,

    da doch ziemlich oft Fragen zu Arrays gestellt werden, das richtige Verständnis aber wohl nicht unbedingt entsteht, habe ich mal versucht ein Tutorial zum Thema Array zu verfassen.

    Ich habe mich für den Anfang etwas kurz gehalten, man könnte ja problemlos seitenweise zu dem Thema referieren ;).
    Es ist gedacht als Einstiegshilfe für all jene, die schon bei dem Wort Array das Grauen kriegen :D
    Daraus resultierende Fragen könnt ihr mir gerne zukommen lassen, ich werde das Tut dann um eine FAQ erweitern.

    Also viel Spaß.

    Array Tutorial

    EDIT 31.10.07

    Inhalt aktuell

    Code
    • 1-D Array
        • Deklaration
        • Wertzuweisung
        • Array als Rückgabewert einer Funktion
        • Prüfen auf Inhalt
        • Prüfen auf Existenz
        • Vergleichscode ohne/mit Array
    • 2-D Array
        • Deklaration
        • Wertzuweisung
        • 2D Array als Rückgabewert einer Funktion
    • Array statisch oder dynamisch
    Alles anzeigen
  • Button klick -> FileOpenDialog

    • BugFix
    • 27. Oktober 2007 um 13:45

    Button Klick erzeugt ein Ereignis.
    Entweder mit von dir definierter Funktion (OnEvent-Mode) oder GUIGetMsg liefert die Button-ID.
    Das wertest du aus und läßt damit FileOpenDialog öffnen.
    Die Beschriftung wechselst du mit GUICtrlSetData. Hinterlege den Status in einer Variablen, die du einfach hin- und herschaltest 0/1 und je nach Zustand deinen Text switchst.

  • GUI wie bei Steam

    • BugFix
    • 27. Oktober 2007 um 00:11
    Zitat

    Original von Xenobiologist
    Hi,

    und da ich nicht spiele musste ich erstmal gucken, was Steam überhaupt ist. :rolleyes:

    So long,

    Mega


    Ich dachte, dass ist 'ne Gebrauchsanleitung für ein Dampfbügeleisen - etwa nicht? :rofl:

    [/OT]

  • Splash - GUI Generator

    • BugFix
    • 27. Oktober 2007 um 00:08

    Sag mal bitte welche Fehler du bekommst.
    Und welches BS du verwendest.
    Ich habe XP Pro und kann keinen der von PeeTheBee benannten Fehler reproduzieren. Pee verwendet Vista.

  • Input auf Eingabe prüfen

    • BugFix
    • 26. Oktober 2007 um 21:04
    [autoit]

    If (GUICtrlRead($input) = $user) And (GUICtrlRead($input2) = $password) Then

    [/autoit]
  • Input auf Eingabe prüfen

    • BugFix
    • 26. Oktober 2007 um 20:43

    Tze Tze..
    If GUICtrlRead($input &$input2) = $user &$password Then
    Da hast du die Syntax aber gewaltig verbogen :rofl:

  • GUI wie bei Steam

    • BugFix
    • 26. Oktober 2007 um 20:38

    Am Besten finde ich: kuhl :rofl:

  • Variablen einlesen

    • BugFix
    • 26. Oktober 2007 um 10:15
    Zitat

    Original von Baruse
    na gut, aber für meinen Zweck ist das doch gar nicht brauchbar:
    ich definiere einerseits Variablen, die (für mich) einen logischen Namen haben
    (z.B. $_save für "Sicherheit")
    Mit diesen Arrays muß ich nun aber die Zeilennummer abfragen:
    $var[1][1]
    das führt aber den Sinn einer Variable ad absurdum - was nun, wenn ich zwischen zwei Variablen eine weitere einfüge?
    Dann stimmt gar nix mehr;
    ich spiel das mal weiter:
    [var]
    $_pro="Projekte"
    $_war="Wartung"
    $_tool="Tools"
    $_brow="Browser"
    $_back="Backup"
    $_graf="Grafik"
    $_save="Sicherheit"
    $_opt="Optimierung"
    $_desk="WinDesktop"
    $_short=$_war & "\" & $_pro & "\Copy_Shortcuts"
    $_temp=$_war & "\" & $_pro & "\Tempfolder"

    $var[11][1] ergibt nun den für mich nicht brauchbaren String
    $_war & "\" & $_pro & "\Tempfolder"

    Arbeite ich hingegen mit #include, dann kommt hier richtig
    Wartung\Projekte\Tempfolder heraus.

    Alles anzeigen

    Sorry, aber ich muß das mal so kraß sagen: Du hast noch nicht die Grundlagen von Programmabläufen verstanden.
    Frag dich mal, was ist eine Variable (oder frag die Hilfe, Google,Wiki, etc.) und dann lies deine obige Behauptung (..führt....ad absurdum).
    Aus einem gespeicherten Wert (wie es die INI macht) kann nur das herauskommen, was du hineinschreibst.
    Wenn du schreibst:
    $_temp=$_war & "\" & $_pro & "\Tempfolder"
    kann niemals
    Wartung\Projekte\Tempfolder
    herauskommen.

    Es sei denn du schreibst das mit INIWrite, dann wird deine Variable in die entsprechenden realen Werte umgesetzt.

    Eine Variable nimmt unterschiedliche Werte entgegen und speichert sie. Aber sie kann nicht erahnen, wie und in welcher Form du Werte vor dem Speichern ändern möchtest.

    Auch hier gilt: 90 % der Fehler entstehen 60 cm vorm Monitor

  • mehrere Checkboxen überprüfen

    • BugFix
    • 26. Oktober 2007 um 10:05

    Das ist Bitlogik.
    Wenn du 3 in die Potenzen von 2 zerlegst sind das:
    1* 2^0 = 1 und
    1* 2^1 = 2

    Alle zugewiesenen Werte sind Potenzen von 2. Somit kannst du aus einer Summe jederzeit feststellen welche 2-er Potenzen zur Summenbildung geführt haben.
    Denn eine kleinere Ganzzahlzerlegung als mit 2-er Potenzen geht nunmal nicht.

    Du darfst auch nicht die Funktion _CBRead() mit der Switch-Auswertung durcheinanderwürfeln.
    _CBRead() diente hier nur dazu um optisch sofort das Ergebnis der markierten Boxen sichtbar zu machen. Und $str &= 3 bedeutet, dass die BitAnd-Überprüfung ergibt, dass die Checkbox Nr.3, mit dem Wert 4 markiert ist.
    Die Variable $str führt nur die Namen der markierten Boxen zusammen und schreibt sie in das Inputfeld.
    Für die normale Arbeit benötigst du die Funktion _CBRead() nicht, diente wirklich nur der Veranschaulichung.

  • Schmutziges Keyboard

    • BugFix
    • 26. Oktober 2007 um 00:29

    GtaSpider :
    Dann mußt du aber die maus loslassen :P
    Und auch das ist mir schon zu viel ;)

  • Variablen einlesen

    • BugFix
    • 26. Oktober 2007 um 00:18
    Zitat

    Was um alles in der Welt ist nun ein Array und wie gehe ich damit um?


    Da du es nicht weißt, ist es korrekt, die Frage zu stellen - aaaber: stelle sie z.B. im Tutorial,Wiki, Google damit du erst mal die Basics weißt.
    Programmspezifische Fragen klären wir gern.

    Aber da ich am Schreiben bin ;) mal ganz kurz:
    Ein Array ist vergleichbar mit einer Tabelle.
    Das Array, welches von INIReadSection() zurückgegeben wird wäre dann eine Tabelle mit zwei Spalten.
    Arrays werden über Index angesprochen, das erste Element hat immer Index 0.
    Die Spalte 0 enthält dann den Schlüssel und die Spalte 1 den Wert.
    Also:
    $ArrayFromINI[0][0] = Anzahl der Einträge
    $ArrayFromINI[1][0] = Schlüssel1
    $ArrayFromINI[1][1] = Wert1
    $ArrayFromINI[2][0] = Schlüssel2
    $ArrayFromINI[2][1] = Wert2
    usw.

  • Variablen einlesen

    • BugFix
    • 25. Oktober 2007 um 23:46
    Zitat

    Habe schon iniread und fileread probiert, klappt aber leider net.


    Das ist ja mal 'ne fundierte Fehlerbeschreibung [/Ironie]
    Schreib die Variablen in eine INI, mit INIReadSection liest du bei Programmstart ein.

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™