feat(stmate-test): REA MCP(Ghidra) 기성·준공 재검증 — 회차 등록([2→3_KANJUB] · TCOST 이월 · K_ORD) · 누계수량 제한해제 설정 · 금회 단가 = 계약 칸

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-11-14 13:15:42 +09:00
co-authored by Claude Opus 5.5
parent 24b9869a81
commit a9b9163f87
22 changed files with 5173 additions and 13 deletions
@@ -57,7 +57,7 @@
| QTY2(누계) | QTY1×QTY2 > 0 이고 설정 바이트([+0x1068]+0x69) 0 이고 \|QTY2\| > \|QTY1\| 이면 QTY2 = QTY1 → QTY4 = QTY2 − QTY3 | 0x4f4aa4~0x4f4ba0 |
| QTY4(금회) | QTY1×QTY4 > 0 이고 설정 바이트 0 이고 \|QTY3+QTY4\| > \|QTY1\| 이면 QTY4 = QTY1 − QTY3 → QTY2 = QTY3 + QTY4 | 0x4f4bad~0x4f4ceb |
- 설정 바이트 +0x69 의 화면 이름 미확인(「초과 입력 허용」 성격으로 보이나 이름 근거 없음).
- 설정 = TwBoq 필드 +0x1068 `Act_Enabl_OVR6`(TAction · 보기/설정 · AutoCheck) 「누계수량 제한해제 (계약수량 〈 누계수량)」 · 메뉴 N229 · DFM 에 Checked 없음(처음 꺼짐) — §10 참고.
- 편집 뒤 행 금액 다시 셈 0x4fc498 호출(0x4f4cf3).
## 5. 기성 행 금액 — ST_Boq 0x4fc498 (신뢰도 중)
@@ -170,11 +170,11 @@ MROUNDUD 선택값 0 = 버림(08·13번 작업자료).
| 항목 | 상태 |
|---|---|
| 금회 칸(4) 단가 원천 | 미확인 — 회차 등록 복사는 1→2·3 만 |
| ST_Boq 0x456504 칸 인자 뜻 | 미확인 |
| [3_KANJUB] 전회 제잡비 이관 | 미확인 |
| 설정 바이트 +0x69(수량 상한 해제) 이름 | 미확인 |
| 0633~0638 · 0646·0647 열 산식 · 준공금액 원천 | 미확인 |
| 금회 칸(4) 단가 원천 | §10.2 — 단가 칸 = 1(계약) 관찰(중) |
| ST_Boq 0x456504 칸 인자 뜻 | §10.2 — 수량 칸·단가 칸 인자 대응(중) |
| [3_KANJUB] 전회 제잡비 이관 | §10.3 — 회차 등록 때 2→3 복사 · 4 지움(상) |
| 수량 상한 해제 설정 이름 | §10.1 — Act_Enabl_OVR6(상) |
| 0633~0638 · 0646·0647 열 산식 · 준공금액 원천 | §10.4 — 열 = 인쇄 대화 상자가 고른 칸 금액 · 비율·사정·기성고·잔량·준공금액 산식 미발견 |
| 도서할증 행 밑수 PRJLST.LCOST2 의 업무 뜻 | 관찰만(칸 2 노무비 자리) |
| 원본 실행 수치 일치 | 미검증 |
@@ -182,3 +182,56 @@ MROUNDUD 선택값 0 = 버림(08·13번 작업자료).
- evidence/ — 구간별 역어셈블(주석: 가져오기 이름·문자열·상수) · DFM 해독(TWM_KANJUB_K.json · TPM_JAB_K.json)
- scripts/ — pe.py(섹션 대응) · dz.py(주석 역어셈블) · inv.py(VMT·메서드·내보내기) · rsrc.py(RCDATA) · litref.py · strfind.py(문자열·참조) · parse_dfm.py(DFM)
## 10. REA MCP 보강 (rea-agents 6.7.0 + Ghidra 12.1.4, 2026-11-14)
- 방법: Ghidra 헤드리스 자동 분석 + 디컴파일(`procedure_pseudo_code` · `batch_decompile`) · 원본 바이트 쓰기 없음 · 실행 없음.
- Ghidra 함수 경계 한계: Delphi published 메서드(VMT 메서드표로만 닿는 것)는 함수로 잡히지 않음 — ST_KanJub 0x4cdec0 · ST_Boq 0x4fc498 · 0x456504 · 0x4f4a2f 「not_in_procedure」(rea_mcp/*not_*.json). 이 구간은 §1~§7 capstone 판독 유지.
- 대조 결과(일치):
| 대상 | Ghidra 근거 | 결과 |
|---|---|---|
| 행 다시 셈 0x4ce2c8 | rea_mcp/KanJub_0x4ce2c8_row_recalc.ghidra.json | §6.4 와 같음 — 종류 2 누적 · 도서할증 LCOST2 × 율 ÷ 100 · 이윤 − 조정량 · 부가세 1/2/3 · 누계 = 전회 + 금회 |
| 끝전 0x4ce55c | KanJub_0x4ce55c_cut.ghidra.json | 같음 — 공급가액 절사 우선 · 아니면 총공사비 · 총공사비 절사 + 부가세 1택이면 ÷ 상수 후 버림(상수 1.1 은 capstone 0x4ce6b8) |
| 총공사비 계산 0x4ce6c4 | KanJub_0x4ce6c4_calc_jab.ghidra.json | 같음 — `if (9 < ROUND(d) − 1U) break` = 1~10원 남으면 이윤 1 빼고 소계 다음부터 다시 셈 |
| 저장 0x4ca5ac · 0x4cac0c · 0x4caa48 | KanJub_batch_*.ghidra.json | 같음 — COSTW4 ← 열 6 마지막 행 · COSTW3 ← 열 8 · PXXNM · 섹션 지움(vt+0x4c) · FUN_004caa48(4, 금회) · (2, 누계) |
| 회차 등록 0x55a640 | Main_0x55a640_MkBoq.ghidra.c.txt | 같음 — 목표 6(기성) 분기 k_ord 대입 · 원본 PCLASS 4/6/7 갈래 |
### 10.1 수량 상한 해제 설정 (상)
- ST_Boq TwBoq 필드표: +0x1068 = `Act_Enabl_OVR6`. DFM TWBOQ: TAction Category 「보기/설정」 · Caption 「누계수량 제한해제 (계약수량 〈 누계수량)」 · AutoCheck · OnExecute `Act_Enabl_OVR6Execute` · 메뉴 N229 연결.
- 0x4f4af5 · 0x4f4c02 의 `[+0x1068]+0x69` = 이 액션의 체크 상태 바이트(TAction 내부 오프셋 — 이름은 필드표, 바이트 뜻은 AutoCheck 와 맞춰 읽음 · 중).
- 같은 DFM: 메뉴 「계약수량 ⇒ 기성누계수량(100%)」(mQty6All) · 「전체수량 ⇒ 금회수량(전체수량 적용)」(mQtyDevd, 숨김).
### 10.2 금회 칸 단가 (중)
- ST_Boq 0x4e4967~0x4e4a59: 열기 때 전역 [0x541898] = 1 · [0x541894] = 1 · [0x54189c] = 1 → PCLASS 3 이면 [0x541898] = [0x541894] = 2 · PCLASS 6 이면 [0x541894] = 4 만 바꿈([0x541898] = 1 유지) · PCLASS 7 이면 [0x541894] = IIF(K_ORD−1 < 4, K_ORD+1, 2).
- 행 금액 0x4fc674(PCLASS 6): 0x456504(…, 편집 칸, [0x541894], [0x541898], …) — 0x456504 머리 0x4565ad~0x4565e6: 수량 칸 = IIF(인자 c = 0, 순번, 인자 d) → `'QTY' + 칸 글자`.
- IIF 인자 순서(stdcall — 둘째로 넣은 값 = 참): ST_Boq 0x4e49c4 `IIF(K_ORD−1 < 4, K_ORD+1, 2)` 가 변경 차수 칸 규칙과 맞음.
- 읽음: 기성 프로젝트 편집 칸 = 4(금회) · 단가 칸 인자 = 1(계약). 누계 다시 셈 0x4fce6e 의 단가 칸 인자 = IIF(PR·%·Q 행, 2, 1). 인자 e 가 단가 칸이라는 대응은 호출 짝으로 읽은 것(0x44019c 안쪽 미해독) — 신뢰도 중.
### 10.3 [3_KANJUB] 전회 제잡비 (상)
- 섹션 복사 함수 Main 0x455e68(메모, 원본 칸 글자, 대상 칸 문자열, …, 지울 칸 문자열): PRJ_MEMO.INI 로 풀어 원본 `n_KANJUB` 키를 읽고 → 대상 `m_KANJUB` 섹션 지움(vt+0x4c) → 키 첫 글자를 대상 칸으로 바꿔 기록(0x456128~0x4562b5) · KANJUB_ADD 의 칸 꼬리 키도 복사 · 끝에 지울 칸 문자열의 '1'~'4' 마다 `n_KANJUB` EraseSection(0x45676b~0x4567c0) · KANJUB_ADD 의 그 칸 값 '0'(0x4564e8).
- 회차 등록 목표 6(기성) 갈래(0x55b287~0x55b3cb, Ghidra 같음):
| 원본 PCLASS | 섹션 처리 | PRJLST |
|---|---|---|
| 4 계약 | 0x455e68(src '1' → '1', 지움 '234') | k_ord = 1 |
| 6 기성 | 0x455e68(src '2' → '3', 지움 '4') | TCOST3 ← TCOST2 · TCOST4 = 0 · 뒤 0x55d1d3 k_ord = K+1 |
| 7 변경 | 0x455e68(src 차수 칸 → '1', …) · (src '4' → '3') 등 | 세부 미정리 |
- 따라서 전회 제잡비 [3_KANJUB] 는 다음 회차 등록 때 앞 회차 누계 [2_KANJUB] 를 복사해 채움 · 금회 [4_KANJUB] 는 지워진 채 시작.
### 10.4 인쇄 열 계산 (0633~0638 · 0646·0647)
- ST_P_Nae `Prn_Jab` 0x4b1998 → 양식 `TPM_Jab`(DFM 머리 「총 괄 설 계 내 역 서」를 서식 이름으로 바꿔 씀 · 자료 PRT.DBF) · 띠 출력 0x4b2600: 열 k 의 금액 = `T_AMT`/`M_AMT`/`L_AMT`/`S_AMT` + 칸 글자, 칸 = 설정 배열 [+0x1788 + k] (0x4b285c~0x4b29e1).
- 칸 배열은 ST_Prt 인쇄 대화 상자에서 채움 — 0x4b6b14~0x4b6b40 이 전역 0x4d5498(6바이트)을 +0x1788 로 복사 · 0x4a27c0 이 대화 상자 선택값으로 0x4d5498 을 채움(당초·변경 칸 1·2 갈래 관찰).
- 관찰: Prn_Jab · TPM_Jab 띠 출력에 금액 나눗셈(비율) · 사정 · 잔량 연산 없음(나눗셈은 배치 폭 2.0 · 376.0 뿐). 0632(TPM_JAB_K) 만 비율 연산 있음(§2).
- 0635 비율 · 0636/0637 기성고(%) · 0638 기성(%)·잔량 · 0634 사정 · 0646/0647 준공금액 의 산식 원천은 이번 범위에서 미발견. 서식별 기본 칸 배열(어느 열이 어느 칸)도 미확정.
- 관련 관찰: ST_P_ConEst TPM_NAE_C3 0x479007~0x479158 — 머리 문구 IIF([0x4aa738] = 1, 「◎ 준공 정산액 :」, 「◎ 기성부분금액 :」)(IIF 순서 §10.2) · 금액 = PRJLST `TCOST` + 첫 열 칸 글자(설정 +0x1788).
### 10.5 자료
- rea_mcp/ — Ghidra 결과 JSON(evidence_id 포함) · MkBoq 디컴파일 본문.
- evidence/ 추가 — Main_0x455e68_kanjub_section_copy · Main_0x55b0b5_registration_kanjub_branch · Boq_0x4e4920_qty_price_slot_globals · Boq_0x456504_row_calc_head · Nae_0x4b285c_TPM_Jab_column_slot · Prt_0x4b6b14_column_slot_array · ConEst_0x479007_jungong_label · TPM_JAB.json.
@@ -0,0 +1,80 @@
456504: push ebp
456505: mov ebp, esp
456507: push ecx
456508: mov ecx, 0x46
45650d: push 0
45650f: push 0
456511: dec ecx
456512: jne 0x45650d
456514: push ecx
456515: xchg dword ptr [ebp - 4], ecx
456518: push ebx
456519: push esi
45651a: push edi
45651b: mov byte ptr [ebp - 2], cl
45651e: mov edi, edx
456520: mov byte ptr [ebp - 1], al
456523: mov ebx, dword ptr [ebp + 8]
456526: xor eax, eax
456528: push ebp
456529: push 0x456efa
45652e: push dword ptr fs:[eax]
456531: mov dword ptr fs:[eax], esp
456534: cmp byte ptr [ebp - 1], 0
456538: je 0x456638
45653e: mov esi, 1
456543: lea eax, [ebx + 0x130]
456549: mov dword ptr [ebp - 8], eax
45654c: push esi
45654d: push edi
45654e: mov esi, 0x456f0c
456553: lea edi, [ebp - 0x30]
456556: mov ecx, 8
45655b: rep movsd dword ptr es:[edi], dword ptr [esi]
45655d: pop edi
45655e: pop esi
45655f: mov eax, esi
456561: cmp eax, 0xff
456566: ja 0x45656c
456568: bts dword ptr [ebp - 0x30], eax
45656c: mov eax, dword ptr [ebp + 0xc]
45656f: cmp eax, 0xff
456574: ja 0x45657a
456576: bt dword ptr [ebp - 0x30], eax
45657a: jae 0x4565f1
45657c: lea eax, [ebp - 0x54]
45657f: mov edx, dword ptr [ebp + 0x10]
456582: mov cl, 0xfc
456584: call 0x401368 ; rtl60!@System@@VarFromInt$qqrr14System@Variantxixi
456589: push dword ptr [ebp - 0x48]
45658c: push dword ptr [ebp - 0x4c]
45658f: push dword ptr [ebp - 0x50]
456592: push dword ptr [ebp - 0x54]
456595: lea eax, [ebp - 0x64]
456598: mov edx, esi
45659a: mov cl, 0xfc
45659c: call 0x401368 ; rtl60!@System@@VarFromInt$qqrr14System@Variantxixi
4565a1: push dword ptr [ebp - 0x58]
4565a4: push dword ptr [ebp - 0x5c]
4565a7: push dword ptr [ebp - 0x60]
4565aa: push dword ptr [ebp - 0x64]
4565ad: cmp dword ptr [ebp + 0xc], 0
4565b1: sete al
4565b4: push eax
4565b5: lea eax, [ebp - 0x44]
4565b8: push eax
4565b9: call 0x42b2f8 ; DP_COMMON!IIF
4565be: lea eax, [ebp - 0x44]
4565c1: call 0x401350 ; rtl60!@System@@VarToReal$qqrrx14System@Variant
4565c6: call 0x401068 ; rtl60!@System@@ROUND$qqrv
4565cb: mov edx, dword ptr [0x52e784]
4565d1: mov ecx, dword ptr [edx + eax*4]
4565d4: lea eax, [ebp - 0x34]
4565d7: mov edx, 0x456f34 ; 'QTY'
4565dc: call 0x401270 ; rtl60!@System@@LStrCat3$qqrv
4565e1: mov edx, dword ptr [ebp - 0x34]
4565e4: mov eax, edi
4565e6: call 0x403ab0 ; Apollo5D6!@Apodset@TApolloTable@GetDouble$qqr17System@AnsiString
4565eb: mov eax, dword ptr [ebp - 8]
4565ee: fstp qword ptr [eax]
4565f0: wait
@@ -0,0 +1,63 @@
4e4920: .byte 0xff
4e4921: .byte 0xff
4e4922: .byte 0xff
4e4923: call 0x401340 ; rtl60!@System@@VarToInt$qqrrx14System@Variant
4e4928: mov edx, dword ptr [0x5417b8]
4e492e: mov dword ptr [edx + 0x118c], eax
4e4934: jmp 0x4e4967 ; '�'
4e4936: mov eax, dword ptr [0x5417b8]
4e493b: mov dword ptr [eax + 0x118c], 1
4e4945: jmp 0x4e4967 ; '�'
4e4947: mov eax, dword ptr [0x5417b8]
4e494c: mov dword ptr [eax + 0x118c], 1
4e4956: jmp 0x4e4967 ; '�'
4e4958: mov eax, dword ptr [0x5417b8]
4e495d: mov dword ptr [eax + 0x118c], 1
4e4967: mov dword ptr [0x541898], 1
4e4971: mov dword ptr [0x541894], 1
4e497b: mov dword ptr [0x54189c], 1
4e4985: mov eax, dword ptr [0x5417bc]
4e498a: sub eax, 3
4e498d: je 0x4e499c
4e498f: sub eax, 3
4e4992: je 0x4e49b5
4e4994: dec eax
4e4995: je 0x4e49c4
4e4997: jmp 0x4e4a45
4e499c: mov dword ptr [0x541898], 2
4e49a6: mov dword ptr [0x541894], 2
4e49b0: jmp 0x4e4a59 ; '�'
4e49b5: mov dword ptr [0x541894], 4
4e49bf: jmp 0x4e4a59 ; '�'
4e49c4: lea eax, [ebp - 0xfc]
4e49ca: mov edx, 2
4e49cf: mov cl, 1
4e49d1: call 0x401368 ; rtl60!@System@@VarFromInt$qqrr14System@Variantxixi
4e49d6: push dword ptr [ebp - 0xf0]
4e49dc: push dword ptr [ebp - 0xf4]
4e49e2: push dword ptr [ebp - 0xf8]
4e49e8: push dword ptr [ebp - 0xfc]
4e49ee: lea eax, [ebp - 0x10c]
4e49f4: mov edx, dword ptr [0x5417c0]
4e49fa: inc edx
4e49fb: mov cl, 0xfc
4e49fd: call 0x401368 ; rtl60!@System@@VarFromInt$qqrr14System@Variantxixi
4e4a02: push dword ptr [ebp - 0x100]
4e4a08: push dword ptr [ebp - 0x104]
4e4a0e: push dword ptr [ebp - 0x108]
4e4a14: push dword ptr [ebp - 0x10c]
4e4a1a: mov eax, dword ptr [0x5417c0]
4e4a1f: dec eax
4e4a20: sub eax, 4
4e4a23: setb al
4e4a26: push eax
4e4a27: lea eax, [ebp - 0xec]
4e4a2d: push eax
4e4a2e: call 0x42b2f8 ; DP_COMMON!IIF
4e4a33: lea eax, [ebp - 0xec]
4e4a39: call 0x401340 ; rtl60!@System@@VarToInt$qqrrx14System@Variant
4e4a3e: mov dword ptr [0x541894], eax
4e4a43: jmp 0x4e4a59 ; '�'
4e4a45: mov dword ptr [0x541898], 1
4e4a4f: mov dword ptr [0x541894], 1
4e4a59: cmp dword ptr [0x5417bc], 5
@@ -0,0 +1,70 @@
479007: lea eax, [ebp - 0x490]
47900d: mov edx, 0x479998 ; 'TCOST'
479012: call 0x401350
479017: lea eax, [ebp - 0x490]
47901d: push eax
47901e: mov al, 0x32
479020: mov byte ptr [ebp - 0x413], al
479026: mov byte ptr [ebp - 0x414], 1
47902d: lea eax, [ebp - 0x4b0]
479033: lea edx, [ebp - 0x414]
479039: call 0x401348
47903e: push dword ptr [ebp - 0x4a4]
479044: push dword ptr [ebp - 0x4a8]
47904a: push dword ptr [ebp - 0x4ac]
479050: push dword ptr [ebp - 0x4b0]
479056: lea eax, [ebp - 0x4c0]
47905c: mov edx, dword ptr [0x486740]
479062: mov edx, dword ptr [edx]
479064: movsx edx, byte ptr [edx + 0x1788]
47906b: mov ecx, dword ptr [0x48682c]
479071: mov edx, dword ptr [ecx + edx*4]
479074: call 0x401350
479079: push dword ptr [ebp - 0x4b4]
47907f: push dword ptr [ebp - 0x4b8]
479085: push dword ptr [ebp - 0x4bc]
47908b: push dword ptr [ebp - 0x4c0]
479091: cmp dword ptr [0x4aa738], 1
479098: sete al
47909b: push eax
47909c: lea eax, [ebp - 0x4a0]
4790a2: push eax
4790a3: call 0x43768c ; DP_COMMON!IIF
4790a8: lea edx, [ebp - 0x4a0]
4790ae: pop eax
4790af: call 0x401358
4790b4: lea edx, [ebp - 0x490]
4790ba: lea eax, [ebp - 0x480]
4790c0: call 0x401310
4790c5: mov edx, dword ptr [ebp - 0x480]
4790cb: mov eax, dword ptr [0x486914]
4790d0: mov eax, dword ptr [eax]
4790d2: mov eax, dword ptr [eax + 0x20]
4790d5: call 0x402cb0 ; Apollo5D6!@Apodset@TApolloTable@GetDouble$qqr17System@AnsiString
4790da: fstp qword ptr [ebp - 0x18]
4790dd: wait
4790de: lea eax, [ebp - 0x4e0]
4790e4: mov edx, 0x4799e4 ; '◎ 기성부분금액 : '
4790e9: call 0x401350
4790ee: push dword ptr [ebp - 0x4d4]
4790f4: push dword ptr [ebp - 0x4d8]
4790fa: push dword ptr [ebp - 0x4dc]
479100: push dword ptr [ebp - 0x4e0]
479106: lea eax, [ebp - 0x4f0]
47910c: mov edx, 0x479a00 ; '◎ 준공 정산액 : '
479111: call 0x401350
479116: push dword ptr [ebp - 0x4e4]
47911c: push dword ptr [ebp - 0x4e8]
479122: push dword ptr [ebp - 0x4ec]
479128: push dword ptr [ebp - 0x4f0]
47912e: cmp dword ptr [0x4aa738], 1
479135: sete al
479138: push eax
479139: lea eax, [ebp - 0x4d0]
47913f: push eax
479140: call 0x43768c ; DP_COMMON!IIF
479145: lea edx, [ebp - 0x4d0]
47914b: mov eax, dword ptr [ebp - 0x20]
47914e: mov eax, dword ptr [eax]
479150: mov ecx, dword ptr [eax]
479152: call dword ptr [ecx + 0xc4]
@@ -0,0 +1,813 @@
455e68: push ebp
455e69: mov ebp, esp
455e6b: push ecx
455e6c: mov ecx, 0x51
455e71: push 0
455e73: push 0
455e75: dec ecx
455e76: jne 0x455e71
455e78: xchg dword ptr [ebp - 4], ecx
455e7b: push ebx
455e7c: push esi
455e7d: push edi
455e7e: mov dword ptr [ebp - 0xc], ecx
455e81: mov byte ptr [ebp - 5], dl
455e84: mov dword ptr [ebp - 4], eax
455e87: mov eax, dword ptr [ebp - 4]
455e8a: call 0x4012c8 ; rtl60!@System@@LStrAddRef$qqrpv
455e8f: mov eax, dword ptr [ebp - 0xc]
455e92: call 0x4012c8 ; rtl60!@System@@LStrAddRef$qqrpv
455e97: mov eax, dword ptr [ebp + 0x14]
455e9a: call 0x4012c8 ; rtl60!@System@@LStrAddRef$qqrpv
455e9f: xor eax, eax
455ea1: push ebp
455ea2: push 0x456963
455ea7: push dword ptr fs:[eax]
455eaa: mov dword ptr fs:[eax], esp
455ead: mov eax, dword ptr [ebp + 8]
455eb0: mov edx, dword ptr [ebp - 4]
455eb3: call 0x401260 ; rtl60!@System@@LStrAsg$qqrpvpxv
455eb8: lea edx, [ebp - 0x1f4]
455ebe: mov eax, dword ptr [ebp - 4]
455ec1: call 0x401e30 ; rtl60!@Sysutils@Trim$qqrx17System@AnsiString
455ec6: cmp dword ptr [ebp - 0x1f4], 0
455ecd: je 0x455f0a
455ecf: cmp dword ptr [ebp + 0x10], 4
455ed3: je 0x455f46
455ed5: lea eax, [ebp - 0x1f8]
455edb: mov dl, byte ptr [ebp - 5]
455ede: call 0x401278 ; rtl60!@System@@LStrFromChar$qqrr17System@AnsiStringc
455ee3: mov eax, dword ptr [ebp - 0x1f8]
455ee9: mov edx, dword ptr [ebp - 0xc]
455eec: call 0x4012c0 ; rtl60!@System@@LStrCmp$qqrv
455ef1: jne 0x455f46
455ef3: lea edx, [ebp - 0x1fc]
455ef9: mov eax, dword ptr [ebp + 0x14]
455efc: call 0x401e30 ; rtl60!@Sysutils@Trim$qqrx17System@AnsiString
455f01: cmp dword ptr [ebp - 0x1fc], 0
455f08: jne 0x455f46
455f0a: push 0
455f0c: lea eax, [ebp - 0x200]
455f12: mov edx, dword ptr [0x5e5e7c]
455f18: mov edx, dword ptr [edx]
455f1a: add edx, 0x156d
455f20: call 0x401288 ; rtl60!@System@@LStrFromString$qqrr17System@AnsiStringrx28System@%SmallString$iuc$255%
455f25: lea eax, [ebp - 0x200]
455f2b: mov edx, 0x45697c ; 'PRJ_MEMO.INI'
455f30: call 0x4012a8 ; rtl60!@System@@LStrCat$qqrv
455f35: mov eax, dword ptr [ebp - 0x200]
455f3b: push eax
455f3c: call 0x42297c ; DP_COMMON!DELE_FILE
455f41: jmp 0x45692d
455f46: xor eax, eax
455f48: push ebp
455f49: push 0x45609d
455f4e: push dword ptr fs:[eax]
455f51: mov dword ptr fs:[eax], esp
455f54: lea eax, [ebp - 0x204]
455f5a: mov edx, dword ptr [0x5e5e7c]
455f60: mov edx, dword ptr [edx]
455f62: add edx, 0x156d
455f68: call 0x401288 ; rtl60!@System@@LStrFromString$qqrr17System@AnsiStringrx28System@%SmallString$iuc$255%
455f6d: lea eax, [ebp - 0x204]
455f73: mov edx, 0x45697c ; 'PRJ_MEMO.INI'
455f78: call 0x4012a8 ; rtl60!@System@@LStrCat$qqrv
455f7d: mov edx, dword ptr [ebp - 0x204]
455f83: lea eax, [ebp - 0x1f0]
455f89: call 0x4010a8 ; rtl60!@System@@Assign$qqrr15System@TTextRecx17System@AnsiString
455f8e: lea eax, [ebp - 0x1f0]
455f94: call 0x401098 ; rtl60!@System@@RewritText$qqrr15System@TTextRec
455f99: call 0x401038 ; rtl60!@System@@_IOTest$qqrv
455f9e: jmp 0x456052
455fa3: lea eax, [ebp - 0x208]
455fa9: push eax
455faa: mov edx, dword ptr [ebp - 4]
455fad: mov eax, 0x456994 ; '\r'
455fb2: call 0x401300 ; rtl60!@System@@LStrPos$qqrv
455fb7: mov ecx, eax
455fb9: dec ecx
455fba: mov edx, 1
455fbf: mov eax, dword ptr [ebp - 4]
455fc2: call 0x4012e8 ; rtl60!@System@@LStrCopy$qqrv
455fc7: mov edx, dword ptr [ebp - 0x208]
455fcd: lea eax, [ebp - 0x1f0]
455fd3: call 0x401318 ; rtl60!@System@@Write0LString$qqrr15System@TTextRecx17System@AnsiString
455fd8: call 0x401110 ; rtl60!@System@@WriteLn$qqrr15System@TTextRec
455fdd: call 0x401038 ; rtl60!@System@@_IOTest$qqrv
455fe2: mov edx, dword ptr [ebp - 4]
455fe5: mov eax, 0x456994 ; '\r'
455fea: call 0x401300 ; rtl60!@System@@LStrPos$qqrv
455fef: mov ebx, eax
455ff1: mov edx, dword ptr [ebp - 4]
455ff4: mov eax, 0x4569a0 ; '\r\n'
455ff9: call 0x401300 ; rtl60!@System@@LStrPos$qqrv
455ffe: cmp ebx, eax
456000: jne 0x45602c
456002: lea eax, [ebp - 4]
456005: push eax
456006: mov edx, dword ptr [ebp - 4]
456009: mov eax, 0x456994 ; '\r'
45600e: call 0x401300 ; rtl60!@System@@LStrPos$qqrv
456013: add eax, 2
456016: push eax
456017: mov eax, dword ptr [ebp - 4]
45601a: call 0x4012a0 ; rtl60!@System@@LStrLen$qqrx17System@AnsiString
45601f: mov ecx, eax
456021: mov eax, dword ptr [ebp - 4]
456024: pop edx
456025: call 0x4012e8 ; rtl60!@System@@LStrCopy$qqrv
45602a: jmp 0x456052
45602c: lea eax, [ebp - 4]
45602f: push eax
456030: mov edx, dword ptr [ebp - 4]
456033: mov eax, 0x456994 ; '\r'
456038: call 0x401300 ; rtl60!@System@@LStrPos$qqrv
45603d: inc eax
45603e: push eax
45603f: mov eax, dword ptr [ebp - 4]
456042: call 0x4012a0 ; rtl60!@System@@LStrLen$qqrx17System@AnsiString
456047: mov ecx, eax
456049: mov eax, dword ptr [ebp - 4]
45604c: pop edx
45604d: call 0x4012e8 ; rtl60!@System@@LStrCopy$qqrv
456052: mov edx, dword ptr [ebp - 4]
456055: mov eax, 0x456994 ; '\r'
45605a: call 0x401300 ; rtl60!@System@@LStrPos$qqrv
45605f: test eax, eax
456061: jg 0x455fa3
456067: mov edx, dword ptr [ebp - 4]
45606a: lea eax, [ebp - 0x1f0]
456070: call 0x401318 ; rtl60!@System@@Write0LString$qqrr15System@TTextRecx17System@AnsiString
456075: call 0x401110 ; rtl60!@System@@WriteLn$qqrr15System@TTextRec
45607a: call 0x401038 ; rtl60!@System@@_IOTest$qqrv
45607f: xor eax, eax
456081: pop edx
456082: pop ecx
456083: pop ecx
456084: mov dword ptr fs:[eax], edx
456087: push 0x4560a4
45608c: lea eax, [ebp - 0x1f0]
456092: call 0x4010b0 ; rtl60!@System@@Close$qqrr15System@TTextRec
456097: call 0x401038 ; rtl60!@System@@_IOTest$qqrv
45609c: ret
45609d: jmp 0x401200 ; rtl60!@System@@HandleFinally$qqrv
4560a2: jmp 0x45608c
4560a4: lea eax, [ebp - 0x20c]
4560aa: mov edx, dword ptr [0x5e5e7c]
4560b0: mov edx, dword ptr [edx]
4560b2: add edx, 0x156d
4560b8: call 0x401288 ; rtl60!@System@@LStrFromString$qqrr17System@AnsiStringrx28System@%SmallString$iuc$255%
4560bd: lea eax, [ebp - 0x20c]
4560c3: mov edx, 0x45697c ; 'PRJ_MEMO.INI'
4560c8: call 0x4012a8 ; rtl60!@System@@LStrCat$qqrv
4560cd: mov ecx, dword ptr [ebp - 0x20c]
4560d3: mov dl, 1
4560d5: mov eax, dword ptr [0x5fe630] ; [rtl60!@Inifiles@TIniFile@]
4560da: call 0x404248 ; rtl60!@Inifiles@TCustomIniFile@$bctr$qqrx17System@AnsiString
4560df: mov dword ptr [ebp - 0x20], eax
4560e2: xor eax, eax
4560e4: push ebp
4560e5: push 0x4568ef
4560ea: push dword ptr fs:[eax]
4560ed: mov dword ptr fs:[eax], esp
4560f0: mov dl, 1
4560f2: mov eax, dword ptr [0x5fd800] ; [rtl60!@Classes@TStringList@]
4560f7: call 0x401170 ; rtl60!@System@TObject@$bctr$qqrv
4560fc: mov dword ptr [ebp - 0x10], eax
4560ff: mov dl, 1
456101: mov eax, dword ptr [0x5fd800] ; [rtl60!@Classes@TStringList@]
456106: call 0x401170 ; rtl60!@System@TObject@$bctr$qqrv
45610b: mov dword ptr [ebp - 0x14], eax
45610e: mov eax, dword ptr [ebp - 0xc]
456111: call 0x4012a0 ; rtl60!@System@@LStrLen$qqrx17System@AnsiString
456116: test eax, eax
456118: jle 0x456524
45611e: mov dword ptr [ebp - 0x24], eax
456121: mov dword ptr [ebp - 0x1c], 1
456128: mov eax, dword ptr [ebp - 0xc]
45612b: mov edx, dword ptr [ebp - 0x1c]
45612e: mov al, byte ptr [eax + edx - 1]
456132: cmp al, byte ptr [ebp - 5]
456135: je 0x456518
45613b: mov eax, dword ptr [ebp - 0x10]
45613e: mov edx, dword ptr [eax]
456140: call dword ptr [edx + 0x44]
456143: lea eax, [ebp - 0x210]
456149: mov dl, byte ptr [ebp - 5]
45614c: call 0x401278 ; rtl60!@System@@LStrFromChar$qqrr17System@AnsiStringc
456151: lea eax, [ebp - 0x210]
456157: mov edx, 0x4569ac ; '_KANJUB'
45615c: call 0x4012a8 ; rtl60!@System@@LStrCat$qqrv
456161: mov edx, dword ptr [ebp - 0x210]
456167: mov ecx, dword ptr [ebp - 0x10]
45616a: mov eax, dword ptr [ebp - 0x20]
45616d: mov ebx, dword ptr [eax]
45616f: call dword ptr [ebx + 0x40]
456172: lea eax, [ebp - 0x214]
456178: mov edx, dword ptr [ebp - 0xc]
45617b: mov ecx, dword ptr [ebp - 0x1c]
45617e: mov dl, byte ptr [edx + ecx - 1]
456182: call 0x401278 ; rtl60!@System@@LStrFromChar$qqrr17System@AnsiStringc
456187: lea eax, [ebp - 0x214]
45618d: mov edx, 0x4569ac ; '_KANJUB'
456192: call 0x4012a8 ; rtl60!@System@@LStrCat$qqrv
456197: mov edx, dword ptr [ebp - 0x214]
45619d: mov eax, dword ptr [ebp - 0x20]
4561a0: mov ecx, dword ptr [eax]
4561a2: call dword ptr [ecx + 0x4c]
4561a5: mov eax, dword ptr [ebp - 0x10]
4561a8: mov edx, dword ptr [eax]
4561aa: call dword ptr [edx + 0x14]
4561ad: mov esi, eax
4561af: dec esi
4561b0: test esi, esi
4561b2: jl 0x4562bd
4561b8: inc esi
4561b9: xor ebx, ebx
4561bb: push 0
4561bd: lea eax, [ebp - 0x218]
4561c3: push eax
4561c4: lea ecx, [ebp - 0x21c]
4561ca: mov edx, ebx
4561cc: mov eax, dword ptr [ebp - 0x10]
4561cf: mov edi, dword ptr [eax]
4561d1: call dword ptr [edi + 0xc]
4561d4: mov eax, dword ptr [ebp - 0x21c]
4561da: push eax
4561db: lea eax, [ebp - 0x220]
4561e1: mov dl, byte ptr [ebp - 5]
4561e4: call 0x401278 ; rtl60!@System@@LStrFromChar$qqrr17System@AnsiStringc
4561e9: lea eax, [ebp - 0x220]
4561ef: mov edx, 0x4569ac ; '_KANJUB'
4561f4: call 0x4012a8 ; rtl60!@System@@LStrCat$qqrv
4561f9: mov edx, dword ptr [ebp - 0x220]
4561ff: mov eax, dword ptr [ebp - 0x20]
456202: pop ecx
456203: mov edi, dword ptr [eax]
456205: call dword ptr [edi]
456207: mov eax, dword ptr [ebp - 0x218]
45620d: push eax
45620e: lea eax, [ebp - 0x224]
456214: mov edx, dword ptr [ebp - 0xc]
456217: mov ecx, dword ptr [ebp - 0x1c]
45621a: mov dl, byte ptr [edx + ecx - 1]
45621e: call 0x401278 ; rtl60!@System@@LStrFromChar$qqrr17System@AnsiStringc
456223: lea eax, [ebp - 0x224]
456229: push eax
45622a: lea eax, [ebp - 0x228]
456230: push eax
456231: lea ecx, [ebp - 0x22c]
456237: mov edx, ebx
456239: mov eax, dword ptr [ebp - 0x10]
45623c: mov edi, dword ptr [eax]
45623e: call dword ptr [edi + 0xc]
456241: mov eax, dword ptr [ebp - 0x22c]
456247: call 0x4012a0 ; rtl60!@System@@LStrLen$qqrx17System@AnsiString
45624c: push eax
45624d: lea ecx, [ebp - 0x230]
456253: mov edx, ebx
456255: mov eax, dword ptr [ebp - 0x10]
456258: mov edi, dword ptr [eax]
45625a: call dword ptr [edi + 0xc]
45625d: mov eax, dword ptr [ebp - 0x230]
456263: mov edx, 2
456268: pop ecx
456269: call 0x4012e8 ; rtl60!@System@@LStrCopy$qqrv
45626e: mov edx, dword ptr [ebp - 0x228]
456274: pop eax
456275: call 0x4012a8 ; rtl60!@System@@LStrCat$qqrv
45627a: mov eax, dword ptr [ebp - 0x224]
456280: push eax
456281: lea eax, [ebp - 0x234]
456287: mov edx, dword ptr [ebp - 0xc]
45628a: mov ecx, dword ptr [ebp - 0x1c]
45628d: mov dl, byte ptr [edx + ecx - 1]
456291: call 0x401278 ; rtl60!@System@@LStrFromChar$qqrr17System@AnsiStringc
456296: lea eax, [ebp - 0x234]
45629c: mov edx, 0x4569ac ; '_KANJUB'
4562a1: call 0x4012a8 ; rtl60!@System@@LStrCat$qqrv
4562a6: mov edx, dword ptr [ebp - 0x234]
4562ac: mov eax, dword ptr [ebp - 0x20]
4562af: pop ecx
4562b0: mov edi, dword ptr [eax]
4562b2: call dword ptr [edi + 4]
4562b5: inc ebx
4562b6: dec esi
4562b7: jne 0x4561bb
4562bd: mov eax, dword ptr [ebp - 0x10]
4562c0: mov edx, dword ptr [eax]
4562c2: call dword ptr [edx + 0x44]
4562c5: mov eax, dword ptr [ebp - 0x14]
4562c8: mov edx, dword ptr [eax]
4562ca: call dword ptr [edx + 0x44]
4562cd: mov ecx, dword ptr [ebp - 0x10]
4562d0: mov edx, 0x4569bc ; 'KANJUB_ADD'
4562d5: mov eax, dword ptr [ebp - 0x20]
4562d8: mov ebx, dword ptr [eax]
4562da: call dword ptr [ebx + 0x40]
4562dd: mov ecx, dword ptr [ebp - 0x14]
4562e0: mov edx, 0x4569bc ; 'KANJUB_ADD'
4562e5: mov eax, dword ptr [ebp - 0x20]
4562e8: mov ebx, dword ptr [eax]
4562ea: call dword ptr [ebx + 0x48]
4562ed: mov eax, dword ptr [ebp - 0x10]
4562f0: mov edx, dword ptr [eax]
4562f2: call dword ptr [edx + 0x14]
4562f5: mov esi, eax
4562f7: dec esi
4562f8: test esi, esi
4562fa: jl 0x456518
456300: inc esi
456301: xor ebx, ebx
456303: lea ecx, [ebp - 0x238]
456309: mov edx, ebx
45630b: mov eax, dword ptr [ebp - 0x10]
45630e: mov edi, dword ptr [eax]
456310: call dword ptr [edi + 0xc]
456313: mov eax, dword ptr [ebp - 0x238]
456319: push eax
45631a: push 0x4569d0 ; 'ADD_AMT_'
45631f: call 0x4228cc ; DP_COMMON!MPOS
456324: test al, al
456326: je 0x456510
45632c: lea eax, [ebp - 0x23c]
456332: push eax
456333: lea ecx, [ebp - 0x240]
456339: mov edx, ebx
45633b: mov eax, dword ptr [ebp - 0x10]
45633e: mov edi, dword ptr [eax]
456340: call dword ptr [edi + 0xc]
456343: mov eax, dword ptr [ebp - 0x240]
456349: call 0x4012a0 ; rtl60!@System@@LStrLen$qqrx17System@AnsiString
45634e: push eax
45634f: lea ecx, [ebp - 0x244]
456355: mov edx, ebx
456357: mov eax, dword ptr [ebp - 0x10]
45635a: mov edi, dword ptr [eax]
45635c: call dword ptr [edi + 0xc]
45635f: mov eax, dword ptr [ebp - 0x244]
456365: mov ecx, 1
45636a: pop edx
45636b: call 0x4012e8 ; rtl60!@System@@LStrCopy$qqrv
456370: mov eax, dword ptr [ebp - 0x23c]
456376: push eax
456377: lea eax, [ebp - 0x248]
45637d: mov dl, byte ptr [ebp - 5]
456380: call 0x401278 ; rtl60!@System@@LStrFromChar$qqrr17System@AnsiStringc
456385: mov edx, dword ptr [ebp - 0x248]
45638b: pop eax
45638c: call 0x4012c0 ; rtl60!@System@@LStrCmp$qqrv
456391: jne 0x456480
456397: lea eax, [ebp - 0x24c]
45639d: push eax
45639e: lea ecx, [ebp - 0x250]
4563a4: mov edx, ebx
4563a6: mov eax, dword ptr [ebp - 0x14]
4563a9: mov edi, dword ptr [eax]
4563ab: call dword ptr [edi + 0xc]
4563ae: mov eax, dword ptr [ebp - 0x250]
4563b4: call 0x4012a0 ; rtl60!@System@@LStrLen$qqrx17System@AnsiString
4563b9: push eax
4563ba: lea ecx, [ebp - 0x254]
4563c0: mov edx, ebx
4563c2: mov eax, dword ptr [ebp - 0x14]
4563c5: mov edi, dword ptr [eax]
4563c7: call dword ptr [edi + 0xc]
4563ca: mov edx, dword ptr [ebp - 0x254]
4563d0: mov eax, 0x4569e4 ; '='
4563d5: call 0x401300 ; rtl60!@System@@LStrPos$qqrv
4563da: inc eax
4563db: push eax
4563dc: lea ecx, [ebp - 0x258]
4563e2: mov edx, ebx
4563e4: mov eax, dword ptr [ebp - 0x14]
4563e7: mov edi, dword ptr [eax]
4563e9: call dword ptr [edi + 0xc]
4563ec: mov eax, dword ptr [ebp - 0x258]
4563f2: pop edx
4563f3: pop ecx
4563f4: call 0x4012e8 ; rtl60!@System@@LStrCopy$qqrv
4563f9: mov eax, dword ptr [ebp - 0x24c]
4563ff: push eax
456400: lea eax, [ebp - 0x25c]
456406: push eax
456407: lea ecx, [ebp - 0x260]
45640d: mov edx, ebx
45640f: mov eax, dword ptr [ebp - 0x10]
456412: mov edi, dword ptr [eax]
456414: call dword ptr [edi + 0xc]
456417: mov eax, dword ptr [ebp - 0x260]
45641d: call 0x4012a0 ; rtl60!@System@@LStrLen$qqrx17System@AnsiString
456422: dec eax
456423: push eax
456424: lea ecx, [ebp - 0x264]
45642a: mov edx, ebx
45642c: mov eax, dword ptr [ebp - 0x10]
45642f: mov edi, dword ptr [eax]
456431: call dword ptr [edi + 0xc]
456434: mov eax, dword ptr [ebp - 0x264]
45643a: mov edx, 1
45643f: pop ecx
456440: call 0x4012e8 ; rtl60!@System@@LStrCopy$qqrv
456445: lea eax, [ebp - 0x25c]
45644b: push eax
45644c: lea eax, [ebp - 0x268]
456452: mov edx, dword ptr [ebp - 0xc]
456455: mov ecx, dword ptr [ebp - 0x1c]
456458: mov dl, byte ptr [edx + ecx - 1]
45645c: call 0x401278 ; rtl60!@System@@LStrFromChar$qqrr17System@AnsiStringc
456461: mov edx, dword ptr [ebp - 0x268]
456467: pop eax
456468: call 0x4012a8 ; rtl60!@System@@LStrCat$qqrv
45646d: mov ecx, dword ptr [ebp - 0x25c]
456473: mov edx, 0x4569bc ; 'KANJUB_ADD'
456478: mov eax, dword ptr [ebp - 0x20]
45647b: mov edi, dword ptr [eax]
45647d: call dword ptr [edi + 4]
456480: cmp dword ptr [ebp + 0x10], 4
456484: jne 0x456490
456486: cmp dword ptr [ebp + 0xc], 7
45648a: je 0x456510
456490: mov eax, dword ptr [ebp + 0x14]
456493: push eax
456494: lea eax, [ebp - 0x26c]
45649a: push eax
45649b: lea ecx, [ebp - 0x270]
4564a1: mov edx, ebx
4564a3: mov eax, dword ptr [ebp - 0x10]
4564a6: mov edi, dword ptr [eax]
4564a8: call dword ptr [edi + 0xc]
4564ab: mov eax, dword ptr [ebp - 0x270]
4564b1: call 0x4012a0 ; rtl60!@System@@LStrLen$qqrx17System@AnsiString
4564b6: push eax
4564b7: lea ecx, [ebp - 0x274]
4564bd: mov edx, ebx
4564bf: mov eax, dword ptr [ebp - 0x10]
4564c2: mov edi, dword ptr [eax]
4564c4: call dword ptr [edi + 0xc]
4564c7: mov eax, dword ptr [ebp - 0x274]
4564cd: mov ecx, 1
4564d2: pop edx
4564d3: call 0x4012e8 ; rtl60!@System@@LStrCopy$qqrv
4564d8: mov eax, dword ptr [ebp - 0x26c]
4564de: push eax
4564df: call 0x4228cc ; DP_COMMON!MPOS
4564e4: test al, al
4564e6: je 0x456510
4564e8: push 0x4569f0 ; '0'
4564ed: lea ecx, [ebp - 0x278]
4564f3: mov edx, ebx
4564f5: mov eax, dword ptr [ebp - 0x10]
4564f8: mov edi, dword ptr [eax]
4564fa: call dword ptr [edi + 0xc]
4564fd: mov ecx, dword ptr [ebp - 0x278]
456503: mov edx, 0x4569bc ; 'KANJUB_ADD'
456508: mov eax, dword ptr [ebp - 0x20]
45650b: mov edi, dword ptr [eax]
45650d: call dword ptr [edi + 4]
456510: inc ebx
456511: dec esi
456512: jne 0x456303
456518: inc dword ptr [ebp - 0x1c]
45651b: dec dword ptr [ebp - 0x24]
45651e: jne 0x456128 ; '�'
456524: mov eax, dword ptr [ebp + 0x10]
456527: sub eax, 4
45652a: je 0x456541
45652c: sub eax, 2
45652f: je 0x4566c2
456535: dec eax
456536: je 0x456631
45653c: jmp 0x45676b
456541: push 1
456543: mov ecx, 0x4569fc ; '1_I_COST_BO'
456548: mov edx, 0x456a10 ; '1_KANJUB'
45654d: mov eax, dword ptr [ebp - 0x20]
456550: mov ebx, dword ptr [eax]
456552: call dword ptr [ebx + 0xc]
456555: push 1
456557: mov ecx, 0x456a24 ; '1_D_KUNBO'
45655c: mov edx, 0x456a10 ; '1_KANJUB'
456561: mov eax, dword ptr [ebp - 0x20]
456564: mov ebx, dword ptr [eax]
456566: call dword ptr [ebx + 0xc]
456569: push 1
45656b: mov ecx, 0x456a38 ; '1_D_YUNBO'
456570: mov edx, 0x456a10 ; '1_KANJUB'
456575: mov eax, dword ptr [ebp - 0x20]
456578: mov ebx, dword ptr [eax]
45657a: call dword ptr [ebx + 0xc]
45657d: push 1
45657f: mov ecx, 0x456a4c ; '1_D_ANJUN'
456584: mov edx, 0x456a10 ; '1_KANJUB'
456589: mov eax, dword ptr [ebp - 0x20]
45658c: mov ebx, dword ptr [eax]
45658e: call dword ptr [ebx + 0xc]
456591: push 1
456593: mov ecx, 0x456a60 ; '1_D_SLVBO'
456598: mov edx, 0x456a10 ; '1_KANJUB'
45659d: mov eax, dword ptr [ebp - 0x20]
4565a0: mov ebx, dword ptr [eax]
4565a2: call dword ptr [ebx + 0xc]
4565a5: push 1
4565a7: mov ecx, 0x456a74 ; '1_D_TBUGUM'
4565ac: mov edx, 0x456a10 ; '1_KANJUB'
4565b1: mov eax, dword ptr [ebp - 0x20]
4565b4: mov ebx, dword ptr [eax]
4565b6: call dword ptr [ebx + 0xc]
4565b9: cmp dword ptr [ebp + 0xc], 7
4565bd: je 0x4565d3
4565bf: push 0
4565c1: mov ecx, 0x456a88 ; '1_C_IYUN_M'
4565c6: mov edx, 0x456a10 ; '1_KANJUB'
4565cb: mov eax, dword ptr [ebp - 0x20]
4565ce: mov ebx, dword ptr [eax]
4565d0: call dword ptr [ebx + 0xc]
4565d3: push 1
4565d5: mov ecx, 0x456a9c ; '1_D_EIS_SUPPAY'
4565da: mov edx, 0x456a10 ; '1_KANJUB'
4565df: mov eax, dword ptr [ebp - 0x20]
4565e2: mov ebx, dword ptr [eax]
4565e4: call dword ptr [ebx + 0xc]
4565e7: push 0
4565e9: push 0
4565eb: mov ecx, 0x456ab4 ; '1_C_EIS_SUPPAY'
4565f0: mov edx, 0x456a10 ; '1_KANJUB'
4565f5: mov eax, dword ptr [ebp - 0x20]
4565f8: mov ebx, dword ptr [eax]
4565fa: call dword ptr [ebx + 0x38]
4565fd: push 0
4565ff: push 0
456601: mov ecx, 0x456acc ; '1_C_EIS_HOLPAY'
456606: mov edx, 0x456a10 ; '1_KANJUB'
45660b: mov eax, dword ptr [ebp - 0x20]
45660e: mov ebx, dword ptr [eax]
456610: call dword ptr [ebx + 0x24]
456613: add esp, -8
456616: fstp qword ptr [esp]
456619: wait
45661a: mov ecx, 0x456ae4 ; '1_C_EIS_HOLLAB'
45661f: mov edx, 0x456a10 ; '1_KANJUB'
456624: mov eax, dword ptr [ebp - 0x20]
456627: mov ebx, dword ptr [eax]
456629: call dword ptr [ebx + 0x38]
45662c: jmp 0x45676b
456631: push 1
456633: mov ecx, 0x456afc ; '2_D_KUNBO'
456638: mov edx, 0x456b10 ; '2_KANJUB'
45663d: mov eax, dword ptr [ebp - 0x20]
456640: mov ebx, dword ptr [eax]
456642: call dword ptr [ebx + 0xc]
456645: push 1
456647: mov ecx, 0x456b24 ; '2_D_YUNBO'
45664c: mov edx, 0x456b10 ; '2_KANJUB'
456651: mov eax, dword ptr [ebp - 0x20]
456654: mov ebx, dword ptr [eax]
456656: call dword ptr [ebx + 0xc]
456659: push 1
45665b: mov ecx, 0x456b38 ; '2_D_SLVBO'
456660: mov edx, 0x456b10 ; '2_KANJUB'
456665: mov eax, dword ptr [ebp - 0x20]
456668: mov ebx, dword ptr [eax]
45666a: call dword ptr [ebx + 0xc]
45666d: push 1
45666f: mov ecx, 0x456b4c ; '2_D_TBUGUM'
456674: mov edx, 0x456b10 ; '2_KANJUB'
456679: mov eax, dword ptr [ebp - 0x20]
45667c: mov ebx, dword ptr [eax]
45667e: call dword ptr [ebx + 0xc]
456681: push 2
456683: mov ecx, 0x456b60 ; '2_I_BF_CH_BO'
456688: mov edx, 0x456b10 ; '2_KANJUB'
45668d: mov eax, dword ptr [ebp - 0x20]
456690: mov ebx, dword ptr [eax]
456692: call dword ptr [ebx + 0xc]
456695: push 2
456697: mov ecx, 0x456b78 ; '2_I_ANJUNAUTO'
45669c: mov edx, 0x456b10 ; '2_KANJUB'
4566a1: mov eax, dword ptr [ebp - 0x20]
4566a4: mov ebx, dword ptr [eax]
4566a6: call dword ptr [ebx + 0xc]
4566a9: push 0
4566ab: mov ecx, 0x456b90 ; '2_D_ANJUN'
4566b0: mov edx, 0x456b10 ; '2_KANJUB'
4566b5: mov eax, dword ptr [ebp - 0x20]
4566b8: mov ebx, dword ptr [eax]
4566ba: call dword ptr [ebx + 0xc]
4566bd: jmp 0x45676b
4566c2: push 0
4566c4: mov ecx, 0x456ba4 ; '1_I_BF_CH_BO'
4566c9: mov edx, 0x456a10 ; '1_KANJUB'
4566ce: mov eax, dword ptr [ebp - 0x20]
4566d1: mov ebx, dword ptr [eax]
4566d3: call dword ptr [ebx + 8]
4566d6: test eax, eax
4566d8: je 0x45672a
4566da: push 1
4566dc: mov ecx, 0x456a24 ; '1_D_KUNBO'
4566e1: mov edx, 0x456a10 ; '1_KANJUB'
4566e6: mov eax, dword ptr [ebp - 0x20]
4566e9: mov ebx, dword ptr [eax]
4566eb: call dword ptr [ebx + 0xc]
4566ee: push 1
4566f0: mov ecx, 0x456a38 ; '1_D_YUNBO'
4566f5: mov edx, 0x456a10 ; '1_KANJUB'
4566fa: mov eax, dword ptr [ebp - 0x20]
4566fd: mov ebx, dword ptr [eax]
4566ff: call dword ptr [ebx + 0xc]
456702: push 1
456704: mov ecx, 0x456a60 ; '1_D_SLVBO'
456709: mov edx, 0x456a10 ; '1_KANJUB'
45670e: mov eax, dword ptr [ebp - 0x20]
456711: mov ebx, dword ptr [eax]
456713: call dword ptr [ebx + 0xc]
456716: push 1
456718: mov ecx, 0x456a74 ; '1_D_TBUGUM'
45671d: mov edx, 0x456a10 ; '1_KANJUB'
456722: mov eax, dword ptr [ebp - 0x20]
456725: mov ebx, dword ptr [eax]
456727: call dword ptr [ebx + 0xc]
45672a: push 0
45672c: mov ecx, 0x456bbc ; '1_I_ANJUNAUTO'
456731: mov edx, 0x456a10 ; '1_KANJUB'
456736: mov eax, dword ptr [ebp - 0x20]
456739: mov ebx, dword ptr [eax]
45673b: call dword ptr [ebx + 8]
45673e: cmp eax, 2
456741: jne 0x45676b
456743: push 1
456745: mov ecx, 0x456a4c ; '1_D_ANJUN'
45674a: mov edx, 0x456a10 ; '1_KANJUB'
45674f: mov eax, dword ptr [ebp - 0x20]
456752: mov ebx, dword ptr [eax]
456754: call dword ptr [ebx + 0xc]
456757: push 1
456759: mov ecx, 0x456bbc ; '1_I_ANJUNAUTO'
45675e: mov edx, 0x456a10 ; '1_KANJUB'
456763: mov eax, dword ptr [ebp - 0x20]
456766: mov ebx, dword ptr [eax]
456768: call dword ptr [ebx + 0xc]
45676b: mov eax, dword ptr [ebp + 0x14]
45676e: call 0x4012a0 ; rtl60!@System@@LStrLen$qqrx17System@AnsiString
456773: test eax, eax
456775: jle 0x4567c2
456777: mov dword ptr [ebp - 0x24], eax
45677a: mov ebx, 1
45677f: mov eax, dword ptr [ebp + 0x14]
456782: mov al, byte ptr [eax + ebx - 1]
456786: add al, 0xcf
456788: sub al, 4
45678a: jae 0x4567bc
45678c: lea eax, [ebp - 0x27c]
456792: mov edx, dword ptr [ebp + 0x14]
456795: mov dl, byte ptr [edx + ebx - 1]
456799: call 0x401278 ; rtl60!@System@@LStrFromChar$qqrr17System@AnsiStringc
45679e: lea eax, [ebp - 0x27c]
4567a4: mov edx, 0x4569ac ; '_KANJUB'
4567a9: call 0x4012a8 ; rtl60!@System@@LStrCat$qqrv
4567ae: mov edx, dword ptr [ebp - 0x27c]
4567b4: mov eax, dword ptr [ebp - 0x20]
4567b7: mov ecx, dword ptr [eax]
4567b9: call dword ptr [ecx + 0x4c]
4567bc: inc ebx
4567bd: dec dword ptr [ebp - 0x24]
4567c0: jne 0x45677f ; '�'
4567c2: lea eax, [ebp - 4]
4567c5: call 0x401250 ; rtl60!@System@@LStrClr$qqrpv
4567ca: mov dl, 1
4567cc: mov eax, dword ptr [0x5fd800] ; [rtl60!@Classes@TStringList@]
4567d1: call 0x401170 ; rtl60!@System@TObject@$bctr$qqrv
4567d6: mov dword ptr [ebp - 0x18], eax
4567d9: mov edx, dword ptr [ebp - 0x18]
4567dc: mov eax, dword ptr [ebp - 0x20]
4567df: mov ecx, dword ptr [eax]
4567e1: call dword ptr [ecx + 0x44]
4567e4: mov eax, dword ptr [ebp - 0x18]
4567e7: mov edx, dword ptr [eax]
4567e9: call dword ptr [edx + 0x14]
4567ec: dec eax
4567ed: test eax, eax
4567ef: jl 0x4568be
4567f5: inc eax
4567f6: mov dword ptr [ebp - 0x24], eax
4567f9: xor ebx, ebx
4567fb: mov eax, dword ptr [ebp - 0x10]
4567fe: mov edx, dword ptr [eax]
456800: call dword ptr [edx + 0x44]
456803: lea ecx, [ebp - 0x280]
456809: mov edx, ebx
45680b: mov eax, dword ptr [ebp - 0x18]
45680e: mov esi, dword ptr [eax]
456810: call dword ptr [esi + 0xc]
456813: mov edx, dword ptr [ebp - 0x280]
456819: mov ecx, dword ptr [ebp - 0x10]
45681c: mov eax, dword ptr [ebp - 0x20]
45681f: mov esi, dword ptr [eax]
456821: call dword ptr [esi + 0x48]
456824: push dword ptr [ebp - 4]
456827: push 0x456bd4 ; '['
45682c: lea ecx, [ebp - 0x284]
456832: mov edx, ebx
456834: mov eax, dword ptr [ebp - 0x18]
456837: mov esi, dword ptr [eax]
456839: call dword ptr [esi + 0xc]
45683c: push dword ptr [ebp - 0x284]
456842: push 0x456be0 ; ']'
456847: push 0x456994 ; '\r'
45684c: push 0x456bec ; '\n'
456851: lea eax, [ebp - 4]
456854: mov edx, 6
456859: call 0x4012b8 ; rtl60!@System@@LStrCatN$qqrv
45685e: mov eax, dword ptr [ebp - 0x10]
456861: mov edx, dword ptr [eax]
456863: call dword ptr [edx + 0x14]
456866: mov esi, eax
456868: dec esi
456869: test esi, esi
45686b: jl 0x4568ac
45686d: inc esi
45686e: mov dword ptr [ebp - 0x1c], 0
456875: push dword ptr [ebp - 4]
456878: lea ecx, [ebp - 0x288]
45687e: mov edx, dword ptr [ebp - 0x1c]
456881: mov eax, dword ptr [ebp - 0x10]
456884: mov edi, dword ptr [eax]
456886: call dword ptr [edi + 0xc]
456889: push dword ptr [ebp - 0x288]
45688f: push 0x456994 ; '\r'
456894: push 0x456bec ; '\n'
456899: lea eax, [ebp - 4]
45689c: mov edx, 4
4568a1: call 0x4012b8 ; rtl60!@System@@LStrCatN$qqrv
4568a6: inc dword ptr [ebp - 0x1c]
4568a9: dec esi
4568aa: jne 0x456875
4568ac: mov eax, dword ptr [ebp - 0x10]
4568af: mov edx, dword ptr [eax]
4568b1: call dword ptr [edx + 0x44]
4568b4: inc ebx
4568b5: dec dword ptr [ebp - 0x24]
4568b8: jne 0x4567fb
4568be: mov eax, dword ptr [ebp + 8]
4568c1: mov edx, dword ptr [ebp - 4]
4568c4: call 0x401260 ; rtl60!@System@@LStrAsg$qqrpvpxv
4568c9: xor eax, eax
4568cb: pop edx
4568cc: pop ecx
4568cd: pop ecx
4568ce: mov dword ptr fs:[eax], edx
4568d1: push 0x4568f6
4568d6: mov eax, dword ptr [ebp - 0x10]
4568d9: call 0x401180 ; rtl60!@System@TObject@Free$qqrv
4568de: mov eax, dword ptr [ebp - 0x18]
4568e1: call 0x401180 ; rtl60!@System@TObject@Free$qqrv
4568e6: mov eax, dword ptr [ebp - 0x20]
4568e9: call 0x401180 ; rtl60!@System@TObject@Free$qqrv
4568ee: ret
4568ef: jmp 0x401200 ; rtl60!@System@@HandleFinally$qqrv
4568f4: jmp 0x4568d6
4568f6: push 0
4568f8: lea eax, [ebp - 0x28c]
4568fe: mov edx, dword ptr [0x5e5e7c]
456904: mov edx, dword ptr [edx]
456906: add edx, 0x156d
45690c: call 0x401288 ; rtl60!@System@@LStrFromString$qqrr17System@AnsiStringrx28System@%SmallString$iuc$255%
456911: lea eax, [ebp - 0x28c]
456917: mov edx, 0x45697c ; 'PRJ_MEMO.INI'
45691c: call 0x4012a8 ; rtl60!@System@@LStrCat$qqrv
456921: mov eax, dword ptr [ebp - 0x28c]
456927: push eax
456928: call 0x42297c ; DP_COMMON!DELE_FILE
45692d: xor eax, eax
45692f: pop edx
456930: pop ecx
456931: pop ecx
456932: mov dword ptr fs:[eax], edx
456935: push 0x45696a
45693a: lea eax, [ebp - 0x28c]
456940: mov edx, 0x27
456945: call 0x401258 ; rtl60!@System@@LStrArrayClr$qqrpvi
45694a: lea eax, [ebp - 0xc]
45694d: call 0x401250 ; rtl60!@System@@LStrClr$qqrpv
456952: lea eax, [ebp - 4]
456955: call 0x401250 ; rtl60!@System@@LStrClr$qqrpv
45695a: lea eax, [ebp + 0x14]
45695d: call 0x401250 ; rtl60!@System@@LStrClr$qqrpv
456962: ret
456963: jmp 0x401200 ; rtl60!@System@@HandleFinally$qqrv
456968: jmp 0x45693a
45696a: pop edi
45696b: pop esi
45696c: pop ebx
45696d: mov esp, ebp
45696f: pop ebp
456970: ret 0x10
456973: add bh, bh
456975: .byte 0xff
456976: .byte 0xff
456977: dec dword ptr [eax + eax]
45697a: add byte ptr [eax], al
45697c: push eax
45697d: push edx
45697e: dec edx
45697f: pop edi
@@ -0,0 +1,184 @@
55b0b5: mov eax, dword ptr [ebp - 4]
55b0b8: mov ebx, dword ptr [eax + 0x57c]
55b0be: cmp ebx, 4
55b0c1: jne 0x55b287
55b0c7: mov eax, dword ptr [ebp - 4]
55b0ca: mov esi, dword ptr [eax + 0x578]
55b0d0: mov eax, esi
55b0d2: sub eax, 1
55b0d5: jb 0x55b0e1
55b0d7: sub eax, 6
55b0da: je 0x55b13a
55b0dc: jmp 0x55b7d9
55b0e1: push 0x55f3d8 ; '234'
55b0e6: push ebx
55b0e7: push 0
55b0e9: lea eax, [ebp - 0x354]
55b0ef: push eax
55b0f0: mov eax, dword ptr [0x5e5f40]
55b0f5: mov edx, dword ptr [ebp - 0x28]
55b0f8: mov eax, dword ptr [eax + edx*4 + 4]
55b0fc: mov dl, byte ptr [eax]
55b0fe: mov ecx, 0x55f3e4 ; '1'
55b103: mov eax, dword ptr [ebp - 0x44]
55b106: call 0x455e68
55b10b: mov edx, dword ptr [ebp - 0x354]
55b111: lea eax, [ebp - 0x350]
55b117: call 0x4013f8 ; rtl60!@System@@VarFromLStr$qqrr14System@Variantx17System@AnsiString
55b11c: lea ecx, [ebp - 0x350]
55b122: mov eax, dword ptr [ebp - 4]
55b125: mov eax, dword ptr [eax + 0x2f4]
55b12b: mov edx, 0x55f374 ; 'PRJ_MEMO'
55b130: call 0x403d08 ; dbrtl60!@Db@TDataSet@SetFieldValue$qqrx17System@AnsiStringrx14System@Variant
55b135: jmp 0x55b7d9
55b13a: push 0x55f3d8 ; '234'
55b13f: push ebx
55b140: push esi
55b141: lea eax, [ebp - 0x368]
55b147: push eax
55b148: mov eax, dword ptr [0x5e5f40]
55b14d: mov edx, dword ptr [ebp - 0x28]
55b150: mov eax, dword ptr [eax + edx*4 + 4]
55b154: mov dl, byte ptr [eax]
55b156: mov ecx, 0x55f3e4 ; '1'
55b15b: mov eax, dword ptr [ebp - 0x44]
55b15e: call 0x455e68
55b163: mov edx, dword ptr [ebp - 0x368]
55b169: lea eax, [ebp - 0x364]
55b16f: call 0x4013f8 ; rtl60!@System@@VarFromLStr$qqrr14System@Variantx17System@AnsiString
55b174: lea ecx, [ebp - 0x364]
55b17a: mov eax, dword ptr [ebp - 4]
55b17d: mov eax, dword ptr [eax + 0x2f4]
55b183: mov edx, 0x55f374 ; 'PRJ_MEMO'
55b188: call 0x403d08 ; dbrtl60!@Db@TDataSet@SetFieldValue$qqrx17System@AnsiStringrx14System@Variant
55b18d: mov eax, dword ptr [0x5e5f40]
55b192: mov edx, dword ptr [ebp - 0x28]
55b195: mov ecx, dword ptr [eax + edx*4 + 4]
55b199: lea eax, [ebp - 0x37c]
55b19f: mov edx, 0x55f364 ; 'TCOST'
55b1a4: call 0x4012b0 ; rtl60!@System@@LStrCat3$qqrv
55b1a9: mov edx, dword ptr [ebp - 0x37c]
55b1af: lea ecx, [ebp - 0x378]
55b1b5: mov eax, dword ptr [ebp - 4]
55b1b8: mov ebx, dword ptr [eax + 0x2f4]
55b1be: mov eax, ebx
55b1c0: call 0x403d00 ; dbrtl60!@Db@TDataSet@GetFieldValue$qqrx17System@AnsiString
55b1c5: lea ecx, [ebp - 0x378]
55b1cb: mov eax, ebx
55b1cd: mov edx, 0x55f3f0 ; 'TCOST1'
55b1d2: call 0x403d08 ; dbrtl60!@Db@TDataSet@SetFieldValue$qqrx17System@AnsiStringrx14System@Variant
55b1d7: lea eax, [ebp - 0x38c]
55b1dd: xor edx, edx
55b1df: mov cl, 1
55b1e1: call 0x4013c0 ; rtl60!@System@@VarFromInt$qqrr14System@Variantxixi
55b1e6: lea ecx, [ebp - 0x38c]
55b1ec: mov eax, dword ptr [ebp - 4]
55b1ef: mov eax, dword ptr [eax + 0x2f4]
55b1f5: mov edx, 0x55f400 ; 'TCOST2'
55b1fa: call 0x403d08 ; dbrtl60!@Db@TDataSet@SetFieldValue$qqrx17System@AnsiStringrx14System@Variant
55b1ff: lea eax, [ebp - 0x39c]
55b205: xor edx, edx
55b207: mov cl, 1
55b209: call 0x4013c0 ; rtl60!@System@@VarFromInt$qqrr14System@Variantxixi
55b20e: lea ecx, [ebp - 0x39c]
55b214: mov eax, dword ptr [ebp - 4]
55b217: mov eax, dword ptr [eax + 0x2f4]
55b21d: mov edx, 0x55f410 ; 'TCOST3'
55b222: call 0x403d08 ; dbrtl60!@Db@TDataSet@SetFieldValue$qqrx17System@AnsiStringrx14System@Variant
55b227: lea eax, [ebp - 0x3ac]
55b22d: xor edx, edx
55b22f: mov cl, 1
55b231: call 0x4013c0 ; rtl60!@System@@VarFromInt$qqrr14System@Variantxixi
55b236: lea ecx, [ebp - 0x3ac]
55b23c: mov eax, dword ptr [ebp - 4]
55b23f: mov eax, dword ptr [eax + 0x2f4]
55b245: mov edx, 0x55f420 ; 'TCOST4'
55b24a: call 0x403d08 ; dbrtl60!@Db@TDataSet@SetFieldValue$qqrx17System@AnsiStringrx14System@Variant
55b24f: mov eax, dword ptr [ebp - 4]
55b252: xor edx, edx
55b254: mov dword ptr [eax + 0x580], edx
55b25a: lea eax, [ebp - 0x3bc]
55b260: xor edx, edx
55b262: mov cl, 1
55b264: call 0x4013c0 ; rtl60!@System@@VarFromInt$qqrr14System@Variantxixi
55b269: lea ecx, [ebp - 0x3bc]
55b26f: mov eax, dword ptr [ebp - 4]
55b272: mov eax, dword ptr [eax + 0x2f4]
55b278: mov edx, 0x55f430 ; 'K_ORD'
55b27d: call 0x403d08 ; dbrtl60!@Db@TDataSet@SetFieldValue$qqrx17System@AnsiStringrx14System@Variant
55b282: jmp 0x55b7d9
55b287: cmp ebx, 6
55b28a: jne 0x55b523
55b290: lea eax, [ebp - 0x3cc]
55b296: mov edx, 1
55b29b: mov cl, 1
55b29d: call 0x4013c0 ; rtl60!@System@@VarFromInt$qqrr14System@Variantxixi
55b2a2: lea ecx, [ebp - 0x3cc]
55b2a8: mov eax, dword ptr [ebp - 4]
55b2ab: mov eax, dword ptr [eax + 0x2f4]
55b2b1: mov edx, 0x55f440 ; 'k_ord'
55b2b6: call 0x403d08 ; dbrtl60!@Db@TDataSet@SetFieldValue$qqrx17System@AnsiStringrx14System@Variant
55b2bb: mov eax, dword ptr [ebp - 4]
55b2be: mov eax, dword ptr [eax + 0x578]
55b2c4: sub eax, 4
55b2c7: je 0x55b2da
55b2c9: sub eax, 2
55b2cc: je 0x55b328
55b2ce: dec eax
55b2cf: je 0x55b3d0
55b2d5: jmp 0x55b7d9
55b2da: push 0x55f3d8 ; '234'
55b2df: push 0
55b2e1: push 0
55b2e3: lea eax, [ebp - 0x3e0]
55b2e9: push eax
55b2ea: mov ecx, 0x55f3e4 ; '1'
55b2ef: mov dl, 0x31
55b2f1: mov eax, dword ptr [ebp - 0x44]
55b2f4: call 0x455e68
55b2f9: mov edx, dword ptr [ebp - 0x3e0]
55b2ff: lea eax, [ebp - 0x3dc]
55b305: call 0x4013f8 ; rtl60!@System@@VarFromLStr$qqrr14System@Variantx17System@AnsiString
55b30a: lea ecx, [ebp - 0x3dc]
55b310: mov eax, dword ptr [ebp - 4]
55b313: mov eax, dword ptr [eax + 0x2f4]
55b319: mov edx, 0x55f374 ; 'PRJ_MEMO'
55b31e: call 0x403d08 ; dbrtl60!@Db@TDataSet@SetFieldValue$qqrx17System@AnsiStringrx14System@Variant
55b323: jmp 0x55b7d9
55b328: push 0x55f450 ; '4'
55b32d: push 0
55b32f: push 0
55b331: lea eax, [ebp - 0x3f4]
55b337: push eax
55b338: mov ecx, 0x55f45c ; '3'
55b33d: mov dl, 0x32
55b33f: mov eax, dword ptr [ebp - 0x44]
55b342: call 0x455e68
55b347: mov edx, dword ptr [ebp - 0x3f4]
55b34d: lea eax, [ebp - 0x3f0]
55b353: call 0x4013f8 ; rtl60!@System@@VarFromLStr$qqrr14System@Variantx17System@AnsiString
55b358: lea ecx, [ebp - 0x3f0]
55b35e: mov eax, dword ptr [ebp - 4]
55b361: mov eax, dword ptr [eax + 0x2f4]
55b367: mov edx, 0x55f374 ; 'PRJ_MEMO'
55b36c: call 0x403d08 ; dbrtl60!@Db@TDataSet@SetFieldValue$qqrx17System@AnsiStringrx14System@Variant
55b371: lea ecx, [ebp - 0x404]
55b377: mov eax, dword ptr [ebp - 4]
55b37a: mov eax, dword ptr [eax + 0x2f4]
55b380: mov edx, 0x55f400 ; 'TCOST2'
55b385: call 0x403d00 ; dbrtl60!@Db@TDataSet@GetFieldValue$qqrx17System@AnsiString
55b38a: lea ecx, [ebp - 0x404]
55b390: mov eax, dword ptr [ebp - 4]
55b393: mov eax, dword ptr [eax + 0x2f4]
55b399: mov edx, 0x55f410 ; 'TCOST3'
55b39e: call 0x403d08 ; dbrtl60!@Db@TDataSet@SetFieldValue$qqrx17System@AnsiStringrx14System@Variant
55b3a3: lea eax, [ebp - 0x414]
55b3a9: xor edx, edx
55b3ab: mov cl, 1
55b3ad: call 0x4013c0 ; rtl60!@System@@VarFromInt$qqrr14System@Variantxixi
55b3b2: lea ecx, [ebp - 0x414]
55b3b8: mov eax, dword ptr [ebp - 4]
55b3bb: mov eax, dword ptr [eax + 0x2f4]
55b3c1: mov edx, 0x55f420 ; 'TCOST4'
55b3c6: call 0x403d08 ; dbrtl60!@Db@TDataSet@SetFieldValue$qqrx17System@AnsiStringrx14System@Variant
55b3cb: jmp 0x55b7d9
@@ -0,0 +1,80 @@
4b285c: mov eax, dword ptr [0x4ebf3c]
4b2861: mov eax, dword ptr [eax]
4b2863: mov edx, dword ptr [ebp - 0xc]
4b2866: movsx eax, byte ptr [eax + edx + 0x1788]
4b286e: mov edx, dword ptr [0x4ec028]
4b2874: mov ecx, dword ptr [edx + eax*4]
4b2877: lea eax, [ebp - 0x1a0]
4b287d: mov edx, 0x4b3cf0 ; 'T_AMT'
4b2882: call 0x401240 ; rtl60!@System@@LStrCat3$qqrv
4b2887: mov edx, dword ptr [ebp - 0x1a0]
4b288d: lea ecx, [ebp - 0x19c]
4b2893: mov eax, dword ptr [esi + 0x328]
4b2899: call 0x402838 ; dbrtl60!@Db@TDataSet@GetFieldValue$qqrx17System@AnsiString
4b289e: lea edx, [ebp - 0x19c]
4b28a4: mov eax, dword ptr [ebx - 4]
4b28a7: mov ecx, dword ptr [eax]
4b28a9: call dword ptr [ecx + 0xc4]
4b28af: cmp byte ptr [ebp - 0x15], 0
4b28b3: je 0x4b29b6
4b28b9: mov eax, dword ptr [0x4ebf3c]
4b28be: mov eax, dword ptr [eax]
4b28c0: mov edx, dword ptr [ebp - 0xc]
4b28c3: movsx eax, byte ptr [eax + edx + 0x1788]
4b28cb: mov edx, dword ptr [0x4ec028]
4b28d1: mov ecx, dword ptr [edx + eax*4]
4b28d4: lea eax, [ebp - 0x1b4]
4b28da: mov edx, 0x4b3d00 ; 'M_AMT'
4b28df: call 0x401240 ; rtl60!@System@@LStrCat3$qqrv
4b28e4: mov edx, dword ptr [ebp - 0x1b4]
4b28ea: lea ecx, [ebp - 0x1b0]
4b28f0: mov eax, dword ptr [esi + 0x328]
4b28f6: call 0x402838 ; dbrtl60!@Db@TDataSet@GetFieldValue$qqrx17System@AnsiString
4b28fb: lea edx, [ebp - 0x1b0]
4b2901: mov eax, dword ptr [ebx]
4b2903: mov ecx, dword ptr [eax]
4b2905: call dword ptr [ecx + 0xc4]
4b290b: mov eax, dword ptr [0x4ebf3c]
4b2910: mov eax, dword ptr [eax]
4b2912: mov edx, dword ptr [ebp - 0xc]
4b2915: movsx eax, byte ptr [eax + edx + 0x1788]
4b291d: mov edx, dword ptr [0x4ec028]
4b2923: mov ecx, dword ptr [edx + eax*4]
4b2926: lea eax, [ebp - 0x1c8]
4b292c: mov edx, 0x4b3d10 ; 'L_AMT'
4b2931: call 0x401240 ; rtl60!@System@@LStrCat3$qqrv
4b2936: mov edx, dword ptr [ebp - 0x1c8]
4b293c: lea ecx, [ebp - 0x1c4]
4b2942: mov eax, dword ptr [esi + 0x328]
4b2948: call 0x402838 ; dbrtl60!@Db@TDataSet@GetFieldValue$qqrx17System@AnsiString
4b294d: lea edx, [ebp - 0x1c4]
4b2953: mov eax, dword ptr [ebx + 4]
4b2956: mov ecx, dword ptr [eax]
4b2958: call dword ptr [ecx + 0xc4]
4b295e: mov eax, dword ptr [0x4ebf3c]
4b2963: mov eax, dword ptr [eax]
4b2965: mov edx, dword ptr [ebp - 0xc]
4b2968: movsx eax, byte ptr [eax + edx + 0x1788]
4b2970: mov edx, dword ptr [0x4ec028]
4b2976: mov ecx, dword ptr [edx + eax*4]
4b2979: lea eax, [ebp - 0x1dc]
4b297f: mov edx, 0x4b3d20 ; 'S_AMT'
4b2984: call 0x401240 ; rtl60!@System@@LStrCat3$qqrv
4b2989: mov edx, dword ptr [ebp - 0x1dc]
4b298f: lea ecx, [ebp - 0x1d8]
4b2995: mov eax, dword ptr [esi + 0x328]
4b299b: call 0x402838 ; dbrtl60!@Db@TDataSet@GetFieldValue$qqrx17System@AnsiString
4b29a0: lea edx, [ebp - 0x1d8]
4b29a6: mov eax, dword ptr [ebx + 8]
4b29a9: mov ecx, dword ptr [eax]
4b29ab: call dword ptr [ecx + 0xc4]
4b29b1: jmp 0x4b2df7
4b29b6: cmp byte ptr [ebp - 6], 0x54
4b29ba: je 0x4b2df7
4b29c0: mov eax, dword ptr [0x4ebf3c]
4b29c5: mov eax, dword ptr [eax]
4b29c7: mov edx, dword ptr [ebp - 0xc]
4b29ca: movsx eax, byte ptr [eax + edx + 0x1788]
4b29d2: mov edx, dword ptr [0x4ec028]
4b29d8: mov ecx, dword ptr [edx + eax*4]
4b29db: lea eax, [ebp - 0x1f0]
@@ -0,0 +1,14 @@
4b6b14: xor edx, edx
4b6b16: mov eax, 0x4d5498
4b6b1b: mov ecx, dword ptr [0x4c294c]
4b6b21: mov ecx, dword ptr [ecx]
4b6b23: mov bl, byte ptr [eax]
4b6b25: mov byte ptr [ecx + edx + 0x1788], bl
4b6b2c: inc edx
4b6b2d: inc eax
4b6b2e: cmp edx, 6
4b6b31: jne 0x4b6b1b
4b6b33: mov eax, dword ptr [0x4c294c]
4b6b38: mov eax, dword ptr [eax]
4b6b3a: mov dl, byte ptr [0x4d5498]
4b6b40: mov byte ptr [eax + 0x178e], dl
@@ -0,0 +1,754 @@
{
"class": "TPM_Jab",
"name": "PM_Jab",
"flags": [],
"child_pos": null,
"properties": {
"Left": 192,
"Top": 107,
"Width": 696,
"Height": 477,
"Caption": "PM_Jab",
"Color": "clBtnFace",
"Font.Charset": "HANGEUL_CHARSET",
"Font.Color": "clWindowText",
"Font.Height": -12,
"Font.Name": "굴림체",
"Font.Style": [],
"OldCreateOrder": false,
"Scaled": false,
"WindowState": "wsMaximized",
"PixelsPerInch": 96,
"TextHeight": 12
},
"children": [
{
"class": "THRPage",
"name": "HRPage1",
"flags": [],
"child_pos": null,
"properties": {
"Left": 0,
"Top": 0,
"Width": 1123,
"Height": 794,
"BeforePrint": "HRPage1BeforePrint",
"BorderStyle.Slash": [],
"BorderStyle.Lines": [],
"BorderStyle.DesignPen.Color": "clSilver",
"Font.Charset": "HANGEUL_CHARSET",
"Font.Color": "clWindowText",
"Font.Height": -16,
"Font.Name": "굴림체",
"Font.Style": [],
"ParentFont": false,
"PageInfo.Width": 210,
"PageInfo.Height": 297,
"PageInfo.MargineLeft": 20,
"PageInfo.MargineTop": 15,
"PageInfo.MargineRight": 20,
"PageInfo.MargineBottom": 15,
"PageInfo.Orientation": "hpoLandscape",
"PrintZoom": 100,
"Ruler": true,
"Units": "hpuMM"
},
"children": [
{
"class": "THRPageBand",
"name": "HRPageBand3",
"flags": [],
"child_pos": null,
"properties": {
"Left": 76,
"Top": 107,
"Width": 971,
"Height": 586,
"LocateAtPage": "alNone",
"BandType": "hpbPageHeader",
"Alignment": "taLeftJustify",
"BorderStyle.Slash": [],
"BorderStyle.Lines": [
"lnLeft",
"lnTop",
"lnRight",
"lnBottom"
],
"BorderStyle.DesignPen.Color": "clGreen"
},
"children": [
{
"class": "THRLabel",
"name": "lb_Smpl",
"flags": [],
"child_pos": null,
"properties": {
"Left": 72,
"Top": 80,
"Width": 500,
"Height": 168,
"Alignment": "taCenter",
"Font.Charset": "ANSI_CHARSET",
"Font.Color": 13290239,
"Font.Height": -160,
"Font.Name": "Times New Roman",
"Font.Style": [],
"FontWidth": 30,
"ParentFont": false,
"Transparent": true,
"Visible": false,
"BorderStyle.ShadowBrush.Color": "clGray",
"BorderStyle.ShadowWidth": 3,
"BorderStyle.Slash": [
"slNormal"
],
"BorderStyle.Lines": [],
"BorderStyle.DesignPen.Color": "clSilver",
"BorderStyle.Pen.Color": 13290239,
"BorderStyle.Pen.Width": 3,
"BorderStyle.Transparent": true,
"Caption": "S A M P L E",
"LocateAtText": "hllNone"
},
"children": []
}
]
},
{
"class": "THRPageBand",
"name": "HRPageBand1",
"flags": [],
"child_pos": null,
"properties": {
"Left": 76,
"Top": 57,
"Width": 971,
"Height": 50,
"LocateAtPage": "alTop",
"BandType": "hpbPageHeader",
"Alignment": "taLeftJustify",
"BorderStyle.Slash": [],
"BorderStyle.Lines": [],
"BorderStyle.DesignPen.Color": "clGreen",
"BorderStyle.Transparent": true
},
"children": [
{
"class": "THRLabel",
"name": "HlCap",
"flags": [],
"child_pos": null,
"properties": {
"Left": 0,
"Top": 0,
"Width": 971,
"Height": 27,
"Alignment": "taCenter",
"Font.Charset": "HANGEUL_CHARSET",
"Font.Color": "clBlack",
"Font.Height": -21,
"Font.Name": "굴림체",
"Font.Style": [
"fsBold",
"fsUnderline"
],
"FontWidth": 6,
"ParentFont": false,
"Transparent": true,
"BorderStyle.Slash": [],
"BorderStyle.Lines": [],
"BorderStyle.DesignPen.Color": "clSilver",
"BorderStyle.Transparent": true,
"Caption": "총 괄 설 계 내 역 서",
"LocateAtText": "hllNone"
},
"children": []
},
{
"class": "THRLabel",
"name": "txPName",
"flags": [],
"child_pos": null,
"properties": {
"Tag": 900000,
"Left": 0,
"Top": 26,
"Width": 720,
"Height": 23,
"FontWidth": 6,
"Transparent": true,
"BorderStyle.Slash": [],
"BorderStyle.Lines": [],
"BorderStyle.DesignPen.Color": "clSilver",
"BorderStyle.Transparent": true,
"BorderMargine.Bottom": 0,
"Caption": "공사명 : 경영정보(주) 앞 도로개설공사",
"LocateAtText": "hllNone"
},
"children": []
}
]
},
{
"class": "THRPageBand",
"name": "HRPageBand2",
"flags": [],
"child_pos": null,
"properties": {
"Left": 76,
"Top": 693,
"Width": 971,
"Height": 44,
"LocateAtPage": "alBottom",
"BandType": "hpbPageFooter",
"Alignment": "taLeftJustify",
"BorderStyle.Slash": [],
"BorderStyle.Lines": [],
"BorderStyle.DesignPen.Color": "clGreen",
"BorderStyle.Transparent": true
},
"children": [
{
"class": "THRLabel",
"name": "CopName",
"flags": [],
"child_pos": null,
"properties": {
"Tag": 900000,
"Left": 0,
"Top": 4,
"Width": 971,
"Height": 22,
"Alignment": "taRightJustify",
"FontWidth": 6,
"Transparent": true,
"BorderStyle.Slash": [],
"BorderStyle.Lines": [],
"BorderStyle.DesignPen.Color": "clSilver",
"BorderStyle.Transparent": true,
"BorderMargine.Top": 4,
"Caption": "경영정보(주)",
"LocateAtText": "hllNone"
},
"children": []
},
{
"class": "THRCalc",
"name": "HrPage",
"flags": [],
"child_pos": null,
"properties": {
"Tag": 900000,
"Left": 0,
"Top": 4,
"Width": 971,
"Height": 22,
"Alignment": "taCenter",
"FontWidth": 6,
"Transparent": true,
"BorderStyle.Slash": [],
"BorderStyle.Lines": [],
"BorderStyle.DesignPen.Color": "clSilver",
"BorderStyle.Transparent": true,
"BorderMargine.Top": 4,
"ResetType": "hrtResetValue",
"ResetValue": 1,
"CalcFunction": "hcfPageNo",
"DisplayFormat": "- #,# -",
"LocateAtText": "hllNone"
},
"children": []
}
]
},
{
"class": "THRGroup",
"name": "HRGroup1",
"flags": [],
"child_pos": null,
"properties": {
"Left": 76,
"Top": 142,
"Width": 971,
"Height": 22,
"AfterPrint": "HRGroup1AfterPrint",
"BeforePrint": "HRGroup1BeforePrint",
"Alignment": "taLeftJustify",
"BorderStyle.Slash": [],
"BorderStyle.Lines": [],
"BorderStyle.DesignPen.Color": "clAqua",
"BorderStyle.Transparent": true,
"GroupStyle.RepeatToEOP": true,
"GroupStyle.RepeatControls": true,
"GroupStyle.SuppressText": true,
"GroupStyle.PrintOnRepeat": true,
"LocateAtPage": "hgaNone"
},
"children": [
{
"class": "THRDBText",
"name": "txITNUM",
"flags": [],
"child_pos": null,
"properties": {
"Tag": 200010,
"Left": 0,
"Top": 0,
"Width": 78,
"Height": 23,
"FontWidth": 6,
"Transparent": true,
"BorderStyle.Slash": [],
"BorderStyle.Lines": [
"lnLeft",
"lnTop"
],
"BorderStyle.DesignPen.Color": "clSilver",
"BorderStyle.Pen.Width": 0,
"BorderStyle.Transparent": true,
"BorderMargine.Top": 5,
"DataField": "ITNUM",
"TextFunction": "htfNone"
},
"children": []
},
{
"class": "THRDBText",
"name": "txNAME1",
"flags": [],
"child_pos": null,
"properties": {
"Tag": 200020,
"Left": 77,
"Top": 0,
"Width": 201,
"Height": 23,
"FontWidth": 6,
"Transparent": true,
"BorderStyle.Slash": [],
"BorderStyle.Lines": [
"lnLeft",
"lnTop"
],
"BorderStyle.DesignPen.Color": "clSilver",
"BorderStyle.Pen.Width": 0,
"BorderStyle.Transparent": true,
"BorderMargine.Top": 5,
"DataField": "NAME1",
"TextFunction": "htfNone"
},
"children": []
},
{
"class": "THRDBText",
"name": "txSIZE1",
"flags": [],
"child_pos": null,
"properties": {
"Tag": 200030,
"Left": 277,
"Top": 0,
"Width": 186,
"Height": 23,
"FontWidth": 6,
"Transparent": true,
"BorderStyle.Slash": [],
"BorderStyle.Lines": [
"lnLeft",
"lnTop"
],
"BorderStyle.DesignPen.Color": "clSilver",
"BorderStyle.Pen.Width": 0,
"BorderStyle.Transparent": true,
"BorderMargine.Top": 5,
"DataField": "SIZE1",
"TextFunction": "htfNone"
},
"children": []
}
]
},
{
"class": "THRGroupBand",
"name": "HRGroupBand0",
"flags": [],
"child_pos": null,
"properties": {
"Left": 76,
"Top": 107,
"Width": 971,
"Height": 35,
"AlignWithGroup": "hbaGroupBoth",
"LocateAtGroup": "hblTopAttach",
"BodyGroup": "HRGroup1",
"BandType": "hgbGroupHeader",
"Alignment": "taLeftJustify",
"BorderStyle.Slash": [],
"BorderStyle.Lines": [],
"BorderStyle.DesignPen.Color": "clSilver",
"BorderStyle.Transparent": true
},
"children": [
{
"class": "THRLabel",
"name": "lbFld01",
"flags": [],
"child_pos": null,
"properties": {
"Tag": 100010,
"Left": 0,
"Top": 0,
"Width": 78,
"Height": 36,
"Alignment": "taCenter",
"FontWidth": 6,
"Transparent": true,
"BorderStyle.Slash": [],
"BorderStyle.Lines": [
"lnLeft",
"lnTop",
"lnBottom"
],
"BorderStyle.DesignPen.Color": "clSilver",
"BorderStyle.Pen.Width": 0,
"BorderStyle.Transparent": true,
"BorderMargine.Top": 11,
"AlignWithText.Left": true,
"AlignWithText.Top": true,
"AlignWithText.Width": true,
"AlignWithText.Height": true,
"Caption": "공 종",
"LocateAtText": "hllNone"
},
"children": []
},
{
"class": "THRLabel",
"name": "lbFld02",
"flags": [],
"child_pos": null,
"properties": {
"Tag": 100020,
"Left": 77,
"Top": 0,
"Width": 201,
"Height": 36,
"Alignment": "taCenter",
"FontWidth": 6,
"Transparent": true,
"BorderStyle.Slash": [],
"BorderStyle.Lines": [
"lnLeft",
"lnTop",
"lnBottom"
],
"BorderStyle.DesignPen.Color": "clSilver",
"BorderStyle.Pen.Width": 0,
"BorderStyle.Transparent": true,
"BorderMargine.Top": 11,
"AlignWithText.Left": true,
"AlignWithText.Top": true,
"AlignWithText.Width": true,
"AlignWithText.Height": true,
"Caption": "명 칭",
"LocateAtText": "hllNone"
},
"children": []
},
{
"class": "THRLabel",
"name": "lbFld03",
"flags": [],
"child_pos": null,
"properties": {
"Tag": 100030,
"Left": 277,
"Top": 0,
"Width": 186,
"Height": 36,
"Alignment": "taCenter",
"FontWidth": 6,
"Transparent": true,
"BorderStyle.Slash": [],
"BorderStyle.Lines": [
"lnLeft",
"lnTop",
"lnBottom"
],
"BorderStyle.DesignPen.Color": "clSilver",
"BorderStyle.Pen.Width": 0,
"BorderStyle.Transparent": true,
"BorderMargine.Top": 11,
"AlignWithText.Left": true,
"AlignWithText.Top": true,
"AlignWithText.Width": true,
"AlignWithText.Height": true,
"Caption": "규 격",
"LocateAtText": "hllNone"
},
"children": []
},
{
"class": "THRLabel",
"name": "lbFld04",
"flags": [],
"child_pos": null,
"properties": {
"Tag": 100040,
"Left": 462,
"Top": 0,
"Width": 128,
"Height": 36,
"Alignment": "taCenter",
"FontWidth": 6,
"Transparent": true,
"BorderStyle.Slash": [],
"BorderStyle.Lines": [
"lnLeft",
"lnTop",
"lnBottom"
],
"BorderStyle.DesignPen.Color": "clSilver",
"BorderStyle.Pen.Width": 0,
"BorderStyle.Transparent": true,
"BorderMargine.Top": 11,
"AlignWithText.Left": true,
"AlignWithText.Top": true,
"AlignWithText.Width": true,
"AlignWithText.Height": true,
"Caption": "계",
"LocateAtText": "hllNone"
},
"children": []
},
{
"class": "THRLabel",
"name": "lbFld05",
"flags": [],
"child_pos": null,
"properties": {
"Tag": 100050,
"Left": 589,
"Top": 0,
"Width": 128,
"Height": 36,
"Alignment": "taCenter",
"FontWidth": 6,
"Transparent": true,
"BorderStyle.Slash": [],
"BorderStyle.Lines": [
"lnLeft",
"lnTop",
"lnBottom"
],
"BorderStyle.DesignPen.Color": "clSilver",
"BorderStyle.Pen.Width": 0,
"BorderStyle.Transparent": true,
"BorderMargine.Top": 11,
"AlignWithText.Left": true,
"AlignWithText.Top": true,
"AlignWithText.Width": true,
"AlignWithText.Height": true,
"Caption": "재료비",
"LocateAtText": "hllNone"
},
"children": []
},
{
"class": "THRLabel",
"name": "lbFld06",
"flags": [],
"child_pos": null,
"properties": {
"Tag": 100060,
"Left": 716,
"Top": 0,
"Width": 128,
"Height": 36,
"Alignment": "taCenter",
"FontWidth": 6,
"Transparent": true,
"BorderStyle.Slash": [],
"BorderStyle.Lines": [
"lnLeft",
"lnTop",
"lnBottom"
],
"BorderStyle.DesignPen.Color": "clSilver",
"BorderStyle.Pen.Width": 0,
"BorderStyle.Transparent": true,
"BorderMargine.Top": 11,
"AlignWithText.Left": true,
"AlignWithText.Top": true,
"AlignWithText.Width": true,
"AlignWithText.Height": true,
"Caption": "노무비",
"LocateAtText": "hllNone"
},
"children": []
},
{
"class": "THRLabel",
"name": "lbFld07",
"flags": [],
"child_pos": null,
"properties": {
"Tag": 100070,
"Left": 843,
"Top": 0,
"Width": 128,
"Height": 36,
"Alignment": "taCenter",
"FontWidth": 6,
"Transparent": true,
"BorderStyle.Slash": [],
"BorderStyle.Lines": [
"lnLeft",
"lnTop",
"lnBottom"
],
"BorderStyle.DesignPen.Color": "clSilver",
"BorderStyle.Pen.Width": 0,
"BorderStyle.Transparent": true,
"BorderMargine.Top": 11,
"AlignWithText.Left": true,
"AlignWithText.Top": true,
"AlignWithText.Width": true,
"AlignWithText.Height": true,
"Caption": "경 비",
"LocateAtText": "hllNone"
},
"children": []
},
{
"class": "THRLabel",
"name": "lbFld08",
"flags": [],
"child_pos": null,
"properties": {
"Tag": 100080,
"Left": 589,
"Top": 0,
"Width": 381,
"Height": 36,
"Alignment": "taCenter",
"FontWidth": 6,
"Transparent": true,
"BorderStyle.Slash": [],
"BorderStyle.Lines": [
"lnLeft",
"lnTop",
"lnBottom"
],
"BorderStyle.DesignPen.Color": "clSilver",
"BorderStyle.Pen.Width": 0,
"BorderStyle.Transparent": true,
"BorderMargine.Top": 11,
"AlignWithText.Left": true,
"AlignWithText.Top": true,
"AlignWithText.Width": true,
"AlignWithText.Height": true,
"Caption": "산 출 내 역",
"LocateAtText": "hllNone"
},
"children": []
}
]
}
]
},
{
"class": "THyperReport",
"name": "Hrp",
"flags": [],
"child_pos": null,
"properties": {
"PreviewOptions.Caption": "총괄설계내역서",
"PreviewOptions.ShowModal": true,
"PreviewOptions.WindowState": "wsMaximized",
"PreviewOptions.ZoomMin": 50,
"PreviewOptions.ZoomMax": 150,
"PreviewOptions.ZoomStep": 10,
"PreviewOptions.MargineColor": "clWhite",
"PreviewOptions.VisibleButtons": [
"btFirst",
"btPrev",
"btNext",
"btLast",
"btStart",
"btStop",
"btZoomIn",
"btZoomOut",
"btSave",
"btPrint"
],
"PrintFirstHeader": true,
"SuppressHeaderGroup": true,
"EnableSaveReport": true,
"SaveAllProperties": true,
"SpoolTitle": "총괄내역서",
"OnSaveDialog": "HrpSaveDialog",
"OnShowPrintDialog": "HrpShowPrintDialog",
"Left": 24,
"Top": 16
},
"children": []
},
{
"class": "THRLink",
"name": "HRLink1",
"flags": [],
"child_pos": null,
"properties": {
"LinkInfo.SourceTrees.Strings": [
" 0 0PM_Jab.ds_Jab"
],
"LinkInfo.MasterFields.Strings": [
"Master;"
],
"LinkInfo.DetailFields.Strings": [
"Detail;"
],
"LinkInfo.SelfKyFields.Strings": [
"SelfKy;"
],
"LinkInfo.GroupOrders.Strings": [
"Groups;HRGroup1;0::1:1:1:0:"
],
"Left": 72,
"Top": 16
},
"children": []
},
{
"class": "TApolloTable",
"name": "tb_Jab",
"flags": [],
"child_pos": null,
"properties": {
"DatabaseName": "ST_Work",
"CachedUpdates": false,
"FieldDefs": [],
"IndexDefs": [],
"Sequenced": false,
"TableName": "PRT.DBF",
"TableType": "ttSXNSX",
"Left": 128,
"Top": 16
},
"children": []
},
{
"class": "TDataSource",
"name": "ds_Jab",
"flags": [],
"child_pos": null,
"properties": {
"DataSet": "tb_Jab",
"Left": 176,
"Top": 16
},
"children": []
}
]
}
@@ -70,7 +70,16 @@ const MODES = {
);
const fs2 = Progress.fromStorage(base, seedRows, { K_ORD: 2 }, smt3);
const next = Progress.run(base, [rounds[1]], fs2.seed);
return { all, st, fs, fs2, next };
// 원본 회차 등록 규칙(nextRound)으로 만든 저장본에서 다시 읽은 제 2 회
const nr = Progress.nextRound(st);
const fs3 = Progress.fromStorage(
base,
nr.boq,
nr.prjlst,
Object.assign({}, ...Object.values(nr.smt)),
);
const next2 = Progress.run(base, [rounds[1]], fs3.seed);
return { all, st, fs, fs2, next, nr, next2 };
},
// 실제 STC(설계 판) → 계약 기준 → 회차 → 저장 형식
real({ load, opts, rounds }) {
@@ -227,3 +227,22 @@ def test_real_stc_storage_totals():
assert (r1["cur"]["supply"], r1["cur"]["vat"], r1["cur"]["total"]) == (sup, vat, tot)
assert r2["cur"]["final"] and st["prjlst"]["TCOST2"] == got["direct"]
assert st["smt"]["2_KANJUB"]["2_C_KANNO"] == r2["acc"]["items"][0]["amount"]
def test_next_round_registration():
"""회차 등록 — QTY3←QTY2 · QTY4=0 · T_AMT3←T_AMT2 · TCOST3←TCOST2 · TCOST4=0
· [3_KANJUB]←[2_KANJUB] · [4_KANJUB] 0 · K_ORD+1 (STmate 0x55b328~0x55b3cb · 0x455e68)."""
rounds = [{"qtyById": {"a": 4, "b": 1}}, {"qtyById": {"a": 3, "b": 1}, "vatMode": 2}]
got = _run("store", {"spec": SPEC, "rounds": rounds})
st, nr = got["st"], got["nr"]
assert nr["prjlst"]["K_ORD"] == 2 and nr["prjlst"]["TCOST4"] == 0
assert nr["prjlst"]["TCOST3"] == st["prjlst"]["TCOST2"]
for u, v in zip(st["boq"], nr["boq"]):
assert (v["QTY3"], v["QTY4"], v["T_AMT3"], v["T_AMT4"]) == (u["QTY2"], 0, u["T_AMT2"], 0)
assert nr["smt"]["3_KANJUB"]["3_C_KANNO"] == st["smt"]["2_KANJUB"]["2_C_KANNO"]
assert all(v == 0 for v in nr["smt"]["4_KANJUB"].values())
nxt, ref = got["next2"][0], got["all"][1]
assert nxt["round"] == 2
for x, y in zip(nxt["rows"], ref["rows"]):
assert x["prev"] == y["prev"] and x["cur"] == y["cur"] and x["acc"] == y["acc"]
assert nxt["jab"]["cur"]["items"] == ref["jab"]["cur"]["items"]
+30 -2
View File
@@ -7,7 +7,10 @@
* (ST_KanJub 0x4cae9b 열→칸 표 '1342' · 0x4cb03c 값 배열 순서 · ST_P_ConEst 0x47fadf~0x47fd4c)
* 금액: 금회 = 금회수량으로 · 누계 = 누계수량으로 각각 다시 셈(ST_Boq 0x4fc674 · 0x4fce6e→T_AMT2 0x4fcf24)
* · 전회 = 앞 회차 누계 이관(STmate 0x55d0b3~0x55d148 「전회<-누계, 금회=0」) — 전회+금회 ≠ 누계(끝전) 있음
* 미확인: 금회 칸 단가 원천(MAMT4 등 — 회차 생성 시 1→2·3 칸만 복사 0x55c826~0x55ca73) — 여기서는 계약 단가
* 단가: 기성(PCLASS 6) 편집 때 수량 칸 = 4 · 단가 칸 = 1(계약) — ST_Boq 0x4e49b5([0x541894]=4 · [0x541898]=1)
* → 금회·누계 모두 계약 단가 × 그 칸 수량 (단가 칸 인자 뜻은 호출 대응으로 읽음 — 신뢰도 중)
* 회차 등록(nextRound): QTY3←QTY2 · QTY4=0 · T_AMT3←T_AMT2 · TCOST3←TCOST2 · TCOST4=0
* · [3_KANJUB]←[2_KANJUB](키 앞 글자 바꿈) · [4_KANJUB] 지움 · K_ORD+1 (STmate 0x55b328~0x55b3cb · 0x455e68)
* 시험: resources/tester/test_stmate_stage_progress.py · test_stmate_stage_progress_rea.py
*/
const StmateProgress = (() => {
@@ -98,7 +101,8 @@ const StmateProgress = (() => {
const pct = (a, b) => (b ? Math.round((a / b) * 1e4) / 1e2 : 0);
// 금회수량 상한(ST_Boq 0x4f4bbd~0x4f4c9f) — 계약×금회 > 0 이고 |전회+금회| > |계약| 이면 금회 = 계약 − 전회
// 설정 바이트(+0x1068→+0x69) 켜짐이면 상한 없음 — 그 설정 이름 미확인 → opt.allowOver
// 켜짐이면 상한 없음 = 보기/설정 「누계수량 제한해제 (계약수량 〈 누계수량)」 Act_Enabl_OVR6(TwBoq +0x1068)
// → opt.allowOver · 처음 값 꺼짐(DFM Checked 없음)
function capCur(ctrQ, prevQ, q, allowOver) {
if (allowOver || !(ctrQ * q > 0)) return q;
return Math.abs(r4(prevQ + q)) > Math.abs(ctrQ) ? r4(ctrQ - prevQ) : q;
@@ -308,6 +312,7 @@ const StmateProgress = (() => {
}
// 준공조서(0646·0647) — 서식 칸은 계약금액 | 준공금액 둘(SET_REP) · 준공금액 산식 원본 미확인
// (관찰: 내역서 머리 「◎ 준공 정산액」/「◎ 기성부분금액」 = PRJLST TCOST + 인쇄 열 칸 — ST_P_ConEst 0x4790d5)
// 여기서는 마지막 회차 누계 이관(앱 가정)
function completion(base, runs) {
const last = runs[runs.length - 1];
@@ -367,6 +372,28 @@ const StmateProgress = (() => {
};
}
// 다음 회차 등록 — 저장 형식(toStorage 꼴)을 STmate 회차 등록 규칙으로 바꿈
// [4_KANJUB] 는 원본에서 섹션째 지움(EraseSection 0x4567b9) — 앱 저장은 키 값 0 으로 씀
function nextRound(st) {
const boq = st.boq.map((u) => {
const o = Object.assign({}, u, { QTY3: u.QTY2, QTY4: 0 });
["M_AMT", "L_AMT", "S_AMT", "T_AMT"].forEach((f) => {
o[`${f}3`] = u[`${f}2`];
o[`${f}4`] = 0;
});
return o;
});
const prjlst = Object.assign({}, st.prjlst, {
K_ORD: n0(st.prjlst.K_ORD) + 1,
TCOST3: st.prjlst.TCOST2,
TCOST4: 0,
});
const s2 = st.smt["2_KANJUB"] || {};
const sec3 = Object.fromEntries(Object.entries(s2).map(([k, v]) => [`3${k.slice(1)}`, v]));
const sec4 = Object.fromEntries(Object.keys(st.smt["4_KANJUB"] || {}).map((k) => [k, 0]));
return { boq, prjlst, smt: { "2_KANJUB": s2, "3_KANJUB": sec3, "4_KANJUB": sec4 } };
}
// 기성 프로젝트 불러오기 — BOQ QTY3(전회)·QTY4(금회)·M_/L_/S_/T_AMT3 · [3_KANJUB] 또는 [2_KANJUB]−[4_KANJUB] 로 seed
function fromStorage(base, boqRows, prjlst, smt) {
const byRec = new Map((boqRows || []).map((r) => [r._recno, r]));
@@ -411,6 +438,7 @@ const StmateProgress = (() => {
capCur,
toStorage,
fromStorage,
nextRound,
};
})();
+2
View File
@@ -89,6 +89,8 @@
if (prj[k] !== undefined) prjUpd[k] = prj[k];
else delete prjUpd[k];
});
// 기성 회차(K_ORD) — [다음 회차 등록]이 올린 값(STmate 0x55d1d3 k_ord = K+1)
if (isProgress && prj.K_ORD !== undefined) prjUpd.K_ORD = prj.K_ORD;
const smt = d.prjlst_smt || {};
const rts = (ctx.state.kanjubConfig && ctx.state.kanjubConfig.rates) || {};
+12 -4
View File
@@ -49,9 +49,11 @@
}
// [기성 칸 반영] — 고른 회차를 작업본(dbfData)의 BOQ 칸 2·3·4 와 내역 항목 수량에 씀 · 파일 쓰기는 [저장]
function applyStorage(ctx) {
// next = 참이면 STmate 회차 등록(전회<-누계, 금회=0, K_ORD+1)까지 적용 — [다음 회차 등록]
function applyStorage(ctx, next) {
const G = global.STMATE_PROGRESS;
const { base, run } = compute(ctx);
const st = global.STMATE_PROGRESS.toStorage(base, run);
const st = next ? G.nextRound(G.toStorage(base, run)) : G.toStorage(base, run);
const d = ctx.dbfData;
const byRec = new Map((d.boq_rows || []).map((r) => [r._recno, r]));
const items = new Map((ctx.state.boqItems || []).map((b) => [b.id, b]));
@@ -65,7 +67,8 @@
[2, 3, 4].forEach((n) => (b.qtys[n - 1] = u[`QTY${n}`]));
});
const pr = st.prjlst;
d.prjlst = Object.assign(d.prjlst || {}, {
const keep = next ? { TCOST3: pr.TCOST3, TCOST4: 0 } : {};
d.prjlst = Object.assign(d.prjlst || {}, keep, {
COSTW3: pr.COSTW3,
COSTW4: pr.COSTW4,
K_ORD: pr.K_ORD,
@@ -256,7 +259,7 @@
<span>공급가액 절사</span>${sel("pg-sj", JEOL_S, Math.abs(rd.supplyJeol || 0))}<span>총공사비 절사</span>${sel("pg-tj", JEOL_T, Math.abs(rd.totalJeol || 0))}
<span>이윤 직접입력</span>${inp("pg-iyun", rd.iyunManual, 90)}
<span>집계수준</span>${sel("pg-level", G.LEVELS, p.level)}
${isProgPrj(ctx) ? `<button class="win-btn" id="pg-store">기성 칸 반영</button>` : ""}</div>`;
${isProgPrj(ctx) ? `<button class="win-btn" id="pg-store">기성 칸 반영</button><button class="win-btn" id="pg-next">다음 회차 등록</button>` : ""}</div>`;
const nodes = G.aggregate(base, run, n0(p.level));
const pc = (x, c) => (c ? Math.round((x / c) * 1e4) / 1e2 : 0);
const rows = nodes.map((nd) => {
@@ -389,6 +392,11 @@
re();
});
api.onClick("pg-store", () => (applyStorage(ctx), re()));
api.onClick("pg-next", () => {
applyStorage(ctx, true);
p.seeded = false; // 새 전회(칸 3)로 다시 읽음
re();
});
api.onChange("pg-iyun", (e) => ((rd().iyunManual = val(e.target.value)), re()));
api.onChange("pg-level", (e) => ((p.level = Number(e.target.value)), re()));
api.bindEach(".pg-q", "onchange", (el) => {