Delphi7を使用してPOSアプリを作成しようとしています。
EPSON OPOS ADK をダウンロードし、Dlphi7に取り込もうとしていますが、取り込み時に再構築が行われそのときに、
//--------------------------------------------------------
function TOPOSCashDrawer.CompareFirmwareVersion(const FirmwareFileName: WideString;
var Result: Integer): Integer;
begin
Result := DefaultInterface.CompareFirmwareVersion(FirmwareFileName, Result);
end;
//--------------------------------------------------------
のところで、
[エラー] COCASHLib_TLB.pas(344): 識別子の多重定義 : 'Result'
[致命的エラー] EpsonOPOS.dpk(35): '..\Imports\COCASHLib_TLB.pas' ユニットはコンパイルできませんでした
となってしまいます。
上記の部分を
//--------------------------------------------------------
function TOPOSCashDrawer.CompareFirmwareVersion(const FirmwareFileName: WideString): Integer;
begin
Result := DefaultInterface.CompareFirmwareVersion(FirmwareFileName);
end;
//--------------------------------------------------------
のようにしたらコンパイルが通り、取り込みもできたようですが果たしてこのような方法でよいのか分かりません。
どなたかお分かりの方いらっしゃいましたらご教授願います。
Delphi7+WindowsXP SP2
Result がかぶってるんでしょう。
COCASHLib_TLB.pas の宣言部と実装部の
var Result: Integer
を
var iResult: Integer
とかに書き換えるといいのでは。
ResultはDelphiでは予約語で、関数の戻り値になっています。
別に定義すると、多重定義という事になります。
Result := DefaultInterface.CompareFirmwareVersion(FirmwareFileName, Result);
の Result); も iResult にするのを忘れずに
Result := DefaultInterface.CompareFirmwareVersion(FirmwareFileName,
Result);
この両方の Result の返り値の意味がわかりませんが
おそらく
Result := は CompareFirmwareVersion は関数自体が成功したかどうか?(エラー判定)
Result は CompareFirmwareVersion の返り値
もしく
Result := は使用していないかも知れません。
うんとさん、HOtaさん、KHE00221さん、すばやいご対応ありがとうございます。
ResultをiResultとして試してみます。
ありがとうございました。
ツイート | ![]() |