Ich hab da ein richtig fieses Problem mit meinen Test-Projekten. Es handelt sich dabei um eine automatisch generierte wrapper Datei, die ich von Delphi generieren habe lassen und nach Lazarus portiert habe. Viele Dinge funktionieren, andere sind zum Haare raufen! Leider ist der Wrapper ziemlicher Schrott und ich frage mich ob nur Borland damals so gepfuscht hatte oder ob es mit ObjectPascal generell solche Probleme gibt. Seit ca. 1. Woche ärgere ich mich mit einer function namens CalcBoundingBox herum. Ich hoffe jemand hat guten Rat für mich. Quelltext vom Test-Projekt:
Code: Alles auswählen
procedure TForm1.btnBerechnenClick(Sender: TObject);
begin
pIGraphic:= TCApp.ActiveDrawing.Graphics_; //pIGraphic ist ein Graphic Objekt
BBox:= pIGraphic.CalcBoundingBox(VarDummy); //BBox ist ein BoundingBox Objekt, VarDummy ist OLEVariant - Hier ist der Fehler irgendwo!
//ShowMessage(FloatToStr(BBox.Min.X));
end;
In VisualBasic brauch ich keinen zusätzlichen OLEVariant. Mich wundert es, dass ObjectPascal dieses voraussetzt.
In VisualBasic funktioniert das auch ohne Probleme. Das muss doch mit Lazarus auch zu lösen sein!
Die entsprechende Zeile im Wrapper:
Code: Alles auswählen
function CalcBoundingBox(var Transform: OleVariant): BoundingBox; safecall;
Ich kann mir nicht erklären warum es nicht funktioniert. Es kompiliert auch anstandslos! Aber nach der Ausführung des Code Abschnittes, bekomme ich diese Fehlermeldung:
Projekt xxx hat Exception-Klasse 'EOleException' ausgelöst mit der Meldung: Falscher Parameter.