Frage wegen Arrays

10/02/2011 15:59 CyberShoxx#1
Hallo Leute,

ich hab mal eine Frage bezüglich Arrays in AutoIt. Also ich erklär mal die Situation. Angenommen ich hab einen 2D Array. In der ersten Spalte stehen Zahlen in der zweiten Spaltte stehen Wörter mit Zahen. Das sieht so aus:

1 Hallo1
32 Trololol
4234 Hallo1
64 shdjsd
5654 hdajshdasd
6757 Hallo1

Also, ich möchte dann nun das in diesen Array nachgesucht wird ob sich in der Rechte Spalte das Wort Hallo1 befindet. Wenn er das Wort Hallo1 gefunden hat soll er die gegebenen Zeile auf der linken Seite finden. Dann sollte er die Werte speichern die alle zutreffen, am besten in einen Array. Also bei diesen Beispiel sollte er insgesamt folgende Zahlen in einer Variable speichern:

1, 4234, 6757

Diese Zahlen haben alle in der gegenüberliegenden Spalte den Namen Hallo1.

Hoffe ihr könnt mir helfen, hab da nicht wirklich was bei google gefunden was mir da hier weiterhilft.

mfg Cyber
10/02/2011 16:42 KDeluxe#2
Dafür bietet sich eine For-Schleife an. Wie viele Durchgänge gemacht werden sollen kannst du einfach anhand der Größe des Arrays mit Hilfe von UBound() angeben. In AutoIt kannst du eine Zeichenkette einfach mit "=" bzw. "==" vergleichen. "=" → Case Insensitivity, "==" → Case Sensitivity
Dem 2. Array, in dem die Werte gespeichert werden sollen, gibst du entweder die selbe Größe des ersten Arrays, oder du benutzt "ReDim".
10/02/2011 16:51 klavier22#3
Code:
#include <Array.au3>
$Fund = ""

Dim $Array[6][2]
$Array[0][0] = 1
$Array[0][1] = "Hallo1"
$Array[1][0] = 32
$Array[1][1] = "Trololo1"
$Array[2][0] = 4234
$Array[2][1] = "Hallo1"
$Array[3][0] = 64
$Array[3][1] = "shdjsd"
$Array[4][0] = 5654
$Array[4][1] = "hdajshdasd"
$Array[5][0] = 6757
$Array[5][1] = "Hallo1"

For $i = 0 to UBound($Array) - 1
	MsgBox(4096, "", $Array[$i][1])
	If $Array[$i][1] = "Hallo1" Then
		MsgBox(4096, "Treffer!", $Array[$i][0])
		$Fund = $Fund & $Array[$i][0] & @CRLF
	EndIf
Next

MsgBox(4096, "", $Fund)
Hoffe das ist verständlich :D

€dit: Da war jemand schneller :D
in meinem speichert er es halt nicht in einem Array, ich denke aber, das ist nicht so schwer umzuschreiben :D
10/02/2011 22:00 CyberShoxx#4
Boah ich weiß garnicht wie sehr ich euch danken soll. Echt, desswegen liebe ich Epvp. So schneller Support und so eine freundlichkeit *__* Ich danke euch, ihr habt mir sowas von geholfen! Danke! Danke! Danke!

Ist zwar für so ein Script übertrieben aber ich hatte die ganze zeit son Denkfehler.

EDIT: Hab noch ein kleines Problem. Ich möchte nun die Zahlen in einen Array speichern. Der soll aber nur 1D sein also sollte demnach so aussehen:

1, 4234, 6757

EDIT2: könnte man das so machen dass er auch das selbe Verfahren macht wenn statt "Hallo1" auch nur "Hall" steht. So dass er auch nur einen Teil braucht um das richtige zu finden.
10/02/2011 23:48 omer36#5
so?

PHP Code:
#include <Array.au3>

Dim $array[6][2] = [[1"Hallo1"],[32"Trololol"], [4234"Hallo1"], [64"shdjsd"], [5654"hdajshdasd"], [6757"Hallo1"]]
Dim $funde[1] = [""]

$wort InputBox("","Das zu suchende Wort eingeben""Hallo1")

For 
$i=0 To UBound($array)-1
StringReplace
($array[$i][1],$wort,$array[$i][1])
if @
extended then $funde[0] &= $array[$i][0] & ", "
Next

_ArrayDisplay
($funde"Fund"
10/03/2011 00:54 KDeluxe#6
Schau dir mal die Hilfe zu StringInStr() an.

Zusammen mit dem, was ich im 2. Beitrag geschrieben habe, kommt das dabei heraus:
PHP Code:
#include <Array.au3>
Dim $Array[6][2] = [[1"123Hallo1"], [32"Trololo1"], _
                    
[4234"hrshalloaniosk"], [64"shdjsd"], _
                    
[5654"hdajshdasd"], [6757"HalloollaH"]]
Dim $ResultArray[1][2] = [[00]]

$Search InputBox("""Suche nach...""Hallo")
For 
$i 0 to UBound($Array) - 1
    
If StringInStr($Array[$i][1], $SearchThen
        $Count 
UBound($ResultArray)
        
$ResultArray[0][0] = $Count
        ReDim $ResultArray
[$Count 1][2]
        
$ResultArray[$Count][0] = $Array[$i][0]
        
$ResultArray[$Count][1] = $Array[$i][1]
    EndIf
Next

_ArrayDisplay
($ResultArray"Funde"
Quote:
$ResultArray[0][0]: Anzahl der gefundenen Ergebnisse
$ResultArray[n][0]: Zahl des nten Ergebnisses
$ResultArray[n][1]: Vollständiges Wort des nten Ergebnisses