DecisionCube cannot be activated - 'The DecisionCube capacity is low' is reported, but incorrect
from Delphi/Etc Tip 2008/10/01 10:11 / hits (596)출처 : http://qc.codegear.com/wc/qcmain.aspx?d=2703
var
i:integer;
a:Array [1..255] of TSmallintArray;
begin
for i:=1 to 255 do
begin
A[i]:=TSmallIntArray.Create(0,0);
A[i].AutoSize:=false;
A[i].Capacity:=30000;
end;
end;
이렇게 실행을 하면 Capacity 부분에서 그림과 같은 에러가 떨어집니다.
ELowCapacityError With message
''The DecisionCube Capacity is low. please deactivate dimensions or change the data set.'
그런데 이상한건 똑같은 소스가 노트북(인텔싱글코어)에서는 안그러는데 데스크탑(AMD 듀얼코어)에서만 그럽니다.
쓰고 있는 건 Delphi7버전입니다.
하루 종일 왜그럴까 생각해 보고 데스크탑 델파이를 재설치와 델파이 서비스팩 업그레이드도 해보았지만
도무지 감조차 오지 않습니다ㅜ
차이점이라면 CPU가 싱글이냐 듀얼이냐 차이뿐인데ㅜ
아시는 분 조언 부탁합니다.
var
a:TSmallintArray;
begin
A:=TSmallIntArray.Create(0,0);
A.AutoSize:=false;
A.Capacity:=30000;
end;
이 경우도 마찬가지입니다.
i:integer;
a:Array [1..255] of TSmallintArray;
begin
for i:=1 to 255 do
begin
A[i]:=TSmallIntArray.Create(0,0);
A[i].AutoSize:=false;
A[i].Capacity:=30000;
end;
end;
이렇게 실행을 하면 Capacity 부분에서 그림과 같은 에러가 떨어집니다.
ELowCapacityError With message
''The DecisionCube Capacity is low. please deactivate dimensions or change the data set.'
그런데 이상한건 똑같은 소스가 노트북(인텔싱글코어)에서는 안그러는데 데스크탑(AMD 듀얼코어)에서만 그럽니다.
쓰고 있는 건 Delphi7버전입니다.
하루 종일 왜그럴까 생각해 보고 데스크탑 델파이를 재설치와 델파이 서비스팩 업그레이드도 해보았지만
도무지 감조차 오지 않습니다ㅜ
차이점이라면 CPU가 싱글이냐 듀얼이냐 차이뿐인데ㅜ
아시는 분 조언 부탁합니다.
var
a:TSmallintArray;
begin
A:=TSmallIntArray.Create(0,0);
A.AutoSize:=false;
A.Capacity:=30000;
end;
이 경우도 마찬가지입니다.
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."
As a result, the DecisionCube cannot be activated.
Exception class: ELowCapacityError
Message: "The DecisionCube capacity is low. Please deactivate dimensions or change the data set."
As a result, the DecisionCube cannot be activated.
Steps:
1. Open the DecisionCube's data set. This will trigger the bug.
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
1. Open the DecisionCube's data set. This will trigger the bug.
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
As a workaround, add a unit with the following code to your 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.
-------------------------------------------------------------------------------}
{-------------------------------------------------------------------------------
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.
응? 블로그 구조가 바뀐거죵???
입구가 바뀌어서 깜딱 놀래부렀다능...ㅎㅎㅎ
(아닌가 긴가 막 이래요 -_-;;)
그리움님, 저 감기걸려버렸어요 ㅠ_ㅠ
날 선선하니까 꼭 잘 챙겨 입으시고~ 감기따윈! 걸리시면 안되요~
즐거운 하루 되시고요~^^
커버(?)라는 기능이 있어서 그걸로 바꿔봤어요 ^^
헛.. 감기.... 요즘처럼 아침엔 덥고 밤에 쌀쌀한 날씨엔 더욱 조심하셔야죠! 얼렁 화이팅 하세요!
오늘 작성하신 포스팅도 너무 먹음직스럽다는..
아침에는 명이님 블로그 방문 제한을 -,.-;