Seite 1 von 1

ReDim ohne das man den Array schon dimensieoniert hat

Verfasst: 02.01.2005 14:31
von brotkasten-deluxe
So ich hab im Englischen fOrum was wegen dem ReDim gefunden :

Code: Alles auswählen

Dim a(5)
Procedure ListA(count)
  For i = 0 To count
    PrintN("A(" + Str(i) + ") = $" + Hex(a(i)))
  Next i
  Input()
EndProcedure
   
Procedure Redimb(OldCount, NewCount)
  SizeOfA = (OldCount + 1) * 4
  OldAddressOfA = @a()
 
  Dim a(NewCount)
  CopyMemory(OldAddressOfA, @a(), SizeOfA)
EndProcedure 


OpenConsole()
   
a(0) = $A
a(1) = $B
a(5) = $C

ListA(5)

Redimb(5, 10)

a(7) = $D
a(10) = $E

ListA(10)

CloseConsole()
Hier sieht man , dass der Array a() schon dimensioniert ist . Was aber muss ich tun wenn ich den array a() danach dimensiorien will :

Code: Alles auswählen

;Dim a(5) Hier entfernen <<<<<<<<<<<<<<<<<<<<<<
Procedure ListA(count)
  For i = 0 To count
    PrintN("A(" + Str(i) + ") = $" + Hex(a(i)))
  Next i
  Input()
EndProcedure
   
Procedure Redimb(OldCount, NewCount)
  SizeOfA = (OldCount + 1) * 4
  OldAddressOfA = @a()
 
  Dim a(NewCount)
  CopyMemory(OldAddressOfA, @a(), SizeOfA)
EndProcedure 

Dim a(5) ;<<<<<<<<<<<<<< Wenn Dim erst hier auftritt kommt ein Fehler bzw wie kann ich den verhindern
OpenConsole()
   
a(0) = $A
a(1) = $B
a(5) = $C

ListA(5)

Redimb(5, 10)

a(7) = $D
a(10) = $E

ListA(10)

CloseConsole()

Verfasst: 02.01.2005 16:36
von Franky
Mach einfach Dim a(0)

Das is dann zwar immernoch eine Longvariable, anders geht´s aber glaub ich nicht :|

Verfasst: 02.01.2005 17:38
von ts-soft
In dem zweiten Beispiel ist die globale Variable in den Prozeduren nicht bekannt, und deshalb ein Fehler.

Fehlerbeseitigung: Nimm Beispiel 1 :D

Verfasst: 02.01.2005 18:42
von brotkasten-deluxe
ts-soft hat geschrieben:In dem zweiten Beispiel ist die globale Variable in den Prozeduren nicht bekannt, und deshalb ein Fehler.

Fehlerbeseitigung: Nimm Beispiel 1 :D
das is aber absicht . In meinem eigentlichen code kenn ich die größe des array noch net desshalb wollt ich wissen wie man das halt re dimensionieren kann

Verfasst: 02.01.2005 20:35
von Franky
Wieso kennst du die denn nicht?
Hast du´s nicht dimensioniert?
Wer hat das array denn zuvor dimensioniert?

Was ich damit meine, speicher doch einfach in ner variablen, wie groß das array ist

Code: Alles auswählen

x=10
Dim der(x)
Redim(x,40)

Verfasst: 02.01.2005 20:40
von brotkasten-deluxe
Franky hat geschrieben:Wieso kennst du die denn nicht?
Hast du´s nicht dimensioniert?
Wer hat das array denn zuvor dimensioniert?

Was ich damit meine, speicher doch einfach in ner variablen, wie groß das array ist

Code: Alles auswählen

x=10
Dim der(x)
Redim(x,40)
ja aber ich kenne x nicht , das is bei mir die anzahl der zeichen in einer zeile aber es hat sich erledigt ich hab einfach von anfang an anders ge"dimt" <)

Der gute alte IF befehl hat mir wieder geholfen ^^^^^^^^ <) :mrgreen: :allright: