Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#22

AW: Variablen in Stringliteral inlinen

  Alt 7. Feb 2020, 15:21
Und der Übersetzer vertippt sich:
'Ergebnis ist %f'
Bumm!
Texte mit Formatierungen aus anderen Quellen sind immer nett, wenn das Programm plötzlich verreckt.
(Übersetzung/Datenbank wo Texte durch user bearbeitet oder über eine Synchronisierung/Update nachgeladen werden)

Drum hab ich bei uns das Format überschrieben/überdeckt.
Der Code muß nur in eine Unit die immer nach den SysUtils eingebunden wird.

Wenigstens "etwas" anzeigen und das Programm nicht abkratzen lassen.
Delphi-Quellcode:
function Format(const FormatStr: string; const Args: array of const): string;
begin
  try
    Result := SysUtils.Format(FormatStr, Args);
  except
    {Meldung ins Log, wenn sowas vorhanden}
    Result := FormatStr; // oder Result := '[ERR] ' + FormatStr;
  end;
end;
Oder zumindestens dem Entwickler etwas helfen, damit man gleich sieht bei welchem "kompletten" String es knallt.
Delphi-Quellcode:
function Format(const FormatStr: string; const Args: array of const): string;
begin
  try
    Result := SysUtils.Format(FormatStr, Args);
  except
    on E: Exception do begin
      E.Message := 'Fehler in Format-String >>' + FormatStr + '<<' + sLineBreak + sLineBreak + E.Message;
      raise;
    end;
  end;
end;
Und das Gleiche für die Variante mit den FormatSettings.

Alternativ verwendet man niemals Format, sondern ruft eine eigene MyFormat auf.
$2B or not $2B

Geändert von himitsu ( 7. Feb 2020 um 15:27 Uhr)
  Mit Zitat antworten Zitat