commit 2025-08-21 00:30 edit a bit ZtCStringBase

This commit is contained in:
2025-08-21 00:30:27 +09:00
parent c734e73690
commit 21f026c1fe

View File

@ -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 ;