commit 2025-08-21 00:30 edit a bit ZtCStringBase
This commit is contained in:
@ -2410,13 +2410,13 @@ namespace ZNsMain
|
||||
{
|
||||
*VPC_CharDest-- = APC_Origin[VL_NowIndex--];
|
||||
}/*
|
||||
/////////////////////////////*/
|
||||
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
|
||||
|
||||
for(int p=AL_ReplaceLen-1; p>=0; --p)
|
||||
{
|
||||
*VPC_CharDest-- = APC_Replace[p];
|
||||
}/*
|
||||
///////////////////////////////////*/
|
||||
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
|
||||
|
||||
VL_NowIndex=AR_InfoList.ItD(VI_InfoIter).ml_Pos-1;
|
||||
|
||||
@ -2662,16 +2662,16 @@ namespace ZNsMain
|
||||
{
|
||||
VL_SearchPos1 = VL_SearchPos2 + AL_SearchLen2 ; continue;
|
||||
}/*
|
||||
/////////////////////////////////////////////*/
|
||||
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
|
||||
|
||||
ReplaceSection //////////////////////////////////
|
||||
ReplaceSection ////////////////////////////////
|
||||
(
|
||||
VL_SearchPos1+AL_SearchLen1
|
||||
, VL_SearchPos2-VL_SearchPos1-AL_SearchLen1
|
||||
, APC_Replace
|
||||
, AL_ReplaceLen
|
||||
);
|
||||
/////////////////////////////////////////////////
|
||||
///////////////////////////////////////////////
|
||||
|
||||
VL_SearchPos1 += AL_SearchLen1 + AL_ReplaceLen + AL_SearchLen2 ;
|
||||
}
|
||||
@ -2713,11 +2713,11 @@ namespace ZNsMain
|
||||
|
||||
|
||||
ZCStringBase& ReplaceAllRange( ////////////////////////////////
|
||||
const ZCStringBase& AR_CStrSearch1,
|
||||
const ZCStringBase& AR_CStrSearch2,
|
||||
const ZCStringBase& AR_CStrReplace,
|
||||
bool AB_DoKeepSearch=false,
|
||||
TypeLength AL_StartPos =0
|
||||
const ZCStringBase& AR_CStrSearch1 ,
|
||||
const ZCStringBase& AR_CStrSearch2 ,
|
||||
const ZCStringBase& AR_CStrReplace ,
|
||||
bool AB_DoKeepSearch=false ,
|
||||
TypeLength AL_StartPos =0
|
||||
/*/////////*/ ) ///////////////////////////////////////////////
|
||||
{
|
||||
return ReplaceAllRange( ///////////////////////////////////
|
||||
@ -2732,11 +2732,11 @@ namespace ZNsMain
|
||||
/*/////////*/ ); //////////////////////////////////////////
|
||||
}/*
|
||||
ZCStringBase& ReplaceAllRange( ////////////////////////////////
|
||||
const ZCStringBase& AR_CStrSearch1,
|
||||
const ZCStringBase& AR_CStrSearch2,
|
||||
const ZCStringBase& AR_CStrReplace,
|
||||
bool AB_DoKeepSearch=false,
|
||||
TypeLength AL_StartPos =0
|
||||
const ZCStringBase& AR_CStrSearch1 ,
|
||||
const ZCStringBase& AR_CStrSearch2 ,
|
||||
const ZCStringBase& AR_CStrReplace ,
|
||||
bool AB_DoKeepSearch=false ,
|
||||
TypeLength AL_StartPos =0
|
||||
//////////// ) ////////////////////////////////////////////*/
|
||||
|
||||
|
||||
@ -2748,16 +2748,18 @@ namespace ZNsMain
|
||||
TypeLength AL_StartPos =0
|
||||
/*/////////*/ ) ///////////////////////////////////////////////
|
||||
{
|
||||
return ReplaceAllRange( ////////////////////////////////////////////
|
||||
APC_Search1 ,
|
||||
APC_Search2 ,
|
||||
APC_Replace ,
|
||||
AB_DoKeepSearch ,
|
||||
AL_StartPos ,
|
||||
GetLength(APC_Search1),
|
||||
GetLength(APC_Search2),
|
||||
GetLength(APC_Replace)
|
||||
/*/////////*/ );
|
||||
return ReplaceAllRange //>>>>>>>>>>>>>>>>>
|
||||
(
|
||||
APC_Search1 ,
|
||||
APC_Search2 ,
|
||||
APC_Replace ,
|
||||
AB_DoKeepSearch ,
|
||||
AL_StartPos ,
|
||||
GetLength(APC_Search1),
|
||||
GetLength(APC_Search2),
|
||||
GetLength(APC_Replace)
|
||||
);
|
||||
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
}/*
|
||||
ZCStringBase& ReplaceAllRange( ////////////////////////////////
|
||||
TypeCharC* APC_Search1 ,
|
||||
@ -2849,15 +2851,25 @@ namespace ZNsMain
|
||||
ZCStringBase& Insert(TypeLength AL_InsertPos, const ZCStringBase& AR_CStrInsert)
|
||||
{
|
||||
if(this==&AR_CStrInsert) return *this;
|
||||
|
||||
return Insert(
|
||||
AL_InsertPos, AR_CStrInsert.data(), AR_CStrInsert.size());
|
||||
|
||||
return Insert //>>>>>>>>>>>>>>>>>>>>>>
|
||||
(
|
||||
AL_InsertPos ,
|
||||
AR_CStrInsert.data() ,
|
||||
AR_CStrInsert.size()
|
||||
);
|
||||
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
}/*
|
||||
ZCStringBase& Insert(TypeLength AL_InsertPos, const ZCStringBase& AR_CStrInsert)*/
|
||||
|
||||
|
||||
ZCStringBase& Insert_E(
|
||||
TypeLength AL_InsertPos, TypeCharC* APC_Insert, TypeLength AL_InsertLen)
|
||||
ZCStringBase& Insert_E /*######################################################*/
|
||||
(
|
||||
TypeLength AL_InsertPos ,
|
||||
TypeCharC* APC_Insert ,
|
||||
TypeLength AL_InsertLen
|
||||
)
|
||||
/*#############################################################################*/
|
||||
{
|
||||
if(AL_InsertLen<1) return *this;
|
||||
|
||||
@ -2866,22 +2878,33 @@ namespace ZNsMain
|
||||
|
||||
return Insert_E(AL_InsertPos, APC_Insert, AL_InsertLen) ;
|
||||
}/*
|
||||
ZCStringBase& Insert_E(
|
||||
TypeLength AL_InsertPos, TypeCharC* APC_Insert, TypeLength AL_InsertLen)*/
|
||||
ZCStringBase& Insert_E
|
||||
(
|
||||
TypeLength AL_InsertPos ,
|
||||
TypeCharC* APC_Insert ,
|
||||
TypeLength AL_InsertLen
|
||||
)
|
||||
/*#############################################################################*/
|
||||
|
||||
|
||||
ZCStringBase& Insert_E(TypeLength AL_InsertPos, TypeCharC* APC_Insert)
|
||||
{
|
||||
return Insert_E
|
||||
return Insert_E /*>>>>>>>>*/
|
||||
(
|
||||
AL_InsertPos, APC_Insert, GetLength(APC_Insert)
|
||||
) ;
|
||||
///////////////
|
||||
/*<<<<<<<<<<<<<<<<<<<<<<<<*/
|
||||
}/*
|
||||
ZCStringBase& Insert_E(TypeLength AL_InsertPos, TypeCharC* APC_Insert)*/
|
||||
|
||||
ZCStringBase& GetSubString(
|
||||
TypeLength AL_Index, TypeLength AL_Count, ZCStringBase& ARR_CString)
|
||||
|
||||
ZCStringBase& GetSubString /*##################################################*/
|
||||
(
|
||||
TypeLength AL_Index ,
|
||||
TypeLength AL_Count ,
|
||||
ZCStringBase& ARR_CString
|
||||
)
|
||||
/*#############################################################################*/
|
||||
{
|
||||
if(AL_Index<0 || AL_Count<1) return ARR_CString;
|
||||
|
||||
@ -2902,18 +2925,25 @@ namespace ZNsMain
|
||||
|
||||
ARR_CString.ReAllocAdd(AL_Count,true); ::memcpy ////////
|
||||
(
|
||||
ARR_CString.mpc_Data+ARR_CString.ml_UseLen,
|
||||
mpc_Data+AL_Index, AL_Count*sizeof(TypeChar)
|
||||
ARR_CString.mpc_Data +
|
||||
ARR_CString.ml_UseLen ,
|
||||
mpc_Data + AL_Index ,
|
||||
AL_Count * sizeof(TypeChar)
|
||||
);
|
||||
//////////////////////////////////////////////////////////
|
||||
|
||||
ARR_CString.
|
||||
mpc_Data[ARR_CString.ml_UseLen+=AL_Count]=0;
|
||||
ARR_CString.mpc_Data
|
||||
[ARR_CString.ml_UseLen += AL_Count] =0 ;
|
||||
|
||||
return ARR_CString;
|
||||
return ARR_CString ;
|
||||
}/*
|
||||
ZCStringBase& GetSubString(
|
||||
TypeLength AL_Index, TypeLength AL_Count, ZCStringBase& ARR_CString)*/
|
||||
ZCStringBase& GetSubString /*####################################################
|
||||
(
|
||||
TypeLength AL_Index ,
|
||||
TypeLength AL_Count ,
|
||||
ZCStringBase& ARR_CString
|
||||
)
|
||||
/*#############################################################################*/
|
||||
|
||||
|
||||
static ZCStringBase& GetSubSearch /*##########################################*/
|
||||
@ -2944,7 +2974,7 @@ namespace ZNsMain
|
||||
{
|
||||
ARRL_StartPos=-1; return ARR_CStringSave;
|
||||
}/*
|
||||
///////////////////////////////////////////////*/
|
||||
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
|
||||
|
||||
TypeLength VL_Pos1 = FindPos
|
||||
(
|
||||
@ -3271,13 +3301,13 @@ namespace ZNsMain
|
||||
{
|
||||
ARRL_StartPos=-1; return ARR_CString;
|
||||
}/*
|
||||
if(AB_IsExactTwo==true)*/
|
||||
>>>>>>>>>>>>>>>>>>>>>*/
|
||||
|
||||
ARRL_StartPos=AL_OriginLen;
|
||||
ARR_CString.MakeWord(
|
||||
APC_Origin+VL_Pos1, AL_OriginLen-VL_Pos1);
|
||||
|
||||
return ARR_CString;
|
||||
return ARR_CString; ///////
|
||||
}/*
|
||||
if(VL_Pos2<0)*/
|
||||
|
||||
@ -3420,13 +3450,13 @@ namespace ZNsMain
|
||||
|
||||
while(VL_Index<=VL_Loop)
|
||||
{
|
||||
TypeLength j;
|
||||
TypeLength j=0;
|
||||
|
||||
for(j=0; j<AL_SearchLen; ++j)
|
||||
for(; j<AL_SearchLen; ++j)
|
||||
{
|
||||
if(APC_OriginChar[VL_Index+j]!=APC_SearchChar[j]) break;
|
||||
}/*
|
||||
///////////////////////////*/
|
||||
>>>>>>>>>>>>>>>>>>>>>>>>*/
|
||||
|
||||
if(j!=AL_SearchLen) // 못찾은 경우
|
||||
{
|
||||
@ -3548,13 +3578,13 @@ namespace ZNsMain
|
||||
{
|
||||
if(APC_OriginChar[VL_Index+j]!=APC_SearchChar[j]) break;
|
||||
}/*
|
||||
for(j=0; j<AL_SearchLen; ++j)*/
|
||||
>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
|
||||
|
||||
if(j!=AL_SearchLen) // 못찾은 경우
|
||||
if(j!=AL_SearchLen) /*AAAAA*/
|
||||
{
|
||||
++VL_Index; continue;
|
||||
++VL_Index; continue; // 못찾은 경우
|
||||
}/*
|
||||
if(j!=AL_SearchLen)*/
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAA*/
|
||||
|
||||
if(VL_Index>VL_CopyStartPos)
|
||||
{
|
||||
@ -3668,13 +3698,13 @@ namespace ZNsMain
|
||||
{
|
||||
if(APC_OriginChar[VL_Index+j]!=APC_SearchChar[j]) break;
|
||||
}/*
|
||||
///////////////////////////*/
|
||||
>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
|
||||
|
||||
if(j!=AL_SearchLen) // 못찾은 경우
|
||||
if(j!=AL_SearchLen) /*AAAAA*/
|
||||
{
|
||||
++VL_Index; continue;
|
||||
++VL_Index; continue; // 못찾은 경우
|
||||
}/*
|
||||
/////////////////*/
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAA*/
|
||||
|
||||
// 찾은 경우
|
||||
|
||||
@ -3804,11 +3834,11 @@ namespace ZNsMain
|
||||
{
|
||||
if(APC_OriginChar[VL_Index+j]!=APC_SearchChar[j]) break;
|
||||
}/*
|
||||
for(j=0; j<AL_SearchLen; ++j)*/
|
||||
>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
|
||||
|
||||
if(j!=AL_SearchLen) // 못찾은 경우
|
||||
if(j!=AL_SearchLen)
|
||||
{
|
||||
++VL_Index; continue;
|
||||
++VL_Index; continue; // 못찾은 경우
|
||||
}/*
|
||||
if(j!=AL_SearchLen)*/
|
||||
|
||||
@ -4083,11 +4113,11 @@ namespace ZNsMain
|
||||
{
|
||||
if(APC_OriginChar[VL_Index+j]!=APC_SearchChar[j]) break;
|
||||
}/*
|
||||
for(j=0; j<AL_SearchLen; ++j)*/
|
||||
>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
|
||||
|
||||
if(j!=AL_SearchLen) // 못찾은 경우
|
||||
if(j!=AL_SearchLen)
|
||||
{
|
||||
++VL_Index; continue;
|
||||
++VL_Index; continue; // 못찾은 경우
|
||||
}/*
|
||||
if(j!=AL_SearchLen)*/
|
||||
|
||||
@ -4122,13 +4152,13 @@ namespace ZNsMain
|
||||
{
|
||||
return ARR_SaveList;
|
||||
}/*
|
||||
if(VL_CopyStartPos>=AL_OriginLen)*/
|
||||
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
|
||||
|
||||
if(VL_PrevListSize<ARR_SaveList.size() || AB_DoEndWhenNoMatch==false)
|
||||
{
|
||||
/* VL_PrevListSize==ARR_SaveList.size() 인 경우는, 분리 문자열을
|
||||
찾을 수 없는 경우다. 이때는 아무짓도 하지 말자. */
|
||||
|
||||
/* VL_PrevListSize==ARR_SaveList.size() 인 경우는, 분리
|
||||
문자열을 찾을 수 없는 경우다. 이때는 아무짓도 하지 말자.
|
||||
*/
|
||||
VO_CStringTemp.Invalidate();
|
||||
|
||||
ARR_SaveList.push_back ////////
|
||||
@ -4293,7 +4323,7 @@ namespace ZNsMain
|
||||
{
|
||||
if(VC_TempChar==APC_SearchChar[j]) break;
|
||||
}/*
|
||||
for(j=0; j<AL_SearchLen; ++j)*/
|
||||
>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
|
||||
|
||||
if(j<AL_SearchLen)
|
||||
{
|
||||
@ -4302,7 +4332,7 @@ namespace ZNsMain
|
||||
((ZCString&)ARR_SaveList).append
|
||||
( VP_CopyStartChar, i-VL_CopyStartPos ) ;
|
||||
}/*
|
||||
if(i>VL_CopyStartPos)*/
|
||||
///////////////////*/
|
||||
|
||||
VL_CopyStartPos =i+1;
|
||||
VP_CopyStartChar=VP_CopyCloseChar ;
|
||||
@ -4421,7 +4451,7 @@ namespace ZNsMain
|
||||
{
|
||||
if(*VPC_CloseChar++ != *VPC_SearchChar++) break; ++VL_ClosePos;
|
||||
}/*
|
||||
for(k=0; k<AL_SearchMinLen; ++k)*/
|
||||
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
|
||||
|
||||
// AL_SearchMinLen 개의 문자열이 일치한다면 나머지 문자열을 비교한다.
|
||||
|
||||
@ -4429,9 +4459,12 @@ namespace ZNsMain
|
||||
{
|
||||
for(k=AL_SearchMinLen; k<VL_SearchLen; ++k)
|
||||
{
|
||||
if(*VPC_CloseChar++ != *VPC_SearchChar++) break; ++VL_ClosePos;
|
||||
if(*VPC_CloseChar++ != *VPC_SearchChar++)
|
||||
{ break; }
|
||||
|
||||
++VL_ClosePos;
|
||||
}/*
|
||||
for(k=AL_SearchMinLen; k<VL_SearchLen; ++k)*/
|
||||
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
|
||||
}/*
|
||||
if(k>=AL_SearchMinLen)*/
|
||||
|
||||
@ -4439,7 +4472,7 @@ namespace ZNsMain
|
||||
{
|
||||
break; // 이때는 찾는 문자열이 있는 것이다.
|
||||
}/*
|
||||
if(k>=VL_SearchLen)*/
|
||||
>>>>>>>>>>>>>>>>>*/
|
||||
|
||||
AR_FindList.MoveNextIter(VI_Iter_OR_List);
|
||||
}/*
|
||||
@ -4541,22 +4574,22 @@ namespace ZNsMain
|
||||
|
||||
if(CB_IsTrue) return ARR_SaveList;
|
||||
|
||||
TypeChar* VPC_StartChar=const_cast<TypeChar*>(APC_OriginChar);
|
||||
TypeChar* VPC_StartCopy=VPC_StartChar;
|
||||
TypeChar* VPC_CloseChar=VPC_StartChar;
|
||||
TypeChar* VPC_SearchChar;
|
||||
TypeChar* VPC_StartChar=const_cast<TypeChar*>(APC_OriginChar);
|
||||
TypeChar* VPC_StartCopy=VPC_StartChar;
|
||||
TypeChar* VPC_CloseChar=VPC_StartChar;
|
||||
TypeChar* VPC_SearchChar;
|
||||
|
||||
ZCStringBase VO_CStringTemp;
|
||||
IterEasyID VO_Iter_OR_List(AR_FindList.GetHeadIterEasyID()) ;
|
||||
IterEasyID VO_Iter_OR_List(AR_FindList.GetHeadIterEasyID()) ;
|
||||
|
||||
TypeLength VL_StartPos=0; // VPC_StartChar 의 위치값
|
||||
TypeLength VL_CopyPos =0; // VPC_StartCopy 의 위치값
|
||||
TypeLength VL_ClosePos=0; // VPC_CloseChar 의 위치값
|
||||
TypeLength VL_StartPos=0; // VPC_StartChar 의 위치값
|
||||
TypeLength VL_CopyPos =0; // VPC_StartCopy 의 위치값
|
||||
TypeLength VL_ClosePos=0; // VPC_CloseChar 의 위치값
|
||||
|
||||
TypeLength VL_SearchLen ; // AR_FindList 의 각 원소의 문자열 크기
|
||||
TypeLength VL_LoopSize=AR_FindList.size();
|
||||
TypeLength VL_SearchLen ; // AR_FindList 의 각 원소의 문자열 크기
|
||||
TypeLength VL_LoopSize = AR_FindList.size();
|
||||
|
||||
TypeLength j;
|
||||
TypeLength j=0;
|
||||
|
||||
while(VL_StartPos<AL_OriginLen)
|
||||
{
|
||||
@ -4564,19 +4597,22 @@ namespace ZNsMain
|
||||
{
|
||||
TypeLength k=0;
|
||||
|
||||
VL_SearchLen =AR_FindList.ItD(VO_Iter_OR_List).size();
|
||||
VPC_SearchChar=const_cast<TypeChar*>
|
||||
(AR_FindList.ItD(VO_Iter_OR_List).data()) ;
|
||||
VPC_CloseChar =VPC_StartChar;
|
||||
VL_ClosePos =VL_StartPos ;
|
||||
VL_SearchLen =
|
||||
AR_FindList.ItD(VO_Iter_OR_List).size() ;
|
||||
VPC_SearchChar = const_cast<TypeChar*>
|
||||
(AR_FindList.ItD(VO_Iter_OR_List).data());
|
||||
|
||||
if(VL_SearchLen<1 || VL_SearchLen<AL_SearchMinLen) continue;
|
||||
VPC_CloseChar = VPC_StartChar;
|
||||
VL_ClosePos = VL_StartPos ;
|
||||
|
||||
if(VL_SearchLen<1 || VL_SearchLen<AL_SearchMinLen)
|
||||
{ continue; }
|
||||
|
||||
for(k=0; k<AL_SearchMinLen; ++k)
|
||||
{
|
||||
if(*VPC_CloseChar++ != *VPC_SearchChar++) break; ++VL_ClosePos;
|
||||
}/*
|
||||
for(k=0; k<AL_SearchMinLen; ++k)*/
|
||||
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
|
||||
|
||||
// AL_SearchMinLen 개의 문자열이 일치한다면 나머지 문자열을 비교한다.
|
||||
|
||||
@ -4586,13 +4622,13 @@ namespace ZNsMain
|
||||
{
|
||||
if(*VPC_CloseChar++ != *VPC_SearchChar++) break; ++VL_ClosePos;
|
||||
}/*
|
||||
for(k=AL_SearchMinLen; k<VL_SearchLen; ++k)*/
|
||||
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
|
||||
}/*
|
||||
if(k>=AL_SearchMinLen)*/
|
||||
|
||||
if(k>=VL_SearchLen) // 이때는 찾는 문자열이 있는 것이다.
|
||||
break;
|
||||
//endif
|
||||
{break;}
|
||||
/*@@@@@@@@@@@@@@@*/
|
||||
|
||||
AR_FindList.MoveNextIter(VO_Iter_OR_List);
|
||||
}/*
|
||||
@ -4708,12 +4744,12 @@ namespace ZNsMain
|
||||
)
|
||||
////////////////////////////////////////////////////////
|
||||
{
|
||||
VL_Pos2 = FindPos /////////////////////
|
||||
VL_Pos2 = FindPos //>>>>>>>>>>>>>>>>>>>
|
||||
(
|
||||
APC_OriginChar, APC_Search2Char,
|
||||
AL_OriginLen , AL_Search2Len , VL_Pos1+AL_Search1Len
|
||||
);
|
||||
////////////////////////////////////////
|
||||
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
|
||||
|
||||
if(VL_Pos2<0) { return ARR_SaveList; }
|
||||
|
||||
@ -4860,9 +4896,12 @@ namespace ZNsMain
|
||||
)
|
||||
/////////////////////////////////////////////////////
|
||||
{
|
||||
VL_Pos2=FindPos(
|
||||
APC_OriginChar, APC_Search2Char,
|
||||
AL_OriginLen , AL_Search2Len , VL_Pos1+AL_Search1Len );
|
||||
VL_Pos2 = FindPos ///////////////////////////////
|
||||
(
|
||||
APC_OriginChar, APC_Search2Char,
|
||||
AL_OriginLen , AL_Search2Len , VL_Pos1+AL_Search1Len
|
||||
);
|
||||
/////////////////////////////////////////////////
|
||||
|
||||
if(VL_Pos2<0) return ARR_SaveList;
|
||||
|
||||
@ -4977,7 +5016,7 @@ namespace ZNsMain
|
||||
ARR_SaveList.ItD(VI_IterEasy).Invalidate();
|
||||
ARR_SaveList.MoveNextIter(VI_IterEasy);
|
||||
}/*
|
||||
for(TypeLength i=0; i<VL_MaxLoop; ++i)*/
|
||||
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
|
||||
|
||||
return ARR_SaveList;
|
||||
}/*
|
||||
@ -5004,14 +5043,15 @@ namespace ZNsMain
|
||||
|
||||
do //////
|
||||
{
|
||||
const bool CB_IsOK=
|
||||
(VC_TempChar= mpc_Data[VL_Index])
|
||||
=='\"' ||
|
||||
VC_TempChar=='\'' ||
|
||||
VC_TempChar=='\\' ||
|
||||
/*//////////*/ VC_TempChar=='\0' ;
|
||||
|
||||
if(CB_IsOK) ++VL_AddedCnt;
|
||||
const bool CB_IsOK = ////////////////////
|
||||
(
|
||||
(VC_TempChar= mpc_Data[VL_Index])
|
||||
=='\"' ||
|
||||
VC_TempChar=='\'' ||
|
||||
VC_TempChar=='\\' ||
|
||||
VC_TempChar=='\0'
|
||||
);
|
||||
if(CB_IsOK) ++VL_AddedCnt; //////////////
|
||||
}
|
||||
while(++VL_Index<VL_PrevSize);
|
||||
|
||||
@ -5177,7 +5217,7 @@ namespace ZNsMain
|
||||
{
|
||||
APC_Data[j++]=APC_Data[i];
|
||||
}/*
|
||||
if(i==VL_MaxLoop)*/
|
||||
>>>>>>>>>>>>>>>*/
|
||||
|
||||
APC_Data[j]=0; return APC_Data;
|
||||
}/*
|
||||
@ -5232,7 +5272,7 @@ namespace ZNsMain
|
||||
{
|
||||
APC_Data[j++]=APC_Data[i];
|
||||
}/*
|
||||
if(i==VL_MaxLoop)*/
|
||||
>>>>>>>>>>>>>>>*/
|
||||
|
||||
APC_Data[j]=0; return APC_Data;
|
||||
}/*
|
||||
@ -5277,7 +5317,7 @@ namespace ZNsMain
|
||||
{
|
||||
mpc_Data[j++]=mpc_Data[i];
|
||||
}/*
|
||||
if(i==VL_MaxLoop)*/
|
||||
>>>>>>>>>>>>>>>*/
|
||||
|
||||
mpc_Data[j]=0; return *this;
|
||||
}/*
|
||||
@ -5332,7 +5372,7 @@ namespace ZNsMain
|
||||
{
|
||||
mpc_Data[j++]=mpc_Data[i];
|
||||
}/*
|
||||
if(i==VL_MaxLoop)*/
|
||||
>>>>>>>>>>>>>>>*/
|
||||
|
||||
mpc_Data[j]=0; return *this;
|
||||
}/*
|
||||
@ -5348,10 +5388,10 @@ namespace ZNsMain
|
||||
////////////////////////////////////////////
|
||||
|
||||
|
||||
TypeLength VL_PrevSize=ml_UseLen ;
|
||||
TypeLength VL_Count =(VL_PrevSize/AL_ChunkSize);
|
||||
TypeLength VL_Mod =(VL_PrevSize%AL_ChunkSize);
|
||||
TypeLength VL_NewSize=VL_PrevSize+VL_Count*AL_AddLen;
|
||||
TypeLength VL_PrevSize= ml_UseLen ;
|
||||
TypeLength VL_Count = (VL_PrevSize/AL_ChunkSize) ;
|
||||
TypeLength VL_Mod = (VL_PrevSize%AL_ChunkSize) ;
|
||||
TypeLength VL_NewSize = VL_PrevSize+VL_Count*AL_AddLen;
|
||||
|
||||
ReAllocKeep(VL_NewSize);
|
||||
|
||||
@ -5362,7 +5402,7 @@ namespace ZNsMain
|
||||
{
|
||||
mpc_Data[VL_Index--] = mpc_Data[VL_PrevSize-1-p];
|
||||
}/*
|
||||
for(int p=0; p<VL_Mod; ++p)*/
|
||||
>>>>>>>>>>>>>>>>>>>>>>>>>*/
|
||||
|
||||
TypeLength i=0, j=0, t=0;
|
||||
|
||||
@ -5372,9 +5412,9 @@ namespace ZNsMain
|
||||
|
||||
for(j=AL_AddLen-1; j>=0; --j)
|
||||
{
|
||||
mpc_Data[VL_Index--]=APC_AddChar[j];
|
||||
mpc_Data[VL_Index--] = APC_AddChar[j];
|
||||
}/*
|
||||
for(j=AL_AddLen-1; j>=0; --j)*/
|
||||
>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
|
||||
|
||||
for(j=AL_ChunkSize-1; j>=0; --j)
|
||||
{
|
||||
@ -5436,19 +5476,25 @@ namespace ZNsMain
|
||||
// 파일 기술자를 다시 처음으로 옮긴다.
|
||||
::lseek(AH_FileDesc, 0/*Offset*/, SEEK_SET);
|
||||
|
||||
TypeLength VL_PrevSize=(AB_DoAppend ? ml_UseLen : 0);
|
||||
TypeLength VL_PrevSize =
|
||||
(AB_DoAppend ? ml_UseLen : 0);
|
||||
|
||||
ReAlloc(VL_PrevSize+VL_Offset+AL_AddAllocSize, AB_DoAppend);
|
||||
ReAlloc //>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
(
|
||||
VL_PrevSize+VL_Offset+AL_AddAllocSize,
|
||||
AB_DoAppend
|
||||
);
|
||||
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
|
||||
|
||||
// 윈도우에서 read() 함수는 \r\n 을 한 문자로 읽어들이므로 주의
|
||||
|
||||
TypeLength VL_ReadSize=0;
|
||||
|
||||
if((VL_ReadSize=read(AH_FileDesc, mpc_Data+VL_PrevSize, VL_Offset))<0)
|
||||
if((VL_ReadSize = read(AH_FileDesc, mpc_Data+VL_PrevSize, VL_Offset))<0)
|
||||
{
|
||||
mpc_Data[ml_UseLen=VL_PrevSize]=0; ::close(AH_FileDesc); return false;
|
||||
}/*
|
||||
////////////////////////////////////////////////////////////////////*/
|
||||
//////////////////////////////////////////////////////////////////////*/
|
||||
|
||||
if(VL_ReadSize>0)
|
||||
mpc_Data[ml_UseLen=VL_PrevSize+VL_ReadSize]=0;
|
||||
@ -5459,15 +5505,17 @@ namespace ZNsMain
|
||||
|
||||
TypeLength VL_PrevSize=AB_DoAppend ? ml_UseLen : 0 ;
|
||||
|
||||
HANDLE VH_File=::CreateFile( ////////////////////////////////////////////////////////////
|
||||
APC_FileName ,
|
||||
GENERIC_READ ,
|
||||
FILE_SHARE_READ , // 공유모드: 이미 열려 있는 파일을 열 수 있게 한다.
|
||||
NULL ,
|
||||
OPEN_EXISTING ,
|
||||
FILE_ATTRIBUTE_NORMAL, // 반드시 단독으로 사용되는 플래그
|
||||
NULL
|
||||
/*/////////*/ ); /////////////////////////////////////////////////////////////////////////
|
||||
HANDLE VH_File = ::CreateFile /*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
|
||||
(
|
||||
APC_FileName ,
|
||||
GENERIC_READ ,
|
||||
FILE_SHARE_READ , // 공유모드: 이미 열려 있는 파일을 열 수 있게 한다.
|
||||
NULL ,
|
||||
OPEN_EXISTING ,
|
||||
FILE_ATTRIBUTE_NORMAL, // 반드시 단독으로 사용되는 플래그
|
||||
NULL
|
||||
);
|
||||
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
|
||||
|
||||
if(INVALID_HANDLE_VALUE==VH_File) return false;
|
||||
|
||||
@ -5486,7 +5534,7 @@ namespace ZNsMain
|
||||
{
|
||||
Invalidate(); CloseHandle(VH_File); return false;
|
||||
}/*
|
||||
if(::ReadFile(VH_File, mpc_Data+VL_PrevSize, dwRead, &dwRead2, NULL)==FALSE)*/
|
||||
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
|
||||
|
||||
::CloseHandle(VH_File);
|
||||
|
||||
@ -5661,10 +5709,21 @@ namespace ZNsMain
|
||||
if(CB_IsFalse){ return -1; }
|
||||
|
||||
|
||||
VO_CStringBuff.mpc_Data[VO_CStringBuff.ml_UseLen+=VL_ReadCnt]=0; VL_InnerOffset=0;
|
||||
VO_CStringBuff.mpc_Data //>>>>>>>>>>>>>>>>>>>>
|
||||
[
|
||||
VO_CStringBuff.ml_UseLen += VL_ReadCnt
|
||||
] =0 ;
|
||||
//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
|
||||
|
||||
while((VL_FindedPos =VO_CStringBuff.
|
||||
FindPos(APC_Search, AL_SearchLen, VL_InnerOffset))>=0)
|
||||
VL_InnerOffset=0;
|
||||
|
||||
while /*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
|
||||
(
|
||||
( VL_FindedPos = VO_CStringBuff.FindPos
|
||||
(APC_Search, AL_SearchLen, VL_InnerOffset)
|
||||
) >=0
|
||||
)
|
||||
/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
|
||||
{
|
||||
if(++VL_SearchCnt>=AL_WantSearchCnt)
|
||||
{
|
||||
@ -5673,9 +5732,8 @@ namespace ZNsMain
|
||||
//////////////////////////////////*/
|
||||
|
||||
VL_InnerOffset = VL_FindedPos + AL_SearchLen ;
|
||||
}/*
|
||||
while((VL_FindedPos =VO_CStringBuff.
|
||||
FindPos(APC_Search, AL_SearchLen, VL_InnerOffset))>=0)*/
|
||||
}
|
||||
/*@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*/
|
||||
|
||||
if(VO_CStringBuff.ml_UseLen>=AL_SearchLen)
|
||||
{
|
||||
@ -5797,15 +5855,15 @@ namespace ZNsMain
|
||||
{ return -1; }
|
||||
////////////////////////////////////////////////
|
||||
|
||||
const bool VB_IsFalse =
|
||||
const bool VB_IsFalse = /*@@@@@@@@@@@@@@@@@@@@*/
|
||||
(
|
||||
( VL_ReadCnt=::read
|
||||
(
|
||||
AH_FileDesc, VO_CStringBuff.mpc_Data, VL_Offset-VL_Offset2
|
||||
)
|
||||
)<1 || VL_Offset-VL_Offset2!=VL_ReadCnt
|
||||
)<1 || VL_Offset-VL_Offset2 != VL_ReadCnt
|
||||
);
|
||||
/*###################*/ if(VB_IsFalse) return -1;
|
||||
if(VB_IsFalse) return -1; /*@@@@@@@@@@@@@@@@@@*/
|
||||
|
||||
VO_CStringBuff.mpc_Data
|
||||
[VO_CStringBuff.ml_UseLen=VL_ReadCnt]=0;
|
||||
@ -5899,9 +5957,7 @@ namespace ZNsMain
|
||||
lpOverlapped
|
||||
)==FALSE || VL_Offset-VL_Offset2 != VL_ReadCnt
|
||||
);
|
||||
//////////////////////////////////////////////////////
|
||||
|
||||
if(CB_IsFalse) return -1;
|
||||
if(CB_IsFalse) return -1; ////////////////////////////
|
||||
|
||||
|
||||
VO_CStringBuff.mpc_Data
|
||||
@ -5912,7 +5968,7 @@ namespace ZNsMain
|
||||
VL_InnerOffset=VO_CStringBuff.ml_UseLen-1;
|
||||
|
||||
while ( ( VL_FindedPos = VO_CStringBuff.FindPosFromEnd
|
||||
( APC_Search, AL_SearchLen, VL_InnerOffset )
|
||||
( APC_Search, AL_SearchLen, VL_InnerOffset )
|
||||
) >= 0
|
||||
)
|
||||
////////////////////////////////////////////////////////
|
||||
@ -6070,7 +6126,7 @@ namespace ZNsMain
|
||||
|
||||
VL_SearchIndex=0;
|
||||
}/*
|
||||
if(++VL_SearchIndex>=AL_SearchLen)*/
|
||||
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
|
||||
}/*
|
||||
for(i=0; i<VL_ReadSize; ++i)*/
|
||||
|
||||
@ -6097,13 +6153,13 @@ namespace ZNsMain
|
||||
{
|
||||
if(AL_SearchLen<1 || AL_SearchCnt<1) return 0;
|
||||
|
||||
TypeLength VL_ReadSize ;
|
||||
TypeLength VL_AllReadSize=0;
|
||||
TypeLength VL_SearchIndex=0;
|
||||
TypeLength i ;
|
||||
TypeLength VL_ReadSize ;
|
||||
TypeLength VL_AllReadSize =0;
|
||||
TypeLength VL_SearchIndex =0;
|
||||
TypeLength i =0;
|
||||
|
||||
TypeLength VL_NowSearchCnt=0;
|
||||
TypeChar VC_TempChar;
|
||||
TypeChar VC_TempChar =0;
|
||||
TypeChar VCA_FileBuff[BUFSIZ+1];
|
||||
|
||||
while((VL_ReadSize = ::fread(
|
||||
@ -6125,7 +6181,7 @@ namespace ZNsMain
|
||||
|
||||
VL_SearchIndex=0;
|
||||
}/*
|
||||
if(++VL_SearchIndex>=AL_SearchLen)*/
|
||||
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
|
||||
}/*
|
||||
for(i=0; i<VL_ReadSize; ++i)*/
|
||||
|
||||
@ -6179,7 +6235,7 @@ namespace ZNsMain
|
||||
AH_FileDesc, APC_Search, AL_SearchLen, AL_SearchCnt);
|
||||
MyCloseFleHandle(AH_FileDesc);
|
||||
|
||||
return VL_ReadSize; //////////
|
||||
return VL_ReadSize; //////////////////
|
||||
|
||||
#undef MyCloseFleHandle
|
||||
}/*
|
||||
@ -6281,7 +6337,7 @@ namespace ZNsMain
|
||||
|
||||
VL_SearchIndex=0;
|
||||
}/*
|
||||
if(++VL_SearchIndex>=AL_SearchLen)*/
|
||||
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
|
||||
}/*
|
||||
for(i=0;i<VL_ReadSize;++i)*/
|
||||
|
||||
@ -6527,8 +6583,7 @@ namespace ZNsMain
|
||||
return FindPos //////////////
|
||||
(
|
||||
mpc_Data , APC_Search,
|
||||
ml_UseLen, ZNsMain::ZftLengthType
|
||||
<TypeLength, TypeChar>(APC_Search)
|
||||
ml_UseLen, GetLength(APC_Search)
|
||||
);
|
||||
/////////////////////////////
|
||||
}/*
|
||||
@ -6642,13 +6697,15 @@ namespace ZNsMain
|
||||
TypeLength FindPosFromEnd(TypeCharC* APC_Search) const*/
|
||||
|
||||
|
||||
template<typename TList> static TypeLength FindPosType( /*######*/
|
||||
TypeCharC* APC_Origin ,
|
||||
TList& AR_SearchList,
|
||||
TypeLength AL_OriginLen ,
|
||||
TypeLength& ARRL_MatchLen,
|
||||
TypeLength AL_StartPos=0
|
||||
/*#########*/ ) /*##############################################*/
|
||||
template<typename TList> static TypeLength FindPosType
|
||||
(
|
||||
TypeCharC* APC_Origin ,
|
||||
TList& AR_SearchList ,
|
||||
TypeLength AL_OriginLen ,
|
||||
TypeLength& ARRL_MatchLen ,
|
||||
TypeLength AL_StartPos=0
|
||||
)
|
||||
/*##################################################*/
|
||||
{
|
||||
/*////////////////////////////////////////////////////////////////////
|
||||
|
||||
@ -6690,7 +6747,7 @@ namespace ZNsMain
|
||||
|
||||
AR_SearchList.MoveNextIter(VI_IterEasyID);
|
||||
}/*
|
||||
for(TypeLength j=0; j<VL_SearchCnt; ++j)*/
|
||||
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
|
||||
}/*
|
||||
for(TypeLength i=AL_StartPos; i<AL_OriginLen; ++i)*/
|
||||
|
||||
@ -6780,7 +6837,7 @@ namespace ZNsMain
|
||||
}
|
||||
else {VL_SearchOffset=0;}
|
||||
}/*
|
||||
for(TypeLength i=0; i<AL_OriginLen; ++i)*/
|
||||
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
|
||||
|
||||
return VL_SearchCount;
|
||||
}/*
|
||||
@ -6872,7 +6929,7 @@ namespace ZNsMain
|
||||
{
|
||||
return false;
|
||||
}/*
|
||||
else if(VC_CharTemp<'0' || VC_CharTemp>'9')*/
|
||||
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
|
||||
}/*
|
||||
for(TypeLength i=0; i<AL_CheckLen; ++i)*/
|
||||
|
||||
@ -7059,7 +7116,7 @@ namespace ZNsMain
|
||||
{
|
||||
*VPC_CharDest-- = *VPC_CharOrgin-- ;
|
||||
}/*
|
||||
for(; i<=ml_UseLen; ++i)*/
|
||||
>>>>>>>>>>>>>>>>>>>>>>*/
|
||||
|
||||
|
||||
/* 오른쪽으로 문자열을 이동시키게 됨에 따라, 앞에서
|
||||
@ -7071,7 +7128,7 @@ namespace ZNsMain
|
||||
{
|
||||
*VPC_CharOrgin++ = AC_FillChar ;
|
||||
}/*
|
||||
for(i=1; i<=AL_RightMoveCnt; ++i)*/
|
||||
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
|
||||
|
||||
mpc_Data[ml_UseLen+=AL_RightMoveCnt]=0; return *this;
|
||||
}/*
|
||||
@ -7179,7 +7236,7 @@ namespace ZNsMain
|
||||
{
|
||||
if( *VPC_StartChar++ =='.' ) break;
|
||||
}/*
|
||||
////////////////////////////////////////////////////////////*/
|
||||
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
|
||||
|
||||
// 마침표가 없거나, 맨 앞에 오거나 맨 끝에 오는 경우도 유효하지 않다.
|
||||
|
||||
@ -7227,7 +7284,7 @@ namespace ZNsMain
|
||||
|
||||
if(VL_PeriodPos<1 || VL_PeriodPos>=AI_LengthDec-1)
|
||||
{ return *this; }
|
||||
//////////////////////////////////////////////////
|
||||
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
||||
|
||||
|
||||
VPC_StartChar = mpc_Data+(VL_CurrentPos=AI_LengthDec-1) ;
|
||||
@ -7253,7 +7310,7 @@ namespace ZNsMain
|
||||
{
|
||||
*VPC_StartChar=0; --ml_UseLen;
|
||||
}/*
|
||||
if(VL_PeriodPos==VL_CurrentPos)*/
|
||||
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
|
||||
|
||||
return *this;
|
||||
}/*
|
||||
@ -7329,7 +7386,7 @@ namespace ZNsMain
|
||||
|
||||
++VPC_Start;
|
||||
}/*
|
||||
while(VC_Temp=*VPC_Start)*/
|
||||
>>>>>>>>>>>>>>>>>>>>>>>*/
|
||||
|
||||
return APC_Data;
|
||||
}/*
|
||||
@ -7405,7 +7462,7 @@ namespace ZNsMain
|
||||
|
||||
return ARR_CStrDir(APC_FullPath, AL_FullPathLen-1);
|
||||
}/*
|
||||
if(APC_FullPath[AL_FullPathLen-1]==ZNsMain::ZNsConst::CC_DirDelimiter)*/
|
||||
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
|
||||
|
||||
|
||||
using ZNsMain::ZNsConst::CPC_DirDelimiter ;
|
||||
|
Reference in New Issue
Block a user