Thema: Delphi Generic ToString?

Einzelnen Beitrag anzeigen

Whookie

Registriert seit: 3. Mai 2006
Ort: Graz
441 Beiträge
 
Delphi 10.3 Rio
 
#9

AW: Generic ToString?

  Alt 16. Okt 2014, 13:08
Aua, da kannst du dir aber schöne Speicherlecks mit erstellen
Ist ein Argument, ich kopier das am ende in ein TArray<String> um und geb die Liste selber frei

Das mit TValue krieg ich aber irgendwie nicht hin, ich hab eine rekursiv aufgerufene Methode die wie folgt aussieht:

Delphi-Quellcode:
procedure TWrapVariable<T>.DoConvertToString(const Lvl: Integer; const x: TVariable<T>; const ALst: TStringList);
var
  i: Integer;
  iVi: TVariable<Integer>;
  iVf: TVariable<Single>;
  iVs: TVariable<AnsiString>;
  iVb: TVariable<Boolean>;
  s: String;
begin
  if Length(x.FVarArr)=0 then
  begin
    if (fVarType = gicInteger) then
    begin
      x.AsVariable(iVi);
      s:= TValue.From<TVariable<T>>(x).AsString; // comiled zwar wirft aber eine EInvalidCast
      fToStrBuffer := fToStrBuffer + Format('%d,', [iVi.FValue]);
    end
    else if (fVarType = gicFloat) then
    begin
      x.AsVariable(iVf);
      fToStrBuffer := fToStrBuffer + Format('%1.5f,', [iVf.FValue]);
    end
    ....
  end;

  for i := Low(x.FVarArr) to High(x.FVarArr) do
  begin
    DoConvertToString(Lvl+1, x.FVarArr[i] As TVariable<T>, ALst);
  end;


  if (Length(x.FVarArr) <> 0) Or (Lvl=0) then
  begin
    ALst.Add(fToStrBuffer);
    fToStrBuffer := '';
  end;
end;
weiter hinten wird dann über das interne fVarArr iteriert und im anschluß der fToStrBuffer-String der Stringliste
hinzugefügt.
Whookie

Software isn't released ... it is allowed to escape!
  Mit Zitat antworten Zitat