背景:Delphi 10.1 Berlinに自分のコードを移植し、サードパーティのライブラリを使って作業しています。いくつかはもはや利用できませんので、私はコードを修正しようとします。Delphi 2007-> 10.1 Berlin Port:E2251の解決StrLenへのあいまいなオーバーロード呼び出し
次のコード(プログラムのあるインスタンスから別のインスタンスにパラメータを渡す)は、E2251 StrLenへのあいまいなオーバーロード呼び出しを発生させます。私はなぜそれを解決するための最良の方法が分からないのか理解しています。デフォルトでは
type
PInstInfo = ^TInstInfo;
TInstInfo = packed record
FirstInstanceWnd:HWND;
ParamCount:Integer;
Params:Array[0..MAX_PARAMS-1, 0..MAX_PARAM_SIZE] of Char;
end;
// Memory is filled with:
lpInfo^.ParamCount:=ParamCount;
if lpInfo^.ParamCount>MAX_PARAMS then
lpInfo^.ParamCount:=MAX_PARAMS;
for i:=0 to lpInfo^.ParamCount-1 do
begin
tempStr:=ParamStr(i+1);
if length(tempStr)>MAX_PARAM_SIZE then
setLength(tempStr,MAX_PARAM_SIZE);
StrCopy(@(lpInfo^.Params[i,0]),PChar(tempStr));
end;
// and notify the first instance
PostMessage(lpInfo^.FirstInstanceWnd, MSG_2ND_INSTANCE, 0, 0);
// And read using:
if lpInfo <> nil then
try
// get Parameters
params:=TStringList.Create;
try
for i:=0 to lpInfo^.ParamCount-1 do
begin
SetString(tempStr,
PChar(@(lpInfo^.Params[i,0])),
StrLen(@(lpInfo^.Params[i,0]))); <--- E2251 Ambiguious overloaded call to StrLen
params.Add(tempStr);
end;
InstanceStarted(params);
finally
params.Free;
end;
おかげ
ありがとう、私がこのプロジェクトを移植するのは、それが私を殺した場合です – Xaz