Procedure - Array - CopyMemory

Hier werden, insbesondere in den Beta-Phasen, Bugmeldungen gepostet. Das offizielle BugForum ist allerdings hier.
orange-blue
Beiträge: 556
Registriert: 04.09.2004 22:23
Kontaktdaten:

Procedure - Array - CopyMemory

Beitrag 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?
Benutzeravatar
#NULL
Beiträge: 2237
Registriert: 20.04.2006 09:50

Beitrag 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)
my pb stuff..
Bild..jedenfalls war das mal so.
orange-blue
Beiträge: 556
Registriert: 04.09.2004 22:23
Kontaktdaten:

Beitrag von orange-blue »

Ahh! :roll:
das ich da net selber drauf gekommen bin ^^
thx
Antworten