неявный литой для перегруженной записи в Delphi в качестве параметра в ассортименте Const

Мы избавились от короткого скотворника как часть преобразования из 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 не является типом параметра, который вы можете использовать на одном из этих массивов.

5
задан Peter Turner 2 September 2011 в 18:41
поделиться