Мы избавились от короткого скотворника как часть преобразования из Delphi 7. Я хотел сделать это как можно более безболезненно, поэтому мы подумали, что мы можем изменить короткую стропу к некоторой записи, которая действовала так же. Вот как это объявлено (к этому еще больше, но это основная структура, которая описывает проблему):
TShortStringRec = record
private
FStuff: array [0..49] of Char;
public
class operator Implicit(AStuff: TShortStringRec): String;
class operator Implicit(S1: String): TShortStringRec;
end;
Это хорошо работает для установки строк к записи. Но тогда существуют функции, такие как формат
, которые принимают в качестве параметра Const Array Const
. Есть ли способ сделать подразумевание тому, что мы хотели бы передать в арадину Const?
function FunkyFunc : string;
var
ssr : TShortStringRec;
begin
ssr := 'Wall';
result := format('Hello %s', [ssr]); //<---error here
end;
дает синтаксическую ошибку при компиляции, поскольку SSR не является типом параметра, который вы можете использовать на одном из этих массивов.