Seite 1 von 1

Procedure - Array - CopyMemory

Verfasst: 21.01.2008 12:47
von orange-blue
Hallo ich habe folgendes Problem:
Wenn ich den Pointer eines Arrays in einer Funktion einer Attribut eines "Objektes" zuweise, kann ich den Speicher nur auf ein anderes Array kopieren wenn dieses vor Funktionsaufruf definiert wurde.

Code: Alles auswählen

Structure Test
  name.s
  *array
EndStructure

Procedure setObj(*obj.Test)
  Dim array1.point(3)
 
  For i = 0 To 3
    array1(i)\x = i
    array1(i)\y = i
  Next

  *obj\name = "Test"
  *obj\array = @array1()
EndProcedure

obj.Test
Dim array2.point(3)          ;<- Funktioniert
setObj(@obj)
;Dim array2.point(3)          ;<- Funktioniert nicht

CopyMemory(obj\array ,@array2(),SizeOf(point)*4)

Debug array2(3)\x
Ist das ein Bug, oder funktioniert das ganze aus einem anderen Grund nicht?

Verfasst: 21.01.2008 13:17
von #NULL

Code: Alles auswählen

*obj\array = @array1()
..ist nicht sehr sinnvoll, weil das array local in der prozedur ist, und somit mit verlassen der prozedur höchsten zufällig noch existiert und dein pointer somit nichts mehr wert ist.

wenn du Static verwendest. bleibt das array erhalten, dann geht auch dein code (in beiden varianten). bedenke aber, dass das array dann in jedem funktionsaufruf das selbe ist.

Code: Alles auswählen

Static Dim array1.point(3)

Verfasst: 21.01.2008 13:28
von orange-blue
Ahh! :roll:
das ich da net selber drauf gekommen bin ^^
thx