Files
envi-code/SourceCode/Code2026/tg_shs/shs_kernal/TCheckFloorRectData.cpp
T

571 lines
14 KiB
C++
Raw Normal View History

2026-10-04 00:04:20 +08:00
#include "stdafx.h"
2026-09-28 15:28:50 +08:00
#include "TCheckFloorRectData.h"
XCheckFloorRectData::XCheckFloorRectData()
{
m_csPrompt = _T("");
}
XCheckFloorRectData::~XCheckFloorRectData()
{
m_csPrompt = _T("");
ClearFloors();
}
2026-10-04 00:04:20 +08:00
// 获取提示语
2026-09-28 15:28:50 +08:00
CString XCheckFloorRectData::GetPrompt() const
{
return m_csPrompt;
}
2026-10-04 00:04:20 +08:00
// 获取楼层号数组
2026-09-28 15:28:50 +08:00
void XCheckFloorRectData::GetFloors(AcDbIntArray &aryFloors) const
{
aryFloors = m_aryFloors;
}
2026-10-04 00:04:20 +08:00
// 检查层高输入是否合法,自动去掉前后的空格
2026-09-28 15:28:50 +08:00
bool XCheckFloorRectData::IsHeightLegal(CString &csHeight)
{
2026-10-04 00:04:20 +08:00
csHeight.TrimLeft(); // 去掉前后的空格
2026-09-28 15:28:50 +08:00
csHeight.TrimRight();
2026-10-04 00:04:20 +08:00
if (csHeight.IsEmpty()) // 输入值为空
2026-09-28 15:28:50 +08:00
{
2026-10-04 00:04:20 +08:00
m_csPrompt = _T("警告: 层高不能为空! ");
2026-09-28 15:28:50 +08:00
return false;
}
TCHAR chTemp;
short nLength = csHeight.GetLength();
for (short i = 0; i < nLength; i++)
{
chTemp = csHeight.GetAt(i);
2026-10-04 00:04:20 +08:00
if (chTemp < _T('0') || chTemp > _T('9')) // 只能输入正整数
2026-09-28 15:28:50 +08:00
{
2026-10-04 00:04:20 +08:00
m_csPrompt = _T("警告: 请用毫米单位, 以整数输入层高数据! ");
2026-09-28 15:28:50 +08:00
return false;
}
}
2026-10-04 00:04:20 +08:00
m_csPrompt = _T(""); // 输出警告提示设置为空
2026-09-28 15:28:50 +08:00
return true;
}
2026-10-04 00:04:20 +08:00
// 检查层号输入是否合法,部分情况自动修改csName
2026-09-28 15:28:50 +08:00
bool XCheckFloorRectData::IsNameLegal(CString &csName)
{
ClearFloors();
/////////////////////////////////////////////////////////////////////
2026-10-04 00:04:20 +08:00
// 1)对“空格”进行处理,去掉前后空格,合并多个空格,同时将间隔类空格,替换为逗号
DealSpace(_T(" "), csName); // 半角空格
DealSpace(_T(" "), csName); // 全角空格
2026-09-28 15:28:50 +08:00
2026-10-04 00:04:20 +08:00
if (csName.IsEmpty()) // 输入值为空
2026-09-28 15:28:50 +08:00
{
2026-10-04 00:04:20 +08:00
m_csPrompt = _T("警告: 层号不能为空! ");
2026-09-28 15:28:50 +08:00
return false;
}
/////////////////////////////////////////////////////////////////////
2026-10-04 00:04:20 +08:00
// 2)判断层号是否是“间断”的情况(全角、半角逗号)
2026-09-28 15:28:50 +08:00
bool bRet = IsDisconnectNum(_T(","), csName);
2026-10-04 00:04:20 +08:00
if (bRet) // 含有半角“,”
2026-09-28 15:28:50 +08:00
{
m_csPrompt = _T("");
return true;
}
2026-10-04 00:04:20 +08:00
if (!m_csPrompt.IsEmpty()) // 楼层号不符合要求
2026-09-28 15:28:50 +08:00
{
return false;
}
2026-10-04 00:04:20 +08:00
bRet = IsDisconnectNum(_T(","), csName);
if (bRet) // 含有全角“,”
2026-09-28 15:28:50 +08:00
{
m_csPrompt = _T("");
return true;
}
2026-10-04 00:04:20 +08:00
if (!m_csPrompt.IsEmpty()) // 楼层号不符合要求
2026-09-28 15:28:50 +08:00
{
return false;
}
/////////////////////////////////////////////////////////////////////
2026-10-04 00:04:20 +08:00
// 3)判断层号是否是“连续”的情况(全角、半角波浪线、折断线)
2026-09-28 15:28:50 +08:00
int nLow(0), nUp(0);
bRet = IsContinuousNum(csName, nLow, nUp);
2026-10-04 00:04:20 +08:00
if (bRet) // 是连续的情况
2026-09-28 15:28:50 +08:00
{
2026-10-04 00:04:20 +08:00
bRet = AppendNum(nLow, nUp); // 将有效的楼层添加到数组中
2026-09-28 15:28:50 +08:00
if (!bRet)
{
2026-10-04 00:04:20 +08:00
m_csPrompt = _T("警告: 层号不能有重复! ");
2026-09-28 15:28:50 +08:00
}
else
{
m_csPrompt = _T("");
}
return bRet;
}
2026-10-04 00:04:20 +08:00
if (!m_csPrompt.IsEmpty()) // 楼层号不符合要求
2026-09-28 15:28:50 +08:00
{
return false;
}
/////////////////////////////////////////////////////////////////////
2026-10-04 00:04:20 +08:00
// 4)判断是否是“只包含一层”的情况
2026-09-28 15:28:50 +08:00
int nNumber = GetFloorNumber(csName);
2026-10-04 00:04:20 +08:00
if (!m_csPrompt.IsEmpty()) // 楼层号不符合要求
2026-09-28 15:28:50 +08:00
{
return false;
}
2026-10-04 00:04:20 +08:00
bRet = AppendNum(nNumber); // 将有效的楼层添加到数组中
2026-09-28 15:28:50 +08:00
if (!bRet)
{
2026-10-04 00:04:20 +08:00
m_csPrompt = _T("警告: 层号不能有重复! ");
2026-09-28 15:28:50 +08:00
}
else
{
m_csPrompt = _T("");
}
return bRet;
}
2026-10-04 00:04:20 +08:00
// 判断是否存在“指定”间断符号连接的楼层号,递归调用
2026-09-28 15:28:50 +08:00
bool XCheckFloorRectData::IsDisconnectNum(CString csSymb, CString &csName)
{
/////////////////////////////////////////////////////////////////////
2026-10-04 00:04:20 +08:00
// 1)对“空格”进行处理,去掉前后的空格
2026-09-28 15:28:50 +08:00
csName.TrimLeft();
csName.TrimRight();
2026-10-04 00:04:20 +08:00
if (csName.IsEmpty()) // 输入值为空
2026-09-28 15:28:50 +08:00
{
2026-10-04 00:04:20 +08:00
m_csPrompt = _T("警告: 层号不能为空! ");
2026-09-28 15:28:50 +08:00
return false;
}
/////////////////////////////////////////////////////////////////////
2026-10-04 00:04:20 +08:00
// 2)查找指定“间断符号”是否存在
2026-09-28 15:28:50 +08:00
int nRet = csName.Find(csSymb, 0);
2026-10-04 00:04:20 +08:00
if (nRet < 0) // 不含有指定间断类连字符csSymb
2026-09-28 15:28:50 +08:00
{
m_csPrompt = _T("");
return false;
}
2026-10-04 00:04:20 +08:00
if (nRet == 0) // 首位必须为数字
2026-09-28 15:28:50 +08:00
{
2026-10-04 00:04:20 +08:00
m_csPrompt = _T("警告: 层号连字符仅能在数字之间出现! ");
2026-09-28 15:28:50 +08:00
return false;
}
/////////////////////////////////////////////////////////////////////
2026-10-04 00:04:20 +08:00
// 3)对“连接符左边”的楼层号进一步判断
2026-09-28 15:28:50 +08:00
CString csLeft = csName.Left(nRet);
int nLow(0), nUp(0);
2026-10-04 00:04:20 +08:00
// 判断是否是连续的楼层号
if (!IsContinuousNum(csLeft, nLow, nUp)) // 不连续
2026-09-28 15:28:50 +08:00
{
2026-10-04 00:04:20 +08:00
if (!m_csPrompt.IsEmpty()) // 楼层号不符合要求
2026-09-28 15:28:50 +08:00
{
return false;
}
2026-10-04 00:04:20 +08:00
//////////只包含一层的情况//////////
2026-09-28 15:28:50 +08:00
nLow = GetFloorNumber(csLeft);
2026-10-04 00:04:20 +08:00
if (!m_csPrompt.IsEmpty()) // 楼层号不符合要求
2026-09-28 15:28:50 +08:00
{
return false;
}
if (!AppendNum(nLow))
{
2026-10-04 00:04:20 +08:00
m_csPrompt = _T("警告: 层号不能有重复! ");
2026-09-28 15:28:50 +08:00
return false;
}
}
2026-10-04 00:04:20 +08:00
else // 连续
2026-09-28 15:28:50 +08:00
{
if (!AppendNum(nLow, nUp))
{
2026-10-04 00:04:20 +08:00
m_csPrompt = _T("警告: 层号不能有重复! ");
2026-09-28 15:28:50 +08:00
return false;
}
}
/////////////////////////////////////////////////////////////////////
2026-10-04 00:04:20 +08:00
// 4)对“连接符右边”的楼层号,进一步递归判断
2026-09-28 15:28:50 +08:00
int nLength = csName.GetLength();
CString csRight = csName.Right(nLength - nRet - 1);
2026-10-04 00:04:20 +08:00
//////////判断是否是间断楼层号//////////
// 注:不支持混合连字符
if (IsDisconnectNum(csSymb, csRight)) // 间断,递归调用
2026-09-28 15:28:50 +08:00
{
2026-10-04 00:04:20 +08:00
csName = csLeft + csSymb + csRight; // 重新合成层号,去掉空格
2026-09-28 15:28:50 +08:00
return true;
}
2026-10-04 00:04:20 +08:00
if (!m_csPrompt.IsEmpty()) // 楼层号不符合要求
2026-09-28 15:28:50 +08:00
{
return false;
}
2026-10-04 00:04:20 +08:00
//////////判断是否是连续的楼层号//////////
if (IsContinuousNum(csRight, nLow, nUp)) // 连续
2026-09-28 15:28:50 +08:00
{
if (!AppendNum(nLow, nUp))
{
2026-10-04 00:04:20 +08:00
m_csPrompt = _T("警告: 层号不能有重复! ");
2026-09-28 15:28:50 +08:00
return false;
}
2026-10-04 00:04:20 +08:00
csName = csLeft + csSymb + csRight; // 重新合成层号,去掉空格
2026-09-28 15:28:50 +08:00
return true;
}
2026-10-04 00:04:20 +08:00
if (!m_csPrompt.IsEmpty()) // 楼层号不符合要求
2026-09-28 15:28:50 +08:00
{
return false;
}
2026-10-04 00:04:20 +08:00
//////////只包含一层的情况//////////
2026-09-28 15:28:50 +08:00
nLow = GetFloorNumber(csRight);
2026-10-04 00:04:20 +08:00
if (!m_csPrompt.IsEmpty()) // 楼层号不符合要求
2026-09-28 15:28:50 +08:00
{
return false;
}
if (!AppendNum(nLow))
{
2026-10-04 00:04:20 +08:00
m_csPrompt = _T("警告: 层号不能有重复! ");
2026-09-28 15:28:50 +08:00
return false;
}
2026-10-04 00:04:20 +08:00
csName = csLeft + csSymb + csRight; // 重新合成层号,去掉空格
2026-09-28 15:28:50 +08:00
return true;
}
2026-10-04 00:04:20 +08:00
// 判断是否存在连续的楼层号
2026-09-28 15:28:50 +08:00
bool XCheckFloorRectData::IsContinuousNum(CString &csName, int &nLow, int &nUp)
{
/////////////////////////////////////////////////////////////////////
2026-10-04 00:04:20 +08:00
// 1)对“空格”进行处理,去掉前后的空格
2026-09-28 15:28:50 +08:00
csName.TrimLeft();
csName.TrimRight();
2026-10-04 00:04:20 +08:00
if (csName.IsEmpty()) // 输入值为空
2026-09-28 15:28:50 +08:00
{
2026-10-04 00:04:20 +08:00
m_csPrompt = _T("警告: 层号不能为空! ");
2026-09-28 15:28:50 +08:00
return false;
}
/////////////////////////////////////////////////////////////////////
2026-10-04 00:04:20 +08:00
// 2)逐个判断层号是否是“连续”的情况(含有全角、半角波浪号、连接线)
2026-09-28 15:28:50 +08:00
bool bRet = IsContinuousNum(_T("~"), csName, nLow, nUp);
2026-10-04 00:04:20 +08:00
if (bRet) // 含有半角“~”
2026-09-28 15:28:50 +08:00
{
return true;
}
2026-10-04 00:04:20 +08:00
if (!m_csPrompt.IsEmpty()) // 楼层号不符合要求
2026-09-28 15:28:50 +08:00
{
return false;
}
2026-10-04 00:04:20 +08:00
bRet = IsContinuousNum(_T("~"), csName, nLow, nUp);
if (bRet) // 含有全角“~”
2026-09-28 15:28:50 +08:00
{
return true;
}
2026-10-04 00:04:20 +08:00
if (!m_csPrompt.IsEmpty()) // 楼层号不符合要求
2026-09-28 15:28:50 +08:00
{
return false;
}
bRet = IsContinuousNum(_T("-"), csName, nLow, nUp);
2026-10-04 00:04:20 +08:00
if (bRet) // 含有半角“-”
2026-09-28 15:28:50 +08:00
{
return true;
}
2026-10-04 00:04:20 +08:00
if (!m_csPrompt.IsEmpty()) // 楼层号不符合要求
2026-09-28 15:28:50 +08:00
{
return false;
}
2026-10-04 00:04:20 +08:00
bRet = IsContinuousNum(_T("-"), csName, nLow, nUp);
if (bRet) // 含有全角“-”
2026-09-28 15:28:50 +08:00
{
return true;
}
2026-10-04 00:04:20 +08:00
if (!m_csPrompt.IsEmpty()) // 楼层号不符合要求
2026-09-28 15:28:50 +08:00
{
return false;
}
2026-10-04 00:04:20 +08:00
return false; // 只包含一层的情况
2026-09-28 15:28:50 +08:00
}
2026-10-04 00:04:20 +08:00
// 判断是否存在指定符号的连续的楼层号
2026-09-28 15:28:50 +08:00
bool XCheckFloorRectData::IsContinuousNum(CString csSymb, CString &csName, int &nLow, int &nUp)
{
/////////////////////////////////////////////////////////////////////
2026-10-04 00:04:20 +08:00
// 1)查找指定“连续符号”是否存在
2026-09-28 15:28:50 +08:00
int nRet = csName.Find(csSymb, 0);
2026-10-04 00:04:20 +08:00
if (nRet < 0) // 不存在间断类连字符
2026-09-28 15:28:50 +08:00
{
return false;
}
2026-10-04 00:04:20 +08:00
if (nRet == 0) // 符号出现在首位
2026-09-28 15:28:50 +08:00
{
2026-10-04 00:04:20 +08:00
if (csSymb==_T("-") || csSymb==_T("-")) // 进一步判断是否是首位的负号
2026-09-28 15:28:50 +08:00
{
nRet = csName.Find(csSymb, 1);
2026-10-04 00:04:20 +08:00
if (nRet < 2) // 不存在间断类连字符
2026-09-28 15:28:50 +08:00
{
return false;
}
}
2026-10-04 00:04:20 +08:00
else // 波浪号不可能出现在首位
2026-09-28 15:28:50 +08:00
{
2026-10-04 00:04:20 +08:00
m_csPrompt = _T("警告: 层号连字符仅能在数字之间出现! ");
2026-09-28 15:28:50 +08:00
return false;
}
}
/////////////////////////////////////////////////////////////////////
2026-10-04 00:04:20 +08:00
// 2)以“连续符号”为界,分左、右,转化为数字
2026-09-28 15:28:50 +08:00
int nLength = csName.GetLength();
CString csLow = csName.Left(nRet);
2026-10-04 00:04:20 +08:00
// Add by Zyu on 100423,如果是全角的连字符,那么连字符占两位。
if (_T("~") == csSymb || _T("-") == csSymb)
2026-09-28 15:28:50 +08:00
{
nRet++;
}
CString csUp = csName.Right(nLength - nRet - 1);
2026-10-04 00:04:20 +08:00
// “连接符左边”的楼层号
2026-09-28 15:28:50 +08:00
nLow = GetFloorNumber(csLow);
if (!m_csPrompt.IsEmpty())
{
2026-10-04 00:04:20 +08:00
return false; // 楼层号不符合要求
2026-09-28 15:28:50 +08:00
}
2026-10-04 00:04:20 +08:00
// “连接符右边”的楼层号
2026-09-28 15:28:50 +08:00
nUp = GetFloorNumber(csUp);
if (!m_csPrompt.IsEmpty())
{
2026-10-04 00:04:20 +08:00
return false; // 楼层号不符合要求
2026-09-28 15:28:50 +08:00
}
/////////////////////////////////////////////////////////////////////
2026-10-04 00:04:20 +08:00
// 3)对左、右楼层号进行处理,左边为小数,右边为大数
// 出现负数,自动将连接符号变为“~”,以防止歧义
2026-09-28 15:28:50 +08:00
if (nLow<0 || nUp<0)
{
2026-10-04 00:04:20 +08:00
csSymb = _T("~");
2026-09-28 15:28:50 +08:00
}
2026-10-04 00:04:20 +08:00
if (nLow > nUp) // 下限大于上限,自动交换
2026-09-28 15:28:50 +08:00
{
Exchange(nLow, nUp);
csName = csUp + csSymb + csLow;
}
2026-10-04 00:04:20 +08:00
else if (nLow == nUp) // 上限与下限相等,去掉连字符
2026-09-28 15:28:50 +08:00
{
csName = csLow;
}
2026-10-04 00:04:20 +08:00
else // 上限小于下限
2026-09-28 15:28:50 +08:00
{
csName = csLow + csSymb + csUp;
}
return true;
}
2026-10-04 00:04:20 +08:00
// 检查楼层号是否是正负一到三位数以内的整型数,直接返回楼层号,根据提示是否为空判断是否获取成功
2026-09-28 15:28:50 +08:00
int XCheckFloorRectData::GetFloorNumber(CString &csName)
{
/////////////////////////////////////////////////////////////////////
2026-10-04 00:04:20 +08:00
// 1)对“空格”进行处理,去掉前后的空格
2026-09-28 15:28:50 +08:00
csName.TrimLeft();
csName.TrimRight();
if (csName.IsEmpty())
{
2026-10-04 00:04:20 +08:00
m_csPrompt = _T("警告: 层号不能为空! "); // 输入值为空
2026-09-28 15:28:50 +08:00
return 0;
}
/////////////////////////////////////////////////////////////////////
2026-10-04 00:04:20 +08:00
// 2)逐位判断是否是数字,首位允许是负号
2026-09-28 15:28:50 +08:00
TCHAR chTemp;
short nLength = csName.GetLength();
for (short i = 0; i < nLength; i++)
{
chTemp = csName.GetAt(i);
2026-10-04 00:04:20 +08:00
if (chTemp < _T('0') || chTemp > _T('9')) // 只允许输入整数
2026-09-28 15:28:50 +08:00
{
if (_T('-')==chTemp && i==0)
{
continue;
}
2026-10-04 00:04:20 +08:00
m_csPrompt = _T("警告: 层号数据必须为整数! ");
2026-09-28 15:28:50 +08:00
return 0;
}
}
/////////////////////////////////////////////////////////////////////
2026-10-04 00:04:20 +08:00
// 3)对楼层号进行进一步判断
2026-09-28 15:28:50 +08:00
int nNum = _ttoi(csName);
2026-10-04 00:04:20 +08:00
if (nNum>999 || nNum<-99) // 只允许正负一到三位以内的整数,如:-99≤N≤999
2026-09-28 15:28:50 +08:00
{
2026-10-04 00:04:20 +08:00
m_csPrompt = _T("警告: 层号只允许正负一到三位以内的整数! ");
2026-09-28 15:28:50 +08:00
return 0;
}
2026-10-04 00:04:20 +08:00
if (nNum == 0) // 不允许是0
2026-09-28 15:28:50 +08:00
{
2026-10-04 00:04:20 +08:00
m_csPrompt = _T("警告: 层号不允许是0! ");
2026-09-28 15:28:50 +08:00
return 0;
}
m_csPrompt = _T("");
return nNum;
}
2026-10-04 00:04:20 +08:00
// 处理空格
2026-09-28 15:28:50 +08:00
void XCheckFloorRectData::DealSpace(CString csSymb, CString &csName)
{
/////////////////////////////////////////////////////////////////////
2026-10-04 00:04:20 +08:00
// 1)去掉前后的空格
2026-09-28 15:28:50 +08:00
csName.TrimLeft();
csName.TrimRight();
/////////////////////////////////////////////////////////////////////
2026-10-04 00:04:20 +08:00
// 2)以csSymb为界,分左、右处理
2026-09-28 15:28:50 +08:00
int nRet = csName.Find(csSymb, 0);
if (nRet < 0)
{
return;
}
int nLength = csName.GetLength();
CString csLeft = csName.Left(nRet),
csRight = csName.Right(nLength - nRet - 1);
/////////////////////////////////////////////////////////////////////
2026-10-04 00:04:20 +08:00
// 3)递归处理多空格
2026-09-28 15:28:50 +08:00
csRight.TrimLeft();
DealSpace(csSymb, csRight);
/////////////////////////////////////////////////////////////////////
2026-10-04 00:04:20 +08:00
// 4)如果前一位不是数字,自动去掉空格
2026-09-28 15:28:50 +08:00
TCHAR chTempPre;
2026-10-04 00:04:20 +08:00
chTempPre = csName.GetAt(nRet-1); // 前一位,注:由于执行过csName.TrimLeft(),首位一定不是空格
if (chTempPre < _T('0') || chTempPre > _T('9')) // 非数字
2026-09-28 15:28:50 +08:00
{
csName = csLeft + csRight;
return;
}
/////////////////////////////////////////////////////////////////////
2026-10-04 00:04:20 +08:00
// 5)判断是否要用逗号替换空格
2026-09-28 15:28:50 +08:00
TCHAR chTempNext;
2026-10-04 00:04:20 +08:00
chTempNext = csRight.GetAt(0); // 后一位
2026-09-28 15:28:50 +08:00
2026-10-04 00:04:20 +08:00
bool bReplace(false); // 标记是否用逗号替换空格
if (chTempNext >= _T('0') && chTempNext <= _T('9')) // 数字
2026-09-28 15:28:50 +08:00
{
bReplace = true;
}
2026-10-04 00:04:20 +08:00
else if (_T('-') == chTempNext) // 负号
2026-09-28 15:28:50 +08:00
{
nRet = csRight.Find(_T("-"), 1);
2026-10-04 00:04:20 +08:00
if (nRet > 0) // 说明chTempNext不是负号,而是连字符,直接去掉空格
2026-09-28 15:28:50 +08:00
{
csName = csLeft + csRight;
return;
}
int nLeft = _ttoi(csLeft);
2026-10-04 00:04:20 +08:00
if (nLeft < 0) // 进一步判断符号前的数字是否也是负数
2026-09-28 15:28:50 +08:00
{
bReplace = true;
}
}
2026-10-04 00:04:20 +08:00
else // 其他符号,自动去掉空格
2026-09-28 15:28:50 +08:00
{
csName = csLeft + csRight;
return;
}
/////////////////////////////////////////////////////////////////////
2026-10-04 00:04:20 +08:00
// 6)将多个空格合并,并根据需要用逗号替换空格
2026-09-28 15:28:50 +08:00
if (bReplace)
{
csSymb = _T(",");
}
csName = csLeft + csSymb + csRight;
}
2026-10-04 00:04:20 +08:00
// 清空数组
2026-09-28 15:28:50 +08:00
void XCheckFloorRectData::ClearFloors()
{
int nLen = m_aryFloors.length();
if (nLen > 0)
{
m_aryFloors.removeSubArray(0, nLen-1);
}
}
2026-10-04 00:04:20 +08:00
// 向数组中增加楼层号,自动检查,若和aryFloorNum中有重复,返回false。nLow为下限,nUp为上限,自动过滤掉0
2026-09-28 15:28:50 +08:00
bool XCheckFloorRectData::AppendNum(int nNum)
{
int nIndex = 0;
2026-10-04 00:04:20 +08:00
if (m_aryFloors.find(nNum, nIndex, 0)) // 找到重复楼层
2026-09-28 15:28:50 +08:00
{
return false;
}
2026-10-04 00:04:20 +08:00
m_aryFloors.append(nNum); // 添加
2026-09-28 15:28:50 +08:00
return true;
}
bool XCheckFloorRectData::AppendNum(int nLow, int nUp)
{
2026-10-04 00:04:20 +08:00
if (nLow == nUp) // 上限、下限相等,只添加一个
2026-09-28 15:28:50 +08:00
{
return AppendNum(nLow);
}
for (int i=nLow; i<=nUp; i++)
{
2026-10-04 00:04:20 +08:00
if (i == 0) // 过滤掉0
2026-09-28 15:28:50 +08:00
{
i++;
}
if (!AppendNum(i))
{
return false;
}
}
return true;
}