我认为在什么平台编译是没有关系的。看看下列代码: SysUtils: procedure InitPlatformId; var OSVersionInfo: TOSVersionInfo; begin OSVersionInfo.dwOSVersionInfoSize := SizeOf(OSVersionInfo); if GetVersionEx(OSVersionInfo) then with OSVersionInfo do begin Win32Platform := dwPlatformId; Win32MajorVersion := dwMajorVersion; Win32MinorVersion := dwMinorVersion; Win32BuildNumber := dwBuildNumber; Win32CSDVersion := szCSDVersion; end; end;Controls: procedure TWinControl.SetParentWindow(Value: HWnd); begin if (FParent = nil) and (FParentWindow <> Value) then begin if (FHandle <> 0) and (FParentWindow <> 0) and (Value <> 0) then begin FParentWindow := Value; Windows.SetParent(FHandle, Value); if (Win32MajorVersion >= 5) and (Win32Platform = VER_PLATFORM_WIN32_NT) then Perform(WM_CHANGEUISTATE, MakeWParam(UIS_INITIALIZE, UISF_HIDEACCEL or UISF_HIDEFOCUS), 0); end else begin DestroyHandle; FParentWindow := Value; end; UpdateControlState; end; end;...... 有些在98上可以,在NT/2000不行原因有API不一样、程序本身问题(如NT/2000下若有内存溢出很容易体现处理,但98下就不一定了,个人观点)等。上面几位说得都有道理。我在98/2000 Pro /2000 Server都编译过不少程序,在别的环境下运行都没问题。
最近也碰到问题。
可惜是没分提问了。
是不是csdn没有人在了???
另外界上来讲我觉得看起来没有什么差别。
我基本上是用nt server做的程序。
但在我机器调试出错。但在win9x/winme运行良好。
csdn上有。
2.有些api是调用系统默认的,故调用效果有些不同伴。
3.对office2000和office97的不同.封装的一些ocx出错。
SysUtils:
procedure InitPlatformId;
var
OSVersionInfo: TOSVersionInfo;
begin
OSVersionInfo.dwOSVersionInfoSize := SizeOf(OSVersionInfo);
if GetVersionEx(OSVersionInfo) then
with OSVersionInfo do
begin
Win32Platform := dwPlatformId;
Win32MajorVersion := dwMajorVersion;
Win32MinorVersion := dwMinorVersion;
Win32BuildNumber := dwBuildNumber;
Win32CSDVersion := szCSDVersion;
end;
end;Controls:
procedure TWinControl.SetParentWindow(Value: HWnd);
begin
if (FParent = nil) and (FParentWindow <> Value) then
begin
if (FHandle <> 0) and (FParentWindow <> 0) and (Value <> 0) then
begin
FParentWindow := Value;
Windows.SetParent(FHandle, Value);
if (Win32MajorVersion >= 5) and (Win32Platform = VER_PLATFORM_WIN32_NT) then
Perform(WM_CHANGEUISTATE, MakeWParam(UIS_INITIALIZE, UISF_HIDEACCEL or UISF_HIDEFOCUS), 0);
end else
begin
DestroyHandle;
FParentWindow := Value;
end;
UpdateControlState;
end;
end;......
有些在98上可以,在NT/2000不行原因有API不一样、程序本身问题(如NT/2000下若有内存溢出很容易体现处理,但98下就不一定了,个人观点)等。上面几位说得都有道理。我在98/2000 Pro
/2000 Server都编译过不少程序,在别的环境下运行都没问题。