![]() |
Alter Classe neue zuweisen
Ich möchte zwei Classen miteinander vertauschen.
Abhängig von Items.
Delphi-Quellcode:
procedure SWAP(var Value1, Value2: Integer);
var lTemp: integer; begin lTemp := Value1; Value1 := Value2; Value2 := lTemp; end;
Delphi-Quellcode:
Das geht natürlich nicht weil meine SWAP Function integer erwartet.
// SWAP ITEM
if Item <> FlagFound then begin SWAP(gS[FlagFound], gS[Item]); FlagFound := Item; end; gs aber ein Classe ist. Mit Assign geht's auch nicht .. noch andere Möglichkeiten? Bin mir jetzt nicht sicher ob das der richtige weg wäre. Zumindest meckert der Compiler nicht.
Delphi-Quellcode:
gS[FlagFound] := gS[Item];
gruss |
AW: Alter Classe neue zuweisen
Dann deklarier doch einfach ein Swap für den Klassentyp (hier TMyClass):
Delphi-Quellcode:
procedure SwapMyClass(var Value1, Value2: TMyClass);
var lTemp: TMyClass; begin lTemp := Value1; Value1 := Value2; Value2 := lTemp; end; |
AW: Alter Classe neue zuweisen
Es ist schon spät, von daher weiß ich nicht, ob ich gerade um die Ecke denke (wenn überhaupt noch ;-))
Delphi-Quellcode:
Aber vermutlich möchtest Du die Inhalte von gS[?] tauschen.
procedure SWAP(var Value1, Value2: TBasisKlasseDerZuTauschendenClassen); // eventuell TObject?
var lTemp: TBasisKlasseDerZuTauschendenClassen; begin lTemp := Value1; Value1 := Value2; Value2 := lTemp; end; Was genau ist in gS[?] zu finden? FlagFound und Item sind (vermutlich) Angaben für den Index von gS. Würde es mal so probieren:
Delphi-Quellcode:
procedure SWAP(var Value1, Value2: TKlasse_Oder_Typ_gS[Item]);
var lTemp: TKlasse_Oder_Typ_gS[Item]; begin lTemp := Value1; Value1 := Value2; Value2 := lTemp; end; |
AW: Alter Classe neue zuweisen
Zitat:
![]()
Delphi-Quellcode:
procedure SWAP(var Value1: TNegativeArray; var Value2: TNegativeArray);
var lTemp: TNegativeArray; begin lTemp := Value1; Value1 := Value2; Value2 := lTemp; end;
Delphi-Quellcode:
SWAP(gS[FlagFound], gS[Item]);
Zitat:
Zitat:
Zitat:
gS[FlagFound] soll alle Eigenschaften inklusive der werte von gS[Item] erhalten. Danch wird FlagFound der Index von Item zugewiesen. Zitat:
gruss |
AW: Alter Classe neue zuweisen
Wenn ich das richtig sehe ist gS[Item] vom Typ TSprite.
Lass bitte bei Swap mal das var weg. Also eher sowas:
Delphi-Quellcode:
Aufruf dann so:
procedure SWAP(Value1, Value2: TSprite);
var lTemp: TSprite; begin lTemp := Value1; Value1 := Value2; Value2 := lTemp; end;
Delphi-Quellcode:
SWAP(gS[FlagFound], gS[Item]);
Wenn's das auch nicht ist, sollte ich den Rechner ausschalten und mich auf's Ohr hauen ;-) |
AW: Alter Classe neue zuweisen
Zitat:
Eigentlich ist gs schon vom Type TNegativeArray die TSprite Classe wird dort erst generiert.
Delphi-Quellcode:
Fdata : array of TSprite;
jetzt meldet er aber hier ohne Var Parameter Zitat:
Delphi-Quellcode:
Schalte ich den Var Parameter wieder ein kommt diese Meldung
procedure SWAP(Value1, Value2: TSprite);
var lTemp: TSprite; begin lTemp := Value1; Value1 := Value2; Value2 := lTemp; end; Zitat:
gruss |
AW: Alter Classe neue zuweisen
Du willst aber doch zwei Elemente aus gS vertauschen (die Elemente mit Index FlagFound und Index Item), also zwei TSprite und nicht zwei TNegativeArray.
In gS[FlagFound] soll sich anschließend gS[Item] befinden und in gS[Item] soll sich gS[FlagFound] befinden. Oder hab' ich da was noch nicht recht verstanden. Liege ich falsch, beschreib' bitte mal verbal, was Du erledigen möchtest. Eventuell kommen wir dann weiter. |
AW: Alter Classe neue zuweisen
Nein Zwei identische classen TNegativeArray
definiert als
Delphi-Quellcode:
gs: TNegativeArray;
die TSprite Classen werden in der Classe TNegativeArray erstellt.
Delphi-Quellcode:
Fdata : array of TSprite;
ich möchte jetzt gs einen neuen Index "Item" zu weisen von der Classe TSprite. Die dann alle Eigenschaften von der Classe TNegativeArray und des Arrays von TSprite enthält. gruss |
AW: Alter Classe neue zuweisen
Du definierst
Delphi-Quellcode:
Im Eingangspost schriebst Du
var
gs: TNegativeArray;
Delphi-Quellcode:
gS[FlagFound] := gS[Item];
Das bedeutet meiner Meinung nach, dass Du zwei Elemente des TNegativeArray gS vertauschen möchtest. Stimmt das, oder bin ich gerade auf dem Holzweg? TNegativeArray enthält doch (glaub' ich) 1 bis n Elemente der Klasse TSprite. Oder ist es andersherum, dass TSprite eine Array ist, dass Elemente der Klasse TNegativeArray enthält? |
AW: Alter Classe neue zuweisen
Zitat:
Delphi-Quellcode:
gS[FlagFound] := gS[Item];
gs soll vertauscht werden damit der Inhalt von gs[Item] im gS[FlagFound] enthalten ist. vorher kann ich den Index FlagFound nicht durch den von Item ersetzen. gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:34 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