据我所知,您从来没有打算直接包含该单元。该单位IdStreamVCL
将委托给IdStreamVCLDotNet
或IdStreamVCLWin32
。所以在我看来,这IdStreamVCLWin32
是一个实现细节,你可以通过使用IdStreamVCL
.
如今,这些单位已全部合并为IdStreamVCL
. 所以你可以把它包括在内。但是,我不清楚您是否应该这样做。看看IdStream
:
unit IdStream;
interface
{$I IdCompilerDefines.inc}
uses
{$IFDEF DOTNET}
IdStreamNET
{$ELSE}
IdStreamVCL
{$ENDIF};
type
{$IFDEF DOTNET}
TIdStreamHelper = TIdStreamHelperNET;
{$ELSE}
TIdStreamHelper = TIdStreamHelperVCL;
{$ENDIF}
implementation
end.
似乎很清楚,您打算使用IdStream
并让编译器确定该实现是否由IdStreamNET
or提供IdStreamVCL
。
因此,您的问题的答案可能是您应该替换使用IdStreamVCLWin32
with IdStream
。请注意,IdStream
现在实现的功能有所不同。您不再实例化流类的实例。现代 Indy 为您提供了一个TIdStreamHelper
包含类函数的辅助类。所以你最终会写出这样的代码:
BytesWritten := TIdStreamHelper.Write(Stream, Bytes, Count);
但是,我不能确定这是正确的方法,因为我不知道您实际使用的IdStreamVCLWin32
. IdStreamVCLWin32
您的代码从那里没有使用任何东西,并且使用只是您的某些旧版本代码的流浪宿醉,这是很合理的。
所以我的建议是:
IdStreamVCLWin32
从您的用途中删除。
- 通过研究代码并找出使用当前 Indy 代码的正确方法来处理任何后续的编译器错误。