결론은 델파이 버그네요ㅜ
델마당의 빠야님의 도움으로 알게 됐습니다;;
알고 보니 제 데스크탑 메모리가 2기가 인데 그게 문제 였던거 같네요.
해결법은 아래와같이 Unit를 만들어서 Project에 포함시켜서 컴파일하니 해결됩니다.
저의 무지함이 본의 아니게 간만에 데스크탑 포맷도 하고 각종 하드웨어 펌웨어 업글까지 하게됐네요;;
{-------------------------------------------------------------------------------
Bug workaround for 'The DecisionCube capacity is low' bug
________________________________________________________________________________
BUG DESCRIPTION
If you have a lot of physical memory or a large page file, you may find that a
DecisionCube raises the following exception whenever the DecisionCube's data
set is opened:
Exception class: ELowCapacityError
Message: "The DecisionCube capacity is low. Please deactivate dimensions or
change the data set."
The exception will occur whenever the sum of the available physical memory and
the available page file memory exceeds 2 GBytes. This is caused by a bug in
Delphi - more specifically: an integer being out of range in the procedure
GetAvailableMem (unit Mxarrays).
AFFECTED DELPHI VERSIONS
Delphi 3-7 (with the DecisionCube package installed)
WORKAROUND
Add this unit to your project.
-------------------------------------------------------------------------------}
unit DecisionCubeBugWorkaround;
interface
uses Windows, Mxarrays;
implementation
function GetAvailableMem: Integer;
const
MaxInt: Int64 = High(Integer);
var
MemStats: TMemoryStatus;
Available: Int64;
begin
GlobalMemoryStatus(MemStats);
if (MemStats.dwAvailPhys > MaxInt) or (Longint(MemStats.dwAvailPhys) = -1) then
Available := MaxInt
else
Available := MemStats.dwAvailPhys;
if (MemStats.dwAvailPageFile > MaxInt) or (Longint(MemStats.dwAvailPageFile) = -1) then
Inc(Available, MaxInt div 2)
else
Inc(Available, MemStats.dwAvailPageFile div 2);
if Available > MaxInt then
Result := MaxInt
else
Result := Available;
end;
initialization
Mxarrays.SetMemoryCapacity(GetAvailableMem);
end.
|