Hallöchen....
ich hab da ein kleines Problemchen...
Ich hab eine Art "Objektinspektor" mit dem ich Eigenschaften von meinenen Objekten umändern kann.
Jedes Objekt mit Eigenschaften stammt von "TEackBase" ab:
Delphi-Quellcode:
type
TEackBase = class (TImageSpriteEx)
public
settings : TPropList;
events : TStringlist;
focus:boolean;
name:string;
constructor Create(AOwner:TSprite);
end;
"settings" ist vom Typ TPropList:
Delphi-Quellcode:
type
TEtyp = (etInteger,etBoolean,etString);
type
PInt=^integer;
PStr=^string;
Pbol=^boolean;
type
TEackItem = class
name:string;
typ:TETyp;
int:pint;
str:pstr;
bol:pbol;
end;
type
TPropList = class(TList)
protected
function GetItem(Index: Integer): TEackItem;
procedure SetItem(Index: Integer; AItem: TEackItem);
public
function Add(name:string;typ:TETyp;intptr:pint=nil;strptr:pstr=nil;boolptr:pbol=nil):Integer;overload;
function Remove(Index:integer): Integer; overload;
property Items[Index: Integer]: TEackItem read GetItem write SetItem; default;
end;
Hier der Code der Liste:
Delphi-Quellcode:
procedure TPropList.SetItem(Index:integer; AItem:TEackItem);
begin
inherited Items[Index] := AItem;
end;
function TPropList.GetItem(Index:Integer):TEackItem;
begin
Result := inherited Items[Index];
end;
function TPropList.Add(name:string;typ:TETyp;intptr:pint=nil;strptr:pstr=nil;boolptr:pbol=nil):Integer;
var item:TEackItem;
begin
item := TEackItem.Create;
item.name := name;
item.typ := typ;
item.int := intptr;
item.str := strptr;
item.bol := boolptr;
Result := inherited Add(Item);
end;
function TPropList.Remove(Index:Integer):integer;
begin
Result := inherited Remove(Items[index]);
end;
Um "Eigenschaften" in meine Liste zu schreiben, habb ich ja nun Add. Diese funktion will ich z.B. so aufrufen:
Settings.Add('name',etstring,nil,@myobjectid,nil)
Leider bekomme ich beim Abfragen meiner Settings eine
AV.
Was mache ich falsch? Gibt es vielleicht einen anderen Weg?
Grüße Igel457