Danke für die Info Michl, ich bin gerade dabei eine Debugging FPC/Lazarus Version zu erstellen.
Bei der Stelle was du auch gefunden hast, bin ich auch gekommen. Zusätzlich habe ich mir die Variablen angesehen und festgestellt, das es die Exception nicht ganz logisch ist, vor allen nicht die Exception die ich eigentlich erwartet habe.
Code: Alles auswählen
function TPropertyEditor.GetObjectValueAt(Index: Integer): TObject;
begin
with FPropList^[Index] do
Result:=GetObjectProp(Instance,PropInfo,nil); // nil for fpc 1.0.x
end;
Watch:
<TPERSISTENT> = { <TOBJECT> = { _vptr$TOBJECT = $16f50f0}, FOBSERVERS = $0}
<TPROPINFO> = { PROPTYPEREF = $16f522c, GETPROC = $e22b00, SETPROC = $e22b20, STOREDPROC = $1, INDEX = 0, DEFAULT = -2147483648, NAMEINDEX = 2, PROPPROCS = 53, NAME = 'ObjectHasInterface'}
PropProcs = 53 = 0011 0101 = ptStatic.
Edit:
Ich habe einmal ein Testprojekt erstellt um die FPC funktionen zu testen ( Quelltext teilweise aus den Testroutinen des FPC)
Damit sucht man leichter und man kann auch die FPC Routinen mal testet. Ich habe den FPC entsprechend übersetzt.
Edit 2:
Sollte da von OI nicht auf GetInterfaceProp statt auf GetObjectProp verwiesen werden ? Das sieht so aus, als würde da die richtige Zuordnung zwischen Objekt und Interface fehlen. Damit wäre es ein Lazarusproblem und kein FPC Problem.
Edit 3: Da fehlt wirklich die richtige Zuordnung, im Testprojekt (publishedprojekt) wird es gezeigt wie es IMHO funktionieren sollte.