Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > AutoIt
You last visited: Today at 13:04

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



2D Array Fehler

Discussion on 2D Array Fehler within the AutoIt forum part of the Coders Den category.

Reply
 
Old   #1
 
°Incinerate's Avatar
 
elite*gold: 400
Join Date: Jun 2011
Posts: 513
Received Thanks: 101
2D Array Fehler

Hallihallo epvp,

ich habe ein kleines Problem mit meiner 2D Array. Ich finde den Fehler nicht. Vermutlich steh ich komplett auf dem Schlauch. Entschuldigung dafür, >.< aber bevor ich viel erzähle hier der Script:


PHP Code:
Dim $Line[1], $Split[1]
$File FileOpen("M:\ein\Pfad\von\der\Datei.txt")
$Line[0] = FileReadLine($File,1)
$Split[0] = StringSplit($Line[0],"|")
MsgBox(0""$Split[0][0]) 
Das Textdokument:
PHP Code:
1|2|3|4|



MfG
°Incinerate is offline  
Old 10/20/2013, 15:06   #2
 
alpines's Avatar
 
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
Du kannst einem 1D-Eintrag keinen 1D-Array zuweisen:
Code:
$Split[0] = StringSplit()
ist falsch, StringSplit returned einen Array, was gehen würde wäre StringSplit in einen neuen Array zu speichern und die Einträge in einer For-Schleife zu übernehmen.

Hier mal ausm Kopf geschmissener Code der funktionieren könnte:
Code:
Local $aSplit = StringSplit("","",2), $a2DArray[1][UBound($aSplit)]

For $i = 0 To UBound($aSplit) - 1
	$a2DArray[0][$i] = $aSplit[$i]
Next
alpines is offline  
Old 10/20/2013, 15:14   #3
 
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,149
Du hast ein Array in einem Array, das macht es nicht zu einem 2D Array. Mir ist in AutoIt keine direkte Zugriffsmethode bekannt.

Aber warum möchtest du es überhaupt ein Array in einem Array speichern?
Ich weiß zwar nicht genau, was du machen möchtest, aber hier mal ein Beispiel:
Code:
$file = FileOpen("datei.txt")
While $file <> -1
    $line = FileReadLine($file)
    If @error Then Exit
    
    $split = StringSplit($line, "|")
    For $i = 1 To $split[0]
        MsgBox(0, "", $Split[$i])
    Next
WEnd
Du könntest es aber auch tatsächlich in ein 2D Array packen. Die Größe der Dimensionen müsstest du aber immer wieder mit UBound() überprüfen und mit ReDim anpassen. Das ist aber keine Lösung die du verwenden solltest.

Quote:
Originally Posted by alpines View Post
Du kannst einem 1D-Eintrag keinen 1D-Array zuweisen
Doch, das kann man:
Code:
Dim $array1[1]
$array1[0] = StringSplit("1|2|3", "|")
$var = $array1[0]
MsgBox(0, "", "Elemente: " & $var[0])
Dein Beispiel funktioniert übrigens nur Gesetz dem Falle, dass alle Zeilen gleich viele "Spalten" haben. Nicht die beste Lösung.
KDeluxe is offline  
Old 10/20/2013, 15:18   #4
 
alpines's Avatar
 
