From 4ed7fc8447d202e21ef9907e2aac63ef6fcbf301 Mon Sep 17 00:00:00 2001
From: zxd <zxdvslxy@gmail.com>
Date: 星期二, 17 十月 2023 12:33:23 +0800
Subject: [PATCH] 提交图码转换部分修改: 1.基本图形转换 2.ANS\ORS\PSHS\POPS命令的处理 3.重构了转换方法,命名为CMTerm1View::ScanLDSCells2();同时将翻译单独提出为方法CMTerm1View::Translate2Prog() 4.快捷键的添加绑定 5.其他相关方法修改,Insert,Delete,FocusChg…… 6.其他关联修改

---
 MTerm2/MTerm2View.cpp |  199 ++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 169 insertions(+), 30 deletions(-)

diff --git a/MTerm2/MTerm2View.cpp b/MTerm2/MTerm2View.cpp
index 54b99ed..ac169e9 100644
--- a/MTerm2/MTerm2View.cpp
+++ b/MTerm2/MTerm2View.cpp
@@ -16,7 +16,7 @@
 #include "DialogSetCoil.h"
 #include "DialogSetData.h"
 #include "DialogIoComment.h"
-
+#include "KDefine.h"
 
 #ifdef _DEBUG
 #define new DEBUG_NEW
@@ -196,8 +196,8 @@
 	xform1.eM12 = 0;
 	xform1.eM21 = 0;
 	xform1.eM22 = 1;
-	xform1.eDx = -scroll1.x;
-	xform1.eDy = -scroll1.y;
+	xform1.eDx = float(-scroll1.x);
+	xform1.eDy = float(-scroll1.y);
 
 	XFORM xform2 = { 1, 0, 0, 1, 0, 0 };
 
@@ -209,6 +209,34 @@
 	return 0;
 }
 
+int CMTerm2View::ScrollToCell(int nRow, int nCol)
+{
+	int CellTotalHeight = m_CellHeight + (m_bShowComments ? m_CommentHeight : 0);
+
+	CSize sizeTotal;
+	// TODO: 璁$畻姝よ鍥剧殑鍚堣澶у皬
+	sizeTotal.cx = m_LeftMargin + m_CellWidth * m_CellPerLine + m_CellWidth * 2;
+	sizeTotal.cy = m_TopMargin + CellTotalHeight * (m_nTotalRow );
+	CSize sizeSb;
+	GetScrollBarSizes(sizeSb);
+	POINT pt1;
+	pt1.x = 0;
+	pt1.y = nRow * CellTotalHeight;
+	ScrollToPosition(pt1);
+	return 0;
+}
+
+int CMTerm2View::ScrollCellIntoView(int nRow, int nCol)
+{
+	int CellTotalHeight = m_CellHeight + (m_bShowComments ? m_CommentHeight : 0);
+	return 0;
+}
+
+int CMTerm2View::isCellInView(int nRow, int nCol)
+{
+	int CellTotalHeight = m_CellHeight + (m_bShowComments ? m_CommentHeight : 0);
+	return 0;
+}
 
 int CMTerm2View::DrawLDSGraph(CDC* pDC)
 {
@@ -1164,8 +1192,8 @@
 	s1.Format(_T("LD db Clk %d %d  %02X  Scroll %d %d  Total %d %d Row %d Col %d"),
 		point.x, point.y, nFlags, scroll1.x, scroll1.y, tx, ty, nRow, nCol);
 	m_pStatusBar->SetPaneText(6, s1);
-	m_pStatusBar->SetPaneBackgroundColor(6, RGB(255, 255, 0));
-	m_pStatusBar->SetPaneTextColor(6, RGB(0, 0, 255));
+//	m_pStatusBar->SetPaneBackgroundColor(6, RGB(255, 255, 0));
+//	m_pStatusBar->SetPaneTextColor(6, RGB(0, 0, 255));
 //	m_pStatusBar->EnablePaneProgressBar(6);
 //	m_pStatusBar->SetPaneProgress(6, 5);
 	SysLog(s1);
@@ -1401,13 +1429,14 @@
 	s1.Format(_T("Insert Blank Line"));
 	SysLog(s1);
 	m_FocusRow;
+	//褰撳墠琛屼箣鍚庣殑鎵�鏈夛紝涓嬬Щ涓�琛�
 	for (int i = m_nTotalRow - 1; i >= m_FocusRow; i--) {
 		for (int j = 0; j < m_CellPerLine; j++) {
 			Cells[i + 1][j] = Cells[i][j];
 		}
 	}
 	m_nTotalRow += 1;
-		
+	// 褰撳墠琛岀伆鑹�	
 	for (int j = 0; j < m_CellPerLine; j++)	{
 		Cells[m_FocusRow][j].clear();
 		Cells[m_FocusRow][j].bEditing = 1;
@@ -1417,11 +1446,45 @@
 			Cells[m_FocusRow][j].bLeftLineDn = 1;
 		}
 	}
+
+	// 褰撳墠琛� 鍔犲叆 瑙︾偣
+//	m_FocusCol;
+//	Cells[m_FocusRow][0].nType= typeNO;
+//	Cells[m_FocusRow][0].nDataType = KLCoilTypeX;
+//	Cells[m_FocusRow][0].nDataAddr = 15;
+//	Cells[m_FocusRow][0].sCoilName = "ABCDEFG";
+
 	m_bModified = 1;
 	needReDraw = 1;
 	this->RedrawWindow();
 }
+int FindTypeIndex(CString str[], CString strType, int num)
+{
+	for (int i = 0;i < num;i++)
+	{
+		if (strType == str[i])
+		{
+			return i;
+		}
+	}
+	return -1;
+}
 
+void CMTerm2View::GetIncToView(stCell cell1)               //**************************************************************************************************//
+{
+
+
+	Cells[m_FocusRow][m_FocusCol] = cell1;
+
+	m_bModified = 1;
+	needReDraw = 1;
+	m_FocusCol += 1;
+	if (m_FocusCol >= 16) 
+	{ m_FocusCol = 0;m_FocusRow += 1; }
+	
+	this->RedrawWindow();
+	
+}
 void CMTerm2View::OnUpdateInsertBlankLine(CCmdUI *pCmdUI)
 {
 	// TODO: 鍦ㄦ娣诲姞鍛戒护鏇存柊鐢ㄦ埛鐣岄潰澶勭悊绋嬪簭浠g爜
@@ -1507,17 +1570,17 @@
 		if (!pDoc->m_bOnline) {
 			s1 = _T("绂荤嚎");
 			m_pStatusBar->SetPaneText(idxOnline, s1);
-			m_pStatusBar->SetPaneBackgroundColor(idxOnline);
+//			m_pStatusBar->SetPaneBackgroundColor(idxOnline);
 		}
 		else if (pDoc->m_bOnline) {
 			if (pDoc->m_bSimulate)	{
 				s1 = _T("鍦ㄧ嚎(浠跨湡)");
 				m_pStatusBar->SetPaneText(2, s1);
-				m_pStatusBar->SetPaneBackgroundColor(idxOnline, OnlineColor);
+//				m_pStatusBar->SetPaneBackgroundColor(idxOnline, OnlineColor);
 			}else{
 				s1 = _T("鍦ㄧ嚎");
 				m_pStatusBar->SetPaneText(2, s1);
-				m_pStatusBar->SetPaneBackgroundColor(idxOnline, OnlineColor);
+//				m_pStatusBar->SetPaneBackgroundColor(idxOnline, OnlineColor);
 			}
 		}
 	}
@@ -1525,20 +1588,20 @@
 		if (!pDoc->m_bOnline)		{
 			s1 = _T("");
 			m_pStatusBar->SetPaneText(idxRunning, s1);
-			m_pStatusBar->SetPaneBackgroundColor(idxRunning);
-			m_pStatusBar->SetPaneWidth(idxRunning, 0);
+//			m_pStatusBar->SetPaneBackgroundColor(idxRunning);
+//			m_pStatusBar->SetPaneWidth(idxRunning, 0);
 			m_pStatusBar->SetPaneStyle(idxRunning, SBPS_DISABLED);
 
 		}else if (!pDoc->m_bPlcRunning) {
 			s1 = _T("PROG");
 			m_pStatusBar->SetPaneText(idxRunning, s1);
-			m_pStatusBar->SetPaneWidth(idxRunning, s1.GetLength()*8);
-			m_pStatusBar->SetPaneBackgroundColor(idxRunning, ProgColor);
+//			m_pStatusBar->SetPaneWidth(idxRunning, s1.GetLength()*8);
+//			m_pStatusBar->SetPaneBackgroundColor(idxRunning, ProgColor);
 		}else {
 			s1 = _T("RUN");
 			m_pStatusBar->SetPaneText(idxRunning, s1);
-			m_pStatusBar->SetPaneWidth(idxRunning, s1.GetLength() * 8);
-			m_pStatusBar->SetPaneBackgroundColor(idxRunning, RunningColor);
+//			m_pStatusBar->SetPaneWidth(idxRunning, s1.GetLength() * 8);
+//			m_pStatusBar->SetPaneBackgroundColor(idxRunning, RunningColor);
 		}
 	}
 	if (nIndex == idxMonitor || nIndex == -1) { // 鐩戞帶 //
@@ -1546,11 +1609,11 @@
 		if (!m_bMonitoring) {
 			s1 = _T("[鐩戞帶鍋滄]");
 			m_pStatusBar->SetPaneText(idxMonitor, s1);
-			m_pStatusBar->SetPaneBackgroundColor(idxMonitor);
+//			m_pStatusBar->SetPaneBackgroundColor(idxMonitor);
 		}else{
 			s1 = _T("[姝e湪鐩戞帶]");
 			m_pStatusBar->SetPaneText(idxMonitor, s1);
-			m_pStatusBar->SetPaneBackgroundColor(idxMonitor, MonitorColor);
+//			m_pStatusBar->SetPaneBackgroundColor(idxMonitor, MonitorColor);
 		}
 	}
 	if (nIndex == idxAddress || nIndex == -1) { // 鍦板潃锛屾湰绔�
@@ -1558,11 +1621,11 @@
 		if (!pDoc->m_bOnline) {
 			s1 = _T("鏈珯");
 			m_pStatusBar->SetPaneText(idxAddress, s1);
-			m_pStatusBar->SetPaneBackgroundColor(idxMonitor);
+//			m_pStatusBar->SetPaneBackgroundColor(idxMonitor);
 		}else {
 			s1 = _T("鏈珯");
 			m_pStatusBar->SetPaneText(idxAddress, s1);
-			m_pStatusBar->SetPaneBackgroundColor(idxMonitor, AddressColor);
+//			m_pStatusBar->SetPaneBackgroundColor(idxMonitor, AddressColor);
 		}
 
 	}
@@ -1631,12 +1694,12 @@
 	if (pDoc->m_bPlcRunning) {
 		s1 = _T("杩愯");
 		m_pStatusBar->SetPaneText(3, s1);
-		m_pStatusBar->SetPaneTextColor(3, RGB(0, 0, 0));
+//		m_pStatusBar->SetPaneTextColor(3, RGB(0, 0, 0));
 	}
 	else {
 		s1 = _T("鍋滄");
 		m_pStatusBar->SetPaneText(3, s1);
-		m_pStatusBar->SetPaneTextColor(3, RGB(0, 0, 0));
+//		m_pStatusBar->SetPaneTextColor(3, RGB(0, 0, 0));
 	}
 	s1.Format(_T("PCmdUI %d %d"), pCmdUI->m_nID, pCmdUI->m_nIndex);
 	DbgLog(s1);
@@ -2265,6 +2328,7 @@
 int CMTerm2View::TransLDSToProg()
 {
 	// TODO: 鍦ㄦ澶勬坊鍔犲疄鐜颁唬鐮�.
+	CMTerm2Doc * pDoc = GetDocument();
 	CString s1;
 	s1.Format(_T("Trans LDS to PRrog"));
 	DbgLog(s1);
@@ -2292,6 +2356,7 @@
 			nDivCount++;
 		}
 	}
+	stProgSection allprogs;
 	//姣忔鍗曠嫭澶勭悊
 	for (int i = 0; i < nDivCount; i++)	{
 		int nStartLine, nEndLine;
@@ -2342,25 +2407,54 @@
 		nCurPosX = 0;
 		CString sProg;
 		int nAllSteps=0;
+		stProgSection Progsec;
 		for (int i = nStartLine; i <= nEndLine; i++){
-			CString ProgSec;
+			CString sProgSec;
 			int nSteps = 0;;
 			nCurPosY = i;
+			stProgSection thisprogsec;
 			if (Cells[i][0].nType)
-			ScanLDSCells(nStartLine, nEndLine, nCurPosY, nCurPosX, 0, ProgSec,nSteps);
-			sProg += ProgSec;
+			ScanLDSCells(nStartLine, nEndLine, nCurPosY, nCurPosX, 0, thisprogsec, sProgSec,nSteps);
+			sProg += sProgSec;
 			nAllSteps += nSteps;
+			Progsec += thisprogsec;
 		}
 		DbgLog(_T("\r\n")+ sProg);
+		int n = int(Progsec.Progs.size());
+		s1.Format(_T("progSec steps %d "), n);
+		DbgLog(s1);
+		for (int i = 0; i < n; i++) {
+			int optype = Progsec.Progs[i].nOpType1;
+			CStringA OpTxtA, OpShowTxtA;
+			CString OpTxt, OpShowTxt;
+			pDoc->OpToTxt(optype, OpTxtA);
+			pDoc->OpToShowTxt(optype, OpShowTxtA);
+			OpTxt = OpTxtA;
+			OpShowTxt = OpShowTxtA;
+			s1.Format(_T("%d %s %s"), optype, OpTxt, OpShowTxt);
+			DbgLog(s1);
+		}
+		allprogs += Progsec;
 	}
 	//杈撳嚭绋嬪簭
-
-
-
+	int n=(int)allprogs.Progs.size();
+	s1.Format(_T("all prog steps %d "), n);
+	DbgLog(s1);
+	for (int i = 0; i < n; i++)	{
+		int optype=allprogs.Progs[i].nOpType1;
+		CStringA OpTxtA,OpShowTxtA;
+		CString OpTxt,OpShowTxt;
+		pDoc->OpToTxt(optype, OpTxtA);
+		pDoc->OpToShowTxt(optype, OpShowTxtA);
+		OpTxt = OpTxtA;
+		OpShowTxt = OpShowTxtA;
+		s1.Format(_T("%d %s %s"), optype, OpTxt, OpShowTxt);
+//		DbgLog(s1);
+	}
 	return 0;
 }
 
-int CMTerm2View::ScanLDSCells(int nStartLine, int nEndLine, int nPosY, int nPosX, int nLevel, CString & sProgSec, int &nSteps)
+int CMTerm2View::ScanLDSCells(int nStartLine, int nEndLine, int nPosY, int nPosX, int nLevel, stProgSection & progsec, CString & sProgSec, int &nSteps)
 {
 	// TODO: 鍦ㄦ澶勬坊鍔犲疄鐜颁唬鐮�.
 	CString s1;
@@ -2374,14 +2468,20 @@
 		//鍏堝鐞嗗綋鍓嶅崟鍏�;
 		int nType = Cells[nCurPosY][nCurPosX].nType;
 		CString sCellName = Cells[nCurPosY][nCurPosX].sCoilName;
+		CMTerm2Doc::stProg theprog;
+
 		if (nType == typeNO) {
 			if (j==0) {
 				s1.Format(_T("%d %d ST %s"), nCurPosY, nCurPosX,sCellName);
 				sProgSec.AppendFormat(_T("ST %s\r\n"),sCellName);
+				theprog.nOpType1 = OP_ST;
+				progsec.Append(theprog);
 			}
 			else {
 				s1.Format(_T("%d %d AN %s"), nCurPosY, nCurPosX, sCellName);
 				sProgSec.AppendFormat(_T("NO %s\r\n"), sCellName);
+				theprog.nOpType1 = OP_AN;
+				progsec.Append(theprog);
 			}
 			nSteps += 1;
 			DbgLog(s1);
@@ -2391,11 +2491,16 @@
 			if (j == 0) {
 				s1.Format(_T("%d %d ST/ %s"), nCurPosY, nCurPosX, sCellName);
 				sProgSec.AppendFormat(_T("ST/ %s\r\n"), sCellName);
+				theprog.nOpType1 = OP_ST_;
+				progsec.Append(theprog);
+
 			}
 			else
 			{
 				s1.Format(_T("%d %d AN/ %s"), nCurPosY, nCurPosX, sCellName);
 				sProgSec.AppendFormat(_T("AN/ %s\r\n"), sCellName);
+				theprog.nOpType1 = OP_AN_;
+				progsec.Append(theprog);
 			}
 			DbgLog(s1);
 			nSteps += 1;
@@ -2404,6 +2509,7 @@
 		if (nType == typePP) {
 			s1.Format(_T("%d %d PP %s"), nCurPosY, nCurPosX, sCellName);
 			DbgLog(s1);
+			//progsec.Append(theprog);
 			sProgSec.AppendFormat(_T("PP %s\r\n"), sCellName);
 			nSteps += 1;
 			nNextX =  1;
@@ -2411,6 +2517,7 @@
 		if (nType == typePN) {
 			s1.Format(_T("%d %d PN %s"), nCurPosY, nCurPosX, sCellName);
 			DbgLog(s1);
+			//progsec.Append(theprog);
 			sProgSec.AppendFormat(_T("PN %s\r\n"), sCellName, sCellName);
 			nSteps += 1;
 			nNextX =  1;
@@ -2419,6 +2526,8 @@
 			s1.Format(_T("%d %d NOT %s"), nCurPosY, nCurPosX, sCellName);
 			DbgLog(s1);
 			sProgSec.AppendFormat(_T("NOT %s\r\n"), sCellName);
+			theprog.nOpType1 = OP_NOT;
+			progsec.Append(theprog);
 			nSteps += 1;
 			nNextX =  1;
 		}else 
@@ -2426,6 +2535,8 @@
 			s1.Format(_T("%d %d DF %s"), nCurPosY, nCurPosX, sCellName);
 			DbgLog(s1);
 			sProgSec.AppendFormat(_T("DF %s\r\n"), sCellName);
+			theprog.nOpType1 = OP_DF;
+			progsec.Append(theprog);
 			nSteps += 1;
 			nNextX =  1;
 		}else 
@@ -2433,6 +2544,8 @@
 			s1.Format(_T("%d %d DF/ %s"), nCurPosY, nCurPosX, sCellName);
 			DbgLog(s1);
 			sProgSec.AppendFormat(_T("DF/ %s\r\n"), sCellName);
+			theprog.nOpType1 = OP_DF_;
+			progsec.Append(theprog);
 			nSteps += 1;
 			nNextX =  1;
 		}else 
@@ -2440,6 +2553,8 @@
 			s1.Format(_T("%d %d OUT %s"), nCurPosY, nCurPosX, sCellName);
 			DbgLog(s1);
 			sProgSec.AppendFormat(_T("OUT %s\r\n"), sCellName);
+			theprog.nOpType1 = OP_OUT;
+			progsec.Append(theprog);
 			nSteps += 1;
 			nNextX =  1;
 		}else 
@@ -2447,6 +2562,8 @@
 			s1.Format(_T("%d %d SET %s"), nCurPosY, nCurPosX, sCellName);
 			DbgLog(s1);
 			sProgSec.AppendFormat(_T("SET %s\r\n"), sCellName);
+			theprog.nOpType1 = OP_SET;
+			progsec.Append(theprog);
 			nSteps += 1;
 			nNextX =  1;
 		}else 
@@ -2454,12 +2571,16 @@
 			s1.Format(_T("%d %d RESET %s"), nCurPosY, nCurPosX, sCellName);
 			DbgLog(s1);
 			sProgSec.AppendFormat(_T("RESET %s\r\n"), sCellName);
+			theprog.nOpType1 = OP_RESET;
+			progsec.Append(theprog);
 			nSteps += 1;
 			nNextX =  1;
 		}else 
 		if (nType == typeCMP) {
 			s1.Format(_T("%d %d CMP %s %s %s"), nCurPosY, nCurPosX, sCellName,Cells[nCurPosY][nCurPosX+1].sParam,Cells[nCurPosY][nCurPosX + 2].sParam);
 			DbgLog(s1);
+			theprog.nOpType1 = OP_ST_GT;
+			progsec.Append(theprog);
 			sProgSec.AppendFormat(_T("CMP %s %s %s \r\n"), sCellName, Cells[nCurPosY][nCurPosX + 1].sParam, Cells[nCurPosY][nCurPosX + 2].sParam);
 			nSteps += 1;
 			nNextX =  3;
@@ -2467,6 +2588,8 @@
 		if (nType == typeTM) {
 			s1.Format(_T("%d %d TM %s %d %s"), nCurPosY, nCurPosX, sCellName,Cells[nCurPosY][nCurPosX+1].sParam,Cells[nCurPosY][nCurPosX + 2].sParam);
 			DbgLog(s1);
+			theprog.nOpType1 = OP_TMX;
+			progsec.Append(theprog);
 			sProgSec.AppendFormat(_T("TM %s %d %s\r\n"), sCellName, Cells[nCurPosY][nCurPosX+1].sParam, Cells[nCurPosY][nCurPosX + 2].sParam);
 			nSteps += 1;
 			nNextX =  3;
@@ -2474,6 +2597,8 @@
 		if (nType == typeFN1) {
 			s1.Format(_T("%d %d FN1 %s %s"), nCurPosY, nCurPosX, sCellName,Cells[nCurPosY][nCurPosX + 1].sParam);
 			DbgLog(s1);
+			theprog.nOpType1 = OP_INC;
+			progsec.Append(theprog);
 			sProgSec.AppendFormat(_T("FN1 %s %s\r\n"), sCellName, Cells[nCurPosY][nCurPosX + 1].sParam);
 			nSteps += 1;
 			nNextX =  2;
@@ -2481,6 +2606,8 @@
 		if (nType == typeFN2) {
 			s1.Format(_T("%d %d FN2 %s %s %s "), nCurPosY, nCurPosX, sCellName, Cells[nCurPosY][nCurPosX + 1].sParam, Cells[nCurPosY][nCurPosX + 2].sParam);
 			DbgLog(s1);
+			theprog.nOpType1 = OP_MV;
+			progsec.Append(theprog);
 			sProgSec.AppendFormat(_T("FN2 %s %s %s \r\n"), sCellName, Cells[nCurPosY][nCurPosX + 1].sParam, Cells[nCurPosY][nCurPosX + 2].sParam);
 			nSteps += 1;
 			nNextX =  3;
@@ -2488,6 +2615,8 @@
 		if (nType == typeFN3) {
 			s1.Format(_T("%d %d FN3 %s %s %s %s"), nCurPosY, nCurPosX, sCellName, Cells[nCurPosY][nCurPosX + 1].sParam, Cells[nCurPosY][nCurPosX + 2].sParam, Cells[nCurPosY][nCurPosX + 3].sParam);
 			DbgLog(s1);
+			theprog.nOpType1 = OP_ADD3;
+			progsec.Append(theprog);
 			sProgSec.AppendFormat(_T("FN3 %s %s %s %s\r\n"), sCellName, Cells[nCurPosY][nCurPosX + 1].sParam, Cells[nCurPosY][nCurPosX + 2].sParam, Cells[nCurPosY][nCurPosX + 3].sParam);
 			nSteps += 1;
 			nNextX =  4;
@@ -2495,12 +2624,15 @@
 			nNextX =  1;
 			//continue;
 		}
+
 		if (j + nNextX >= m_CellPerLine) continue;
 		if (Cells[nCurPosY][j + nNextX].bLeftLineUp || Cells[nCurPosY][j + nNextX].bLeftLineDn) {	// 鍙戠幇绔栫嚎
 			//鍏堢湅寰�涓婇潰鏈夋病鏈夎繛鎺�
 			if (Cells[nCurPosY][j + nNextX].bLeftLineUp) { // 寰�涓婇潰鏈夎繛鎺�
 				s1.Format(_T("%d %d ORS "), nCurPosY, nCurPosX);
 				DbgLog(s1);
+				theprog.nOpType1 = OP_ORS;
+				progsec.Append(theprog);
 				sProgSec.AppendFormat(_T("ORS \r\n"));
 				nSteps += 1;
 				nLevel -= 1;
@@ -2524,6 +2656,8 @@
 					if ( nPosX >0 || nLevel > 0) {
 					s1.Format(_T("%d %d ANS "), nCurPosY, nCurPosX);
 					DbgLog(s1);
+					theprog.nOpType1 = OP_ANS;
+					progsec.Append(theprog);
 					sProgSec.AppendFormat(_T("ANS \r\n"));
 					nSteps += 1;
 					nLevel -= 1;
@@ -2552,9 +2686,11 @@
 					DbgLog(s1);
 					CString ProgSec;
 					int theSteps = 0;
-					int r = ScanLDSCells(nStartLine, nEndLine, nLineTop, j + nNextX, nLevel,ProgSec,theSteps);
+					stProgSection thisprogsec;
+					int r = ScanLDSCells(nStartLine, nEndLine, nLineTop, j + nNextX, nLevel,thisprogsec, ProgSec,theSteps);
 					sProgSec += ProgSec;
 					nSteps += theSteps;
+					progsec += thisprogsec;
 					s1.Format(_T("<<<< Re %d : %d , Result %d "), nLineTop, j + nNextX, r);
 					DbgLog(s1);
 				}
@@ -2576,9 +2712,11 @@
 							CString ProgSec;
 							int theSteps = 0;
 							nLevel += 1;
-							res[nRightCount] = ScanLDSCells(nStartLine, nEndLine, k, j + nNextX, nLevel ,ProgSecs[nRightCount],theSteps);
+							stProgSection thisprogsec;
+							res[nRightCount] = ScanLDSCells(nStartLine, nEndLine, k, j + nNextX, nLevel ,thisprogsec,ProgSecs[nRightCount],theSteps);
 							nLastResult = res[nRightCount];
 							nSteps += theSteps;
+							progsec += thisprogsec;
 							//if (res[nRightCount] > 0) nLevel += 1;
 							sProgSec += ProgSec;
 							s1.Format(_T(" <<< Re %d : %d , Result %d Steps %d Last %d"), k, j + nNextX, res[nRightCount],theSteps,nLastSteps);
@@ -2619,3 +2757,4 @@
 	}
 	return 0;
 }
+

--
Gitblit v1.9.1