Beispiel #1
0
void ToLower( char* szStr)
{
   assert(szStr);
   while( *szStr)
   {
      (*szStr) = LowerChar( *szStr);
      szStr++;
   }
}
Beispiel #2
0
void ToLowerN( char* szStr, size_t iCount)
{
   assert(szStr);

   if( iCount < strlen(szStr))
      while( iCount)
      {
         szStr[iCount-1] = LowerChar( szStr[iCount-1]);
         iCount--;
      }
   else
      ToLower( szStr);
}
Beispiel #3
0
bool StrSame(PCHAR Str, PCHAR ToSame, bool CaseSensetive, DWORD StrEndPosition)
{
	// Функция сравнивает строку Str со строкой ToSame.
	// CaseSensetive определяет чувствительность к регистру
	// Если StrEndPosrition не равен нулю, то сравнение
	// ограничивается StrEndPosrition символами

	if (Str == NULL || ToSame == NULL)
		return false;

    DWORD Pos = 1;
	PCHAR S1 = Str;
	PCHAR S2 = ToSame;

	char C1;
	char C2;

	while (*S1 != 0 && S2 != 0)
	{
		C1 = *S1;
		C2 = *S2;

		if (!CaseSensetive)
		{
			LowerChar(C1);
			LowerChar(C2);
		}

		if (C1 != C2) return false;

		S1++;
		S2++;
		if (StrEndPosition != 0 && Pos >= StrEndPosition)
			return *S2 == 0;
		Pos++;
	}
    return *S1 == 0 && *S2 == 0;
}
Beispiel #4
0
int STR::Pos(const char* Str,  const char*  SubStr, DWORD StrLen, bool CaseSensetive)
{
	// Функция ищет подстроку _SubStr в строке _Str
	if( !Str || !SubStr )
		return -1;

	DWORD s;
	DWORD j = 0;

   //	DWORD slen  = StrCalcLength(Str);
	DWORD sslen = StrCalcLength(SubStr);
	DWORD Pos = 0;
	DWORD Pos1 = 0;
	// Проходим циклом до конца строки
	char* p = (char*)Str;

	while (!IsStrEnd(p, StrLen, Pos))
	{
		const char* k = SubStr;


		char PC = *p;
		char KC = *k;

		if (!CaseSensetive)
		{
			LowerChar(PC);
			LowerChar(KC);
		}

		// сравниваем первые символы
		if ( PC == KC )
		{
			char* p1 = p;
			const char* k1 = k;
			Pos1 = Pos;
			s = 0;
			// Определяем количество совпадений
			while(!IsStrEnd(p1, StrLen, Pos1) && *k1 != 0)
			{

				char C1 = *p1;
				char C2 = *k1;

				if (!CaseSensetive)
				{
					LowerChar(C1);
					LowerChar(C2);
				}


				if (C1 == C2)
					s++;
				else
					break;

				if (s == (DWORD)sslen)
					return j;

				p1++;
				k1++;
				Pos1++;
			}
		}

		// смещаем указатели
		Pos++;
		p++;
		j++;
	}
	return -1;
}