Hallöchen.
Nun habe ich ja schon gelernt, wie man ein Array dynamisch verändert und promt stehe ich vorm nächsten Problem:
Ich habe ein 2D Array. Habe nun in einem Feld schon einen Wert stehen, wo später aber noch einer hinzukommen soll.
Wie stelle ich das an?
Weiteren Wert in Datenfeld von Array hinzufügen
-
- [ offen ]
-
Scritch -
6. Mai 2011 um 11:51 -
Geschlossen -
Erledigt
-
-
Etwas genauer bitte^^
Evtentuell kleinen Screenshot von _ArrayDisplay oder ne kleine Tabelle.
+ Beschreibung wo du Daten reinhaben willst oder wo was geändert werden soll -
Okay, dann mal bischen genauer
Also, das Array wird in einer Schleife "gefüllt". Nach dem ersten Durchgang würds ungefähr so aussehen:
spalte1 spalte2
(auto12)(auto34)
(auto56)(auto78)Im nächsten Durchlauf der Schleife wird aber in Spalte2 wo auto34 drinnen steht, ein neuer Eintrag rein-
geschrieben. Dieser neue Eintrag soll aber den alten nicht ersetzten, sondern zusätzlich in dem gleichen
Feld stehen. Quasi so:spalte1 spalte2
(auto12)(auto34, auto9)
(auto56)(auto78)In den Datenfeldern können nachher auch bis zu 130 Einträge stehen
* Einträge in Klammern sind ein Datenfeld
-
Auch wenn ich generell davon abraten würde mehrere Daten in ein Feld zu schreiben.
[autoit]
Aber das kommt drauf an was du damit vorhast^^
Im Prinzip ginge es in diesem speziellen Fall z.B. so:#include <Array.au3>
[/autoit][autoit][/autoit][autoit]
Dim $aAuto[2][2] = [['(auto12)', '(auto34)'], _
['(auto56)', '(auto78)']]_ArrayDisplay($aAuto)
[/autoit][autoit][/autoit][autoit]$aAuto[0][1] = StringReplace($aAuto[0][1], ")", ", auto9)")
[/autoit][autoit][/autoit][autoit]_ArrayDisplay($aAuto)
[/autoit] -
Joa... teilweise klappts bei mir, nur beendet sich das Skript mit folgender Fehlermeldung nach einiger Zeit:
"error allocating memory"
Array zu groß? Mit 4GB RAM sollte bei 200 Spalten und teilweise je Spalte ca 60 Zeichen eig. nicht Schluss sein, oder? :pinch:Mal eine kurze Erläuterung zum Skript: Habe auf mehreren PCs eine .ini vorliegen, wo die inst. Software gespeichert ist.
ich möchte eine Auswertung von allen PCs und aller Software machen und dabei auflisten, auf welchem PC welche
Software installiert ist und wie oft jedes Programm (wegen der Lizenzen) vorhanden ist.Dabei ist es halt so dass in der ersten Spalte das Softwareprodukt steht (meinetwegen Firefox). Das ist nun auf jedem Rechner
installiert. Alle Rechner auf denen das installiert ist, werden nun in die 4 Spalte geschrieben, in ein "Kästchen" damit das später
in einer .csv-Datei alles schön sortiert dargestellt werden kann. Und da kommt dann halt die besagte Fehlermeldung, wenn
schon bischen was im Array steht... -
Autoit hat natürlich für einige Sachen bestimmte grenzen. z.B. kannst du maximal ein Array mit 16 777 216 Indizies erzeugen.
Es gibt auch maximale Stringlängen und so weiter.
An deiner Stelle würde ich alles von autoit in eine Datenbank schreiben lassen und diese dann auswerten.
Oder du überlegst dir was um nicht alles auf einmal in ein Array zu schreiben. Wie gesagt das is egtl nicht sinn und zweck eines Programmes den Ram aufzupumpen oder sonst was. -
Hi,
ZitatArray zu groß?
Wenn AutoIt diese Meldung ausgibt dann ist der Array zu groß ^^. Es sind maximal 1 GB RAM Nutzung erlaubt, wenn ich mich jetzt nicht irre. -
Klasse, war alle bisherige Arbeit fast vergebens
Aber danke für die info, überlege mir dann eine andere Lösung. -
Wie ist denn die max. Stringlänge in einem Array?
-
Die generelle maximale Stringlänge ist 2147483647 Byte. Allerdings weiß ich nicht ob die auch für ein Array gelten