ZitatXenobiologist
BugFix wieso sagst du, dass es nicht geht?
weil größer oder kleiner halt nicht geht.
Aber:
ZitatBugFix
Bereichsabfragen hingegen sind möglich.
Also: Case Wert1 To Wert2 ![]()
ZitatXenobiologist
BugFix wieso sagst du, dass es nicht geht?
weil größer oder kleiner halt nicht geht.
Aber:
ZitatBugFix
Bereichsabfragen hingegen sind möglich.
Also: Case Wert1 To Wert2 ![]()
Hier bekommst du aus allen gegebenen Zahlen
- sortiert nach Häufigkeit (fallend)
- bei gleicher Häufigkeit, diese sortiert nach Größe (fallend)
#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'
$str = $str1 & $str2
$str = StringReplace($str, '/', ',')
$arSplit = StringSplit($str, ',')
_ArrayDelete($arSplit, 0)
For $i = 0 To UBound($arSplit) -1
$arSplit[$i] = Number(StringStripWS($arSplit[$i], 8))
Next
_ArraySort($arSplit)
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)
_ArrayDisplay($arTMP)
[/autoit] [autoit][/autoit] [autoit]; $arTMP[$i][0] = Häufigkeit
; $arTMP[$i][1] = Wert
;----------------------------------------------------------------------------------------------------------------------
; 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
Select verwenden, damit geht das.
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.
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. ![]()
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.
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.
Frage nicht beantwortet:
Zahl oder Ziffer?
Schreib doch mal was rauskommen soll!
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 ![]()
Daraus resultierende Fragen könnt ihr mir gerne zukommen lassen, ich werde das Tut dann um eine FAQ erweitern.
Also viel Spaß.
EDIT 31.10.07
Inhalt aktuell
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.
ZitatOriginal von Xenobiologist
Hi,und da ich nicht spiele musste ich erstmal gucken, was Steam überhaupt ist.
So long,
Mega
Ich dachte, dass ist 'ne Gebrauchsanleitung für ein Dampfbügeleisen - etwa nicht? ![]()
[/OT]
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.
If (GUICtrlRead($input) = $user) And (GUICtrlRead($input2) = $password) Then
[/autoit]Tze Tze..
If GUICtrlRead($input &$input2) = $user &$password Then
Da hast du die Syntax aber gewaltig verbogen ![]()
Am Besten finde ich: kuhl ![]()
ZitatAlles anzeigenOriginal 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.
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
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.
GtaSpider :
Dann mußt du aber die maus loslassen ![]()
Und auch das ist mir schon zu viel ![]()
ZitatWas 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.
ZitatHabe 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.