Когда я делаю
function Foo(var Bar: variant): boolean;
begin
Bar := 'beta';
end;
procedure TForm1.FormCreate(Sender: TObject);
var
a: variant;
begin
a := 'alpha';
Foo(a);
caption := a;
end;
Заголовок формы beta
.Поэтому он компилируется для меня ...
Вы пытаетесь отправить string
в качестве параметра var variant
.Вам нужно отправить variant
в качестве параметра var variant
, как говорит компилятор ([DCC Error] Unit1.pas(35): E2033 Types of actual and formal var parameters must be identical
)!
Но варианты часто не лучшие вещи для работы (неоптимальная производительность, чтобыупомянуть одну вещь).
Вы можете сделать что-то простое, как
type
TValType = (vtString, vtInteger);
TData = record
ValType: TValType;
ValStr: string;
ValInt: integer;
end;
и сделать
function Foo(var Data: TData): boolean;