検討:
function x_StrZero(N: Double; W: Integer; D: Integer = 0): String;
var S : String;
begin
Str(N:W:D,S);
S := Trim(S);
これにより、W1057の暗黙の文字列が「ShortString」から「string」にキャストされます。
オンラインドキュメントによると:
procedure Str(const X [: Width [:Decimals]]; var S: String);
だけでなく、
注:ただし、この手順を使用すると、コンパイラーは警告を発行する場合があります。W1057'%s'から'%s'への暗黙の文字列キャスト(Delphi)。
なぜこれでしょうか?
この醜い回避策を防ぎたい:
function x_StrZero(N: Double; W: Integer; D: Integer = 0): String;
var
S : String;
SS : ShortString;
begin
Str(N:W:D,SS);
S := Trim(String(SS));
私は読んだことがありますShortStringを文字列に割り当てるときにDelphiが警告するのはなぜですか?しかし、それはこれに答えません。