A Typelibrary ist aus C# erstellt und verwendet, die in Delphi 5.delphi return Array von Ganzzahl von einem COM-Objekt-Funktion
es ein Verfahren, in Typ-Bibliothek ist, die ein Array oder String zurückkehrt. In Delphi muss das gleiche Array von Strings abgerufen werden, aber wenn ich den Code kompiliert habe, kommt folgender Fehler.
Incompatible types: 'tagSAFEARRAY' and 'Array'
Hier ist C# -Code
public int[] sqrRootUpto(int num)
{
int[] result={0};
int tempVal=0;
for (int i = 2; num < tempVal; i++)
{
tempVal = i * i;
result[i] = tempVal;
}
return result;
}
Hier ist Delphi-Code, wo ich die oben Funktion nenne.
procedure TForm1.BtnSqrtClick(Sender: TObject);
var
num :Integer;
result : array of Integer;
begin
num := StrToInt(EditSqrtInput.text);
result := newObj.sqrRootUpto(num); //Here I am calling the above method
end;
end.
EDIT
var
result : variant;
begin
result := VarArrayCreate([0, 20], varInteger);
Error!! Incompatible types: 'tagSAFEARRAY' and 'Array'
TBL.pas für die Funktion diese Signatur mit
function TMathClass.sqrRootUpto(rNum: Integer): PSafeArray;
begin
Result := DefaultInterface.sqrRootUpto(rNum);
end;
was diff s/w TSafeArray und TSafeArray
Ich denke, der erste Schritt wäre, in die Definition von tadSAFEARRAY, TSafeArray usw. zu schauen, die ich in ActiveX.pas existiere. Diese sollen mit Variant-Arrays, glaube ich, verwendet werden. Ich nehme auch an, dass Ihr reales Beispiel komplexer ist, weil das in Delphi einfach zu programmieren wäre. –
Ich habe auch ein Aviant-Array verwendet, aber nicht in der Lage, das zu bekommen. – PawanS
was ist diff b/w TSafeArray und TSafeArray? Ich glaube du hast TSafeArray und PSafeArray gemerkt. PSafeArray ist ein Zeiger auf die TSafeArray-Struktur. –