Просто список неправильно создавался.
#pas
procedure THiAsmClass.doWork;
var
Tf: TFirst;
Ts: TSecond;
myList: PList;
begin
myList := NewList;
Tf := TFirst.Create;
Tf.name := 'BlaBlaBla';
Ts := TSecond.Create;
Ts.age := 333;
myList.Add(Ts);
myList.Add(Tf);
_hi_OnEvent(onEvent, myList.Count);
_hi_OnEvent(onEvent, TFirst(myList.Items[1]).Name);
// myList.Destroy;
end;
end.
Более того, если смещения и типы необходимых полей классов совпадают, можно без опасений обращаться к таким полям после приведения (кастования?).
unit HiAsmUnit;
interface
uses Kol,Share,Debug;
type
THiAsmClass = class(TDebug)
private
public
onEvent:THI_Event;
procedure doWork(var dt:TData; idx:word);
end;
TFirst = class
public
first: integer;
foo: string;
goo: string;
end;
TSecond = class
public
second: integer;
bar: string;
end;
implementation
procedure THiAsmClass.doWork;
var
Tf: TFirst;
Ts: TSecond;
myList: PList;
begin
myList := NewList;
Tf := TFirst.Create;
Tf.foo := 'foo';
Ts := TSecond.Create;
Ts.bar := 'bar';
myList.Add(Ts);
myList.Add(Tf);
_hi_OnEvent(onEvent, TFirst(myList.Items[0]).foo);
_hi_OnEvent(onEvent, TFirst(myList.Items[1]).foo);
// myList.Destroy;
end;
end.