Iwao Dev

気付いたことをメモしています.

この画面は、簡易表示です

Iwao

ファイルの検索

あるフォルダ内のファイルを列挙するコード 

MFC
v_tstring	EnumFiles_MFC	(c_tstring& path,const bool skipDot=true)
{
	v_tstring	foundFiles ;
	{
		iFileFind	ff ;
		BOOL		isWorking = ff.FindFile((::Path_AddLastSP(path)+_T("*.*")).c_str()) ;
		while	(isWorking)	{
			 	isWorking = ff.FindNextFile() ;
			if (skipDot && ff.IsDots()) {	continue ;	}
			tstring	fileName = ff.GetFileName() ;
			if (ff.IsDirectory()) {
				fileName = ::Path_AddLastSP(fileName) ;
				}
			foundFiles.push_back(::Path_AddLastSP(path)+fileName) ;
			}
		}
	return	foundFiles ;
	}

MSC
v_tstring	EnumFiles_MSC	(c_tstring& path,const bool skipDot=true)
{
	v_tstring	foundFiles ;
	{
		tstring	fffPath = ::Path_AddLastSP(path)+_T("*.*") ;
		WIN32_FIND_DATA	fd ;
		memset(&fd,0,sizeof(WIN32_FIND_DATA)) ;
		HANDLE	hFind = ::FindFirstFile(fffPath.c_str(),&fd) ;
		if (hFind != INVALID_HANDLE_VALUE) {
			while	(TRUE)	{
				tstring	fileName = fd.cFileName ;
				if (skipDot) {
					if (fileName == _T("."))   {	fileName = _T("") ;	}
					if (fileName == _T(".."))  {	fileName = _T("") ;	}
					}
				if (!fileName.empty()) {
					if (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
						fileName = ::Path_AddLastSP(fileName) ;
						}
					foundFiles.push_back(::Path_AddLastSP(path)+fileName) ;
					}
				if (!::FindNextFile(hFind,&fd)) {
					break ;
					}
				}
			::FindClose(hFind) ;
			}
		}
	return	foundFiles ;
	}

GNUC
v_tstring	EnumFiles_GNUC	(c_tstring& path_,const bool skipDot=true)
{
	tstring 	path = path_ ;
	v_tstring	foundFiles ;
	{
		DIR*	dp = ::opendir(path.c_str()) ;
		struct	dirent*	dent = NULL ;
		do	{
			dent = readdir(dp) ;
			if (dent != NULL)	{
				tstring	fileName = dent->d_name ;
				if (skipDot) {
					if (fileName == _T("."))   {	continue ;	}
					if (fileName == _T(".."))  {	continue ;	}
					}
				if (dent->d_type & DT_DIR) {
					fileName = ::Path_AddLastSP(fileName) ;
					}
				foundFiles.push_back(::Path_AddLastSP(path)+fileName) ;
				}
			}	while (dent != NULL) ;
		::closedir(dp) ;
		}
	return	foundFiles ;
	}

MFC 版で,iFileFind としているのは,VC 6 MFC MBCS 版でのバグのため.

class	iFileFind	:	public	CFileFind	{
	public:
		virtual	CString GetFilePath() const	{
			ASSERT(m_hContext != NULL);
			ASSERT_VALID(this);
			CString strResult = m_strRoot;
			#ifdef	____VC_6_______MBCS_BUG___
			{
				if (strResult[strResult.GetLength()-1] != '\\' &&
					strResult[strResult.GetLength()-1] != '/')	{
					strResult += m_chDirSeparator;
					}
				}
			#else
			{
				LPCTSTR pszResult;
				LPCTSTR pchLast;
				pszResult = strResult;
				pchLast = _tcsdec( pszResult, pszResult+strResult.GetLength() );
				VERIFY(pchLast!=NULL);
				if ((*pchLast != _T('\\')) && (*pchLast != _T('/')))	{
					strResult += m_chDirSeparator;
					}
				}
			#endif
			strResult += GetFileName();
			return strResult;
			}
		} ;

MFC 7 以降であれば,CFileFind として利用可能.


i_FileF.hxx
EnumFile.hxx


  にほんブログ村 IT技術ブログへ


Chrome の「Google で画像を検索」

Chrome でちょっと面白い機能を見つけたのでメモ.
画像を右クリックして「Google で画像を検索」.

類似画像が表示される.

もとの画像によっては,かなり近い画像が見つかることもある.


  にほんブログ村 IT技術ブログへ


vector<Xxxx<T>> の利用でのエラー

template <class T> Extent2<T> E2_GetExtent (const std::vector<VLine2<T>>& lins)     //  エラー
template <class T> Extent2<T> E2_GetExtent (const std::vector< VLine2<T> >& lins)   //  OK

vector<VLine2<T>> の様にスペースがないとエラーになる.
vector< VLine2<T> > の様に空ければ OK .


  にほんブログ村 IT技術ブログへ


一時的にアクセスできません

パス 	                        Googlebot の種類 ステータス               日付
/2010/10/20/コントロールをサブクラス化した時のエラー/  PC         一時的にアクセスできません       2018/10/25 19:29
/2010/10/20/                      PC         完了 インデックス登録をリクエスト済み  2018/10/25 19:28


やはり,時間をおいて再度リクエストするしかないのか?


  にほんブログ村 IT技術ブログへ


ActiveX.exe , ActiveX.dll の登録

何年かに 1 度ある問合せ.普段あまりやってないとすぐ忘れてしまう.

dll や ocx の登録は,RegSvr32 .
 管理者として起動したコマンドプロンプトで,以下の様に入力して登録できる.
  RegSvr32.exe ActiveX.dll
 RegSvr32 で ocx などの登録
 OCX x64
exe は,管理者として起動したコマンドプロンプトで実行.
  ActiveX.exe
 IIS 環境の再設定


  にほんブログ村 IT技術ブログへ


Funmoods の削除

Chrome の「拡張機能」の所を見ていたら,見慣れない「Funmoods」というのがあった.

特に変な現象は気がつかなかったが,ウィルスに近い存在らしいので以下を参考にさせてもらって削除することに.
Funmoods Toolbar削除アンインストール方法&Funmoods Search無効化方法


  にほんブログ村 IT技術ブログへ


Magical Finder + WN-AC1167R

moto g5 を Android 8.1 に更新した.

ダウンロードする所の評価はかなり低いが…
Android 7 の時もそうだったが,特に問題なし.

「Web設定画面を開く」で,正しく開くことができる.


Magical Finder は,IPv4 のアドレスを調べる程度の利用.
今は ASUS Router アプリ があるので,あまり必要ではない.


  にほんブログ村 IT技術ブログへ


moto g5 Android 8.1

今日の朝 moto g5 の Android 8.1 へのアップデートが表示されていた.

ダウンロードに必要な容量が少し足りず,内蔵ストレージを 1.5 G 程空けてアップデート.

念のため,電源に接続.

ダウンロードとインストールに,それぞれ 30 分程度要した.

全てを確認できてないが,よく使用する AP は問題なさそう.
ちょっと気になるのが,画面の上下の「赤」がきつくなった.

前の様にもう少し柔らかい感じの方が良かった.


  にほんブログ村 IT技術ブログへ


three.js で表示できない

ipl を WebGL で表示できる形式に変換しても,表示できないデータができてしまった.

本当は次の様に表示されなければならない.


vt と vn がない時にうまくない.
f 1// 2// 3// の様になってしまっていて,これをうまく処理してくれない.


  にほんブログ村 IT技術ブログへ


STL(Stereolithography) 読込みで…

STL(Stereolithography,Standard Triangulated Language) バイナリ読込みで,VC 14 でビルドした exe でダウンする.
VC 6 でビルドしたものは通っているが,たまたまエラーにならなかっただけ.
コードは,

    {
        size_t  hStart = 0 ;
        v_char  head ;
        head.resize(STL_B_HEADER_SIZE+100,0x00) ;
        memmove(&head,&readBuf[hStart],sizeof(STL_B_HEADER_SIZE)) ;
        stl.SetName(::To_tstring(head).c_str()) ;
        }

::To_tstring で head を利用した時にエラーとなる.
ここをコメントにすると,ブロックを抜けた時に head の解放?でエラーになる.


memmove で &head ではなく &head[0] としなければならない.

正しくは,

    {
        size_t	hStart = 0 ;
        v_char	head ;
        head.resize(STL_B_HEADER_SIZE+100,0x00) ;
        memmove(&head[0],&readBuf[hStart],STL_B_HEADER_SIZE) ;
        stl.SetName(::To_tstring(head).c_str()) ;
        }

v_char は次の様に定義.
 typedef std::vector<char> v_char ;


  にほんブログ村 IT技術ブログへ



    top

    %d人のブロガーが「いいね」をつけました。