![]() |
AW: Alter Classe neue zuweisen
Zitat:
Delphi-Quellcode:
?
function MySwap(var gs:TNegativArray; var FlagFound,Item:integer);
begin gS[FlagFound].assign(gs[item]); FlagFound := Item; end; |
AW: Alter Classe neue zuweisen
Werde ich mal versuchen.. Danke Uwe
gruss |
AW: Alter Classe neue zuweisen
Delphi-Quellcode:
gS[FlagFound].assign(gs[item]);
assign gibt es ja nicht in der Classe.
Delphi-Quellcode:
gruss
procedure Swap(var gs: TNegativeArray; var FlagFound, Item: integer);
|
AW: Alter Classe neue zuweisen
Dann ergänz doch einfach die TSprite-Klasse um diese Methode :)
Da werden letzt endlich ja nur die Eigenschaften und Felder zugewiesen. Muster:
Delphi-Quellcode:
procedure TSprite.Assign(source:TPersistent);
begin if (source is TSprite) then begin field1 := source.field1; : Property1 = source.property1; : end; end; |
AW: Alter Classe neue zuweisen
Zitat:
Muss da jetzt leider Raten ;) Für dich ist das alles einfach.. gruss |
AW: Alter Classe neue zuweisen
Das is nur ein Beispiel, da ich ja die genauen Felder bzw. Eigenschaften der TSprite-Klasse nicht kenne ;)
|
AW: Alter Classe neue zuweisen
Wenn zwei Objekte im Array vertauscht werden sollen, dann müsste es eigentlich folgendermaßen funktionieren:
Delphi-Quellcode:
function Swap(gs:TNegativArray; Index1, Index2:integer);
var lTemp: TObject; begin lTemp:=gs[Index1]; gs[Index1]:=gs[Index2]; gs[Index2]:=lTemp; end; |
AW: Alter Classe neue zuweisen
Zitat:
Es sind keine Objekte im Array sondern 2 Klassen\Classen wie auch immer. gruss |
AW: Alter Classe neue zuweisen
Da es sich bei Dir um TSprite handelt, sollte auch dashier ok sein:
Delphi-Quellcode:
Prinzipiell müsste es gehen, wenn man den kleinsten gemeinsamen Nenner an Stelle von TObject angibt.
lTemp: TSprite;
Wenn Deine Klassen als Vorfahren alle z. B. von TComponent abgeleitet sind, direkt oder auch über mehrere Zwischenstufen, dann könntest Du für lTemp TComponent nehmen. Die Swap-Routine könntest Du dann für den Tausch aller Klassen vom Typ TComponent und deren Nachfolger verwenden. TSprite ist ein Nachfolger von TObject, damit müsste der Tausch eigentlich mit der Routine gelingen. |
AW: Alter Classe neue zuweisen
Zitat:
1) wenn man die Objektzeiger tauschen will, dann mit VAR 2) und will man die Objektinhalte tauschen, dann OHNE, da sich ja die Zeiger nicht ändern Allerdings braucht man beim 2. eventuell einen kompletten zwischen Speicher (z.B. ein drittes Objekt oder ein Stream, in den der Zustand des ganzen Objektes rein serialisiert wird) * entweder man kopiert vom kompletten Objekt die Property/Felder in ein 3. Objekte und dann Objekt 2 in 1 und anschließend Temp in 2 (am Besten wäre es, wenn die Objekte das Assign ordentlich implementiert haben, oder sich serialisieren lassen) * oder man kopiert jedes Property/Feld einzeln und nacheinander, z.B. über eine Swap-Methode |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:53 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz