많은 계산을 처리하기 위해 하나의 Delphi XE2 프로젝트가 있습니다.
내 프로젝트에서 총 1290 번호는 Edit
, 숫자는 Label
, 숫자는 Panel
, 숫자는 TabSheet
입니다. Edit
각각에 대해 OnChange
, OnDblClick
, OnEnter
및 OnExit
이벤트가 있습니다.Delphi 메모리 부족 오류를 어떻게 해결합니까?
나는 총 1034 개의 숫자를 Variable
으로 처리해야합니다. 방금 Form
을 설계했지만 계산 논리를 추가하지 않았습니다. 이제 .pas file
은 62.5MB
이되어 1815057 라인 인과 .dfm file
이 1.98 MB
이되어 65540 라인 인이됩니다.
Windows XP Professional SP3 32Bit
아래 Delphi XE2
을 사용하여 프로젝트를 컴파일하려고하는데 오류가 **[DCC Fatal Error] Unit1.pas(1815058): F2046 Out of memory**
으로 표시됩니다.
또한 Delphi XE5
을 사용하여 컴파일하려고 시도했습니다. Windows 8 Enterprise 64Bit
아래에서 같은 문제가 발생합니다.
1034 개의 변수를 사용하여 전체 계산 논리를 추가하지 않았습니다. 추가 할 경우 적어도 4200 4200 라인이 .pas file
에 추가됩니다.
음, 무엇을 기대 했습니까? 180 만 줄의 코드가있는 단일 소스 파일이 있습니다. 추상적 인 방법을 배워야합니다. .dfm 파일에 1200 개의 편집 컨트롤을 만들지 마십시오. 런타임에 생성하십시오. 탭 시트가 표시된 경우에만 탭을 만듭니다. 모든 편집에는 단일 OnChange 이벤트 핸들러를 사용하십시오. 'Sender' 매개 변수의 동작을 전환하십시오. 매 옵션 하나 하나를 손으로 코딩하는 대신 행동을 추상화하는 방법을 배워야합니다. 뭔가를 바꾸고 싶을 때 일어나는 일을 상상해보십시오. –
코드가 악취를냅니다. :-) 1.8M LOC가있는 단일 장치는 잘못되어 1290 편집 컨트롤이 있습니다. 사용자가 볼 수있는 방법이 없으므로 항상 존재할 필요가 없습니다. 디자인을 심각하게 재고해야합니다. 실제로 코드를 관리하기 전까지는 오류를 수정하지 않습니다. 당신에게 행운이 있기를 간절히 바란다. 왜냐하면 너는 그것을 필요로하기 때문이다. :-) –
어떻게 프로그램을 만들었습니까? 손으로 직접 작성할 수는 없습니다. 그 코드를 생성하는 프로그램을 작성하셨습니까?해당 프로그램의 아이디어를 가지고 미리 컴파일 단계가 아닌 런타임에 구현하십시오. –