elite*gold: 60
Join Date: Aug 2009
Posts: 2,256
Received Thanks: 815
Achso, ich hatte das anders probiert:
Code:
Local $myArray1[1][UBound(StringSplit("","",2)-1], $aSplit = StringSplit("","",2)

$myArray[0] = $aSplit
Würde man hier nicht einem Feld die Array-Einträge zuweisen?
alpines is offline  
Old 10/20/2013, 16:43   #5
 
°Incinerate's Avatar
 
elite*gold: 400
Join Date: Jun 2011
Posts: 513
Received Thanks: 101
Quote:
Originally Posted by KDeluxe View Post
Ich weiß zwar nicht genau, was du machen möchtest
Die Datei hat mehrere Reihen. 1. Zahl für die Reihe und 2. Zehl für die Spalte.
°Incinerate is offline  
Old 10/20/2013, 17:42   #6
 
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,149
Wie und wann soll das ganze den "verarbeitet" werden? Wenn jede Zeile gleich viele "Spalten" verwendet kannst du ganz einfach ein 2D Array verwenden:

Eine andere Methode wäre die von dir bereits verwendete (Array in Array), nur eben richtig:

Beide Beispiele sind aber nicht das Gelbe vom Ei. Nenne uns doch deinen Anwendungsfall.
KDeluxe is offline  
Old 10/20/2013, 18:23   #7
 
°Incinerate's Avatar
 
elite*gold: 400
Join Date: Jun 2011
Posts: 513
Received Thanks: 101
Ich spiele Lotto und will die getippten Zahlen die ich in der Textdatei gespeichert habe auslesen und mit den gezogenen Zahlen vergleichen.
Es gibt mit sicherheit schon so ein Programm und ich könnte es auch totan einfach machen. Möchte ich aber nicht. ^^

€: So würde das dann aussehen.

°Incinerate is offline  
Old 10/20/2013, 20:47   #8

 
elite*gold: 64
Join Date: May 2011
Posts: 1,229
Received Thanks: 854
Machs so:

Code:
#include <Array.au3>
Local $sRead, $aSplitFile, $iZeilen, $aSplit
$sRead = FileRead("zahlen.txt"); Datei auslesen
$aSplitFile = StringSplit($sRead, @CR, 2); Zeilen Splitten
$iZeilen = UBound($aSplitFile); Zeilen Länge rausfinden

Dim $aZahlen[$iZeilen][6]; 2D Array Deklarieren


For $i = 0 To $iZeilen -1; Alle Zeilen durchgehen
	$aSplit = StringSplit($aSplitFile[$i], "|", 2); In den Zeilen jedes | Splitten
	For $i2 = 0 To 5; Alle 6 Zahlen durchgehen
		$aZahlen[$i][$i2] = $aSplit[$i2]; In die 2D Array die Zahlen eintragen
	Next; For-Schleife Ende
Next; For-Schleife Ende


_ArrayDisplay($aZahlen); Array Anzeigen
Und mach dir eine txt Datei namens zahlen.txt, mit den inhalt:
Code:
01|02|03|04|05|06
11|12|13|14|15|16
21|22|23|24|25|26
31|32|33|34|35|36
41|42|43|44|45|46
51|52|53|54|55|56
61|62|63|64|65|66
71|72|73|74|75|76
81|82|83|84|85|86
91|92|93|94|95|96
BladeTiger12 is offline  
Thanks
1 User
Old 10/20/2013, 22:16   #9
 
°Incinerate's Avatar
 
elite*gold: 400
Join Date: Jun 2011
Posts: 513
Received Thanks: 101
Thx BladeTiger12

Ist zwar nicht fertig aber ich habs so gemacht:


Warum da bei den 1. Zahlen jetzt ein Absatz ist weiß ich grade nicht. Werde ich aber gleich schauen/editieren.
°Incinerate is offline  
Old 10/20/2013, 22:49   #10

 
elite*gold: 64
Join Date: May 2011
Posts: 1,229
Received Thanks: 854
Probiers so:

Code:
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

Dim $sRead, $aSplitFile, $iZeilen, $aSplit

GUICreate("", 187, 274, 319, 134, BitOR($WS_SYSMENU,$WS_CAPTION,$WS_POPUP,$WS_POPUPWINDOW,$WS_BORDER,$WS_CLIPSIBLINGS))
GUICtrlCreateGroup("Getippte Zahlen", 8, 72, 169, 193)


$sRead = FileRead("zahlen.txt")
$aSplitFile = StringSplit($sRead, @CRLF, 2)
$iZeilen = UBound($aSplitFile)

Dim $aZahlen[$iZeilen][6], $aLabel[$iZeilen][6]

For $i = 0 To $iZeilen -1 Step 2; Alle Zeilen durchgehen
    $aSplit = StringSplit($aSplitFile[$i], "|", 2)
    For $i2 = 0 To 5; Alle 6 Zahlen durchgehen
        $aZahlen[$i][$i2] = $aSplit[$i2]
		$aLabel[$i][$i2] = GUICtrlCreateLabel($aZahlen[$i][$i2],($i2 + 1) * 24, (($i +2) * 8) + 80, 16, 17)
    Next
Next
GUISetState(@SW_SHOW)

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

    EndSwitch
WEnd
BladeTiger12 is offline  
Thanks
1 User
Reply


Similar Threads Similar Threads
Facebook App - Array Error [Es ist ein Fehler aufgetreten. Bitte Lade die Seite neu!]
02/28/2013 - Web Development - 9 Replies
Werte Community, Ich habe eine App, die automatisch bein Verwenden dieser App ein Bild erstellt und automatisch auf die Pinnwand teilen soll. Dies Funktioniert eig. alles soweit. Doch nun habe ich die App auf mein Webspace hochgeladen. Beim Verwenden dieser App auf meiner Seite kommt folgendes Problem: Es ist ein Fehler aufgetreten. Bitte Lade die Seite neu! Array
$SID[0] array Fehler
10/18/2011 - AutoIt - 3 Replies
Hi, ich lese die SID aus einem Spiel aus. Mit _stringbetween klappt das auch bei dem ersten Account. Beim zweiten nicht mehr. Warum? Ich lese sie ja immer neu aus..$oWEBTCP.Navigate("http://www.howrse.de/ jeu/?identification=1") $SID = _StringBetween($oWebTcp.body, "sid=", "'") $OWEBTCP.Navigate("http://www.howrse.de/site /doLogOut", "sid="&$SID)Wenn ich jz hinter dem $SID = _StringBetween($oWebTcp.body, "sid=", "'") eine MSGBOX mache dann zeigt er mir die richtige SID an aber halt beim 2....
Array
06/18/2011 - AutoIt - 0 Replies
Array Fehler Ich habe hier mal wieder einen Fehler den ich nicht beheben kann #include "WebTcp.au3" #include <Array.au3> #Include <File.au3> TCPStartup() _AutoITObject_Startup()



All times are GMT +1. The time now is 13:05.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.