Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

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