文字列

  LboxStringCase



  
// *********************************************************
// カンマ区切りの文字列リストに指定した文字列があるかどうか
// 戻り値 : リストにある場合は true, 無ければ false
// *********************************************************
BOOL LboxStringCase( LPTSTR pszBuffer, LPCTSTR pszList )
{
	unsigned char *pszToken;
	int nSize;
	nSize = lstrlen( pszList ) + 10;
	char *pszLocal = new char[nSize];

	lstrcpy( pszLocal, pszList );

	pszToken = _mbstok(
		(unsigned char *)pszLocal,
		(const unsigned char *)","
	);

	while( pszToken != NULL ) {
		if ( lstrcmp( (char *)pszToken, pszBuffer ) == 0 ) {
			delete [] pszLocal;
			return true;
		}
		pszToken = _mbstok( NULL, (const unsigned char *)"," );
	}

	delete [] pszLocal;
	return false;
}
  



  LboxStringCaseX



  
// *********************************************************
// 大文字小文字区別無し Case
// 戻り値 : リストにある場合は true, 無ければ false
// *********************************************************
BOOL LboxStringCaseX( LPTSTR pszBuffer, LPCTSTR pszList )
{
	unsigned char *pszToken;
	int nSize;
	nSize = lstrlen( pszList ) + 10;
	char *pszLocal = new char[nSize];

	lstrcpy( pszLocal, pszList );

	pszToken = _mbstok(
		(unsigned char *)pszLocal,
		(const unsigned char *)","
	);
	while( pszToken != NULL ) {
		if ( lstrcmpi( (char *)pszToken, pszBuffer ) == 0 ) {
			delete [] pszLocal;
			return true;
		}
		pszToken = _mbstok( NULL, (const unsigned char *)"," );
	}

	delete [] pszLocal;
	return false;
}
  



  LboxStringEnclose

  
// *********************************************************
// 文字列を指定した文字で囲む
// 既にその文字で囲まれている場合はなにもしない
// 戻り値 : 無し
// *********************************************************
void LboxStringEnclose( LPTSTR pszBuffer, int c )
{
	if ( pszBuffer[0] == (char)c &&
		pszBuffer[lstrlen(pszBuffer)-1] == (char)c ) {
		return;
	}
	pszBuffer[lstrlen(pszBuffer)+1] = 0x00;
	pszBuffer[lstrlen(pszBuffer)+2] = 0x00;
	MoveMemory( pszBuffer + 1, pszBuffer, lstrlen( pszBuffer ) );
	pszBuffer[0] = (char)c;
	pszBuffer[lstrlen(pszBuffer)] = (char)c;
}
void LboxStringEnclose( LPTSTR pszBuffer, int c1, int c2 )
{
	if ( pszBuffer[0] == (char)c1 &&
		pszBuffer[lstrlen(pszBuffer)-1] == (char)c2 ) {
		return;
	}
	pszBuffer[lstrlen(pszBuffer)+1] = 0x00;
	pszBuffer[lstrlen(pszBuffer)+2] = 0x00;
	MoveMemory( pszBuffer + 1, pszBuffer, lstrlen( pszBuffer ) );
	pszBuffer[0] = (char)c1;
	pszBuffer[lstrlen(pszBuffer)] = (char)c2;
}
  



  LboxStringRemoveEnclose

  
// *********************************************************
// 文字列が指定した文字で囲まれていたらその文字を取り去る
// 戻り値 : 無し
// *********************************************************
void LboxStringRemoveEnclose( LPTSTR pszBuffer, int c )
{
	if ( pszBuffer[0] == (char)c &&
		pszBuffer[lstrlen(pszBuffer)-1] == (char)c ) {
		MoveMemory( pszBuffer, pszBuffer + 1, lstrlen( pszBuffer ) );
		pszBuffer[lstrlen(pszBuffer)-1] = 0x00;
	}
}
void LboxStringRemoveEnclose( LPTSTR pszBuffer, int c1, int c2 )
{
	if ( pszBuffer[0] == (char)c1 &&
		pszBuffer[lstrlen(pszBuffer)-1] == (char)c2 ) {
		MoveMemory( pszBuffer, pszBuffer + 1, lstrlen( pszBuffer ) );
		pszBuffer[lstrlen(pszBuffer)-1] = 0x00;
	}
}
  



  LboxReAlloc

  
// *********************************************************
// グローバルメモリの取得・再取得
// 戻り値 : 文字列へのポインタ
// *********************************************************
LPTSTR LboxReAlloc( LPTSTR *lpTarget, DWORD dwNewSize )
{
	if ( *lpTarget == NULL ) {
		*lpTarget = (char *)GlobalAlloc(
			GMEM_FIXED,
			dwNewSize+128
		);
		if ( *lpTarget == NULL ) {
			return NULL;
		}
		ZeroMemory( *lpTarget, dwNewSize+10 );
	}
	else {
		LPTSTR lpWork;
		lpWork = (LPTSTR)GlobalAlloc(
			GMEM_FIXED,
			dwNewSize+128
		);
		if ( lpWork != NULL ) {
			DWORD nSize;
			ZeroMemory( lpWork, dwNewSize+10 );
			nSize = GlobalSize( (HGLOBAL)(*lpTarget) );
			if ( nSize > dwNewSize ) {
				CopyMemory( lpWork, *lpTarget, dwNewSize+10 );
			}
			else {
				CopyMemory( lpWork, *lpTarget, nSize-10 );
			}
		}
		GlobalFree( (HGLOBAL)(*lpTarget) );
		*lpTarget = lpWork;
	}
	return *lpTarget;
}
  










  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