kann ich ein array komplet löschen?
Mit _ArrayDelete kann man ja einzelne Einträge löschen, ich will aber das ganze weghauen.
Array löschen
-
- [ offen ]
-
jendrik -
10. August 2008 um 14:53 -
Geschlossen -
Erledigt
-
-
- Offizieller Beitrag
$array = 0 (z.B.)
-
Oder eben
$array = ""Sollte auch gehen.
Oder eben Programm schießen und wieder öffnen.MfG
Der_Doc -
Nein funktioniert leider nicht. Ich habe ein Array mit 5000 Einträgen, und da ist
[autoit]For $f = 1 To 5000
[/autoit]
_ArrayDelete( $array, $f )
Next
zu langsam.
Ich habe es jetzt aber mit Redim $array[1] gelöst.
Ach ja, wisst ihr wie groß Arrays werden können?
Gruß jendrik -
warum sollte es nicht funktionieren, was die beiden schrieben
[autoit]#include <Array.au3>
[/autoit][autoit][/autoit][autoit]
Dim $array[5001]
$array[10] = "hallo"
$array[5000] = "hallo"
_ArrayDisplay($array)$array = 0
[/autoit][autoit][/autoit][autoit]_ArrayDisplay($array)
[/autoit] -
ich habe es an stelle von
[autoit]For $f = 1 To 5000
[/autoit]
_ArrayDelete( $array, $f )
Next
in mein script eingebaut und es hat nicht funktioniert.hier das ganze script:
[autoit]#include <array.au3>
[/autoit][autoit][/autoit][autoit]
Dim $zahl = 3, $array[1], $array2[1], $isprim, $zahl2 = 3
$array[0] = 2While 1
[/autoit]
$isprim = 1
For $i In $array
If Mod( $zahl, $i ) = 0 Then
$isprim = 0
_ArrayAdd( $array2, $zahl & ": " )
ExitLoop
EndIf
Next
If $isprim = 1 Then
_ArrayAdd( $array2, $zahl & ": X")
EndIf
If UBound( $array2 ) > 5000 Then
$string = _ArrayToString( $array2, @CRLF )
Filewrite( "Test.log" , $string )
$array2 = 0 ; << Funktioniert bei mir nicht. Deshalb Redim $array2[1] oder das von oben.
EndIf
_ArrayAdd( $array, $zahl )
$zahl += 1
WEnd -
hm, bei mir geht es
Spoiler anzeigen
[autoit]#include <Array.au3>
[/autoit] [autoit][/autoit] [autoit]
Dim $zahl = 3, $array[1], $array2[1], $isprim, $zahl2 = 3
$array[0] = 2While 1
[/autoit]
$isprim = 1
For $i In $array
If Mod( $zahl, $i ) = 0 Then
$isprim = 0
_ArrayAdd( $array2, $zahl & ": " )
ExitLoop
EndIf
Next
If $isprim = 1 Then
_ArrayAdd( $array2, $zahl & ": X")
ConsoleWrite(UBound($array2) -1 & @CRLF)
EndIf
If UBound( $array2 ) > 200 Then
$string = _ArrayToString( $array2, @CRLF )
Filewrite( "Test.log" , $string )
_ArrayDisplay($array2, 1)
$array2 = 0 ; << Funktioniert bei mir nicht.
If Not IsArray($array2) Then MsgBox(0,"", "ist kein Array mehr") ;prüft, ob es ein Array ist
_ArrayDisplay($array2, 2) ;wird nicht angezeigt, da das Array nicht mehr existiert
EndIf
_ArrayAdd( $array, $zahl )
$zahl += 1
Sleep(10)
WEnd -
ja ok,
mein fehler
sorry!Wie findet ihr es denn?
-
- Offizieller Beitrag
Du hast dich etwas unklar ausgedrückt: Du möchtest das Array NICHT LÖSCHEN, sondern KOMPLETT LEEREN. Das ist ein gravierender Unterschied.
[autoit]
Mit $array = 0 wird die Variable als Array gelöscht und ist nur noch eine 'normale' Variable mit Inhalt '0'.
Wenn du das Array leeren möchtest, um es hinterher wieder zu nutzen kannst du mit ReDim arbeiten. Aber dann bleibt der Eintrag in Array[0] erhalten und du mußt separat löschen.
Besser:Global $arBase[1] ; Array ohne Inhalt
[/autoit]
Global $DeinArray[500]
; statt zu löschen kannst du jetzt deiner Array-Variable das Leer-Array zuweisen:
$DeinArray = $arBase
; nun ist $DeinArray wieder ein Array mit einem Element ohne Inhalt -
ja tut mir leid, mein Fehler.
Was haltet ihr den von dem Programm?