hi leute,
also ich hab ein mehrdimensionales array
global $test[1][1]
so jetzt möchte ich da was hinzufügen
_ArrayAdd($test, $felda[k], $text)
wieso funktioniert das nicht?
hi leute,
also ich hab ein mehrdimensionales array
global $test[1][1]
so jetzt möchte ich da was hinzufügen
_ArrayAdd($test, $felda[k], $text)
wieso funktioniert das nicht?
_ArrayAdd arbeitet nicht mit mehrdimensionalen Arrays.
Lass dir den Errorcode (@error) zurückgeben, du wirst "2" erhalten. Ein Blick in die Hilfe sagt uns:
Zitat2 - $avArray is not a 1 dimensional array
Außerdem: Wieso übergibst du einer Funktion, die 2 Parameter erwartet, 3?
lg chess
ja wie kann ich denn dann meinem mehr dimensionalen array was hinzufügen?
Probier's mal so:
[autoit]
Func _ArrayAdd2DLine(ByRef $avArray, $avValue)
;chesstiger
If Not IsArray($avArray) Or Not IsArray($avValue) Then Return SetError(1, 0, -1)
If UBound($avArray, 0) <> 2 Then Return SetError(2, 0, -1)
If UBound($avArray, 2) <> UBound($avValue, 1) Then Return SetError(3, 0, -1)
Local $iUBound1D = UBound($avArray, 1)
Local $iUBound2D = UBound($avArray, 2)
ReDim $avArray[$iUBound1D + 1][$iUBound2D]
For $i = 0 To $iUBound2D - 1
$avArray[$iUBound1D][$i] = $avValue[$i]
Next
Return True
EndFunc ;==>_ArrayAdd2DLine
Kannst du dann halt so anwenden:
[autoit]
#include <Array.au3>
Local $aArray[2][2] = [[0,1],[2,3]]
_ArrayDisplay($aArray)
Local $aAdd[2] = [4,5]
_ArrayAdd2DLine($aArray, $aAdd)
_ArrayDisplay($aArray)
lg chess
gibts keine einfachere möglichkeit?
In meiner 2D-Array-UDF https://autoit.de/index.php?page…21161#post21161 findest du die Funktion: _Array2DInsert() zum Einfügen von leeren od.mit Daten befüllten Arrayelementen.
Zitat von holzfelix
gibts keine einfachere möglichkeit?
Ein Funktionsaufruf und eine vorherige Array-Deklaration findest du schwer?
Aber gut, will ich die Frage mal beantworten:
Ja, es geht einfacher.
Greif manuell auf das Array zu.
[autoit]
#include <Array.au3>
;Array erstellen
Local $avArray[5][2] = [[0,1],[2,3],[4,5],[6,7],[8,9]]
;Array in der Größe verändern (1. Dimension um eins vergrößern)
ReDim $avArray[6][2]
;Neue Spalte füllen
$avArray[5][0] = "Erster neuer Wert"
$avArray[5][1] = "Zweiter neuer Wert"
;Array anschauen
_ArrayDisplay($avArray)
Dafür muss man aber schon mit Arrays vertraut sein, und das schien mir bei dir nicht der Fall zu sein.
lg chess
also bei mir sieht das so aus:
if $String[UBound($String)-1] > 0 Then
MsgBox(1,"Bugs","Bugs"& $String[UBound($String)-1])
$arraysize = UBound($bugListe)+1
ReDim $bugListe[$arraysize][1]
$bugListe[$arraysize][0] = $pdfListe[$k]
$bugListe[$arraysize][1] = $String[UBound($String)-1]
Else
MsgBox(1, "keine Bugs", "Bugs")
EndIf
es bringt aber einen fehler die MsgBox wird noch ausgeführt und dann gibts en error
Jup. Nehmen wir an, dein Array $bugListe hat die Maße 5x2 (Also Dim $bugListe[5][2]).
Dann ist das letzte Element nicht $bugListe[5][2], sondern $bugListe[4][1], weil Arrays bei 0 anfangen zu zählen.
Dein Code müsste so aussehen:
$arraysize = UBound($bugListe)
ReDim $bugListe[$arraysize + 1][1]
$bugListe[$arraysize][0] = $pdfListe[$k]
$bugListe[$arraysize][1] = $String[UBound($String)-1]
lg chess
du hast doch absolut nichts verändert
nur das +1 verschoben und das sollte ja wurst sein wos addiert wird
und ja ich weiß dass arrays bei 0 beginnen den fehler hab ich ja auch nirgends gemacht
doch du hast recht hab geblickt
aber es kommt in dieser zeile:
[autoit]$bugListe[$arraysize][1] = $String[UBound($String)-1]
[/autoit]immer noch zum fehler
Ups, ja klar.
Du musst das Array auch richtig "redimmen".
ReDim $bugListe[$arraysize + 1][2]
[/autoit]lg chess
jo merci das hat gefehlt^^