<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=459342&amp;view=findpost&amp;p=3924564</guid>
        <pubDate>Thu, 26 Jun 2025 09:43:03 +0000</pubDate>
        <title>Поиск файлов в папке по двум маскам.</title>
        <link>https://forum.sources.ru/index.php?showtopic=459342&amp;view=findpost&amp;p=3924564</link>
        <description><![CDATA[Majestio: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=459342&view=findpost&p=3920976'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>konvikkor &#064; <time class="tag-quote__quoted-time" datetime="2025-04-17T08:22:33+03:00">17.04.25, 05:22</time></span><div class='quote '>Если хост система Windows то в API функциях есть поддержка выборки файлов по маскам где выбрать можно несколько, важно указать разделитель</div></div><br>
<strong class='tag-b'>konvikkor</strong>, ссылку на доку дашь?  ;)]]></description>
        <author>Majestio</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=459342&amp;view=findpost&amp;p=3924515</guid>
        <pubDate>Thu, 26 Jun 2025 05:36:55 +0000</pubDate>
        <title>Поиск файлов в папке по двум маскам.</title>
        <link>https://forum.sources.ru/index.php?showtopic=459342&amp;view=findpost&amp;p=3924515</link>
        <description><![CDATA[konvikkor: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=459342&view=findpost&p=3920989'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>macomics &#064; <time class="tag-quote__quoted-time" datetime="2025-04-17T07:14:43+00:00">17.04.25, 07:14</time></span><div class='quote '>Я понимаю, что ChatGPT популярен</div></div><br>
Почему же тогда существует этот форум? Да и если судить по вашим выводам использования ChatGPT то он тоже умеет читать сайт MSDN и руководства из Microsoft. <br>
Не стоит делать поспешных выводов про ChatGPT.<br>
<br>
Ответ я свой писал имея опыт в этом вопросе во времена WindowsXP.]]></description>
        <author>konvikkor</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=459342&amp;view=findpost&amp;p=3920989</guid>
        <pubDate>Thu, 17 Apr 2025 07:14:43 +0000</pubDate>
        <title>Поиск файлов в папке по двум маскам.</title>
        <link>https://forum.sources.ru/index.php?showtopic=459342&amp;view=findpost&amp;p=3920989</link>
        <description><![CDATA[macomics: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=459342&view=findpost&p=3920976'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>konvikkor &#064; <time class="tag-quote__quoted-time" datetime="2025-04-17T05:22:33+00:00">17.04.25, 05:22</time></span><div class='quote '>Если хост система Windows то в API функциях есть поддержка выборки файлов по маскам где выбрать можно несколько, важно указать разделитель, от системы к системе он различается но в основном точка с запятой вот пример маски как при выборе файлов<br>
&quot;.JPG;.BMP;.MOV&quot; есть случаи когда требуется указания названий &quot;*.jpg;*.bpm;*.mov&quot;</div></div><br>
Я понимаю, что ChatGPT популярен. Но вот хотя бы изредка стоит заглядывать в описания API<br>
<br>
У comapi в шаблонах диалоговых окон может быть задано несколько масок. Но этот фильтр выполняет сама comapi.<br>
<br>
В описании функции же FindFirstFile про маски все четко и ясно сказано. Маска может быть только одна, но в ней могут присутствовать * и ? для выполнения выбора группы файлов. Если надо искать по нескольким маскам, то вам придется либо составить общую маску и выбросить все не подходящие вам результаты поиска, либо запускать поиск несколько раз.]]></description>
        <author>macomics</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=459342&amp;view=findpost&amp;p=3920976</guid>
        <pubDate>Thu, 17 Apr 2025 05:22:33 +0000</pubDate>
        <title>Поиск файлов в папке по двум маскам.</title>
        <link>https://forum.sources.ru/index.php?showtopic=459342&amp;view=findpost&amp;p=3920976</link>
        <description><![CDATA[konvikkor: Если хост система <strong class='tag-b'>Windows </strong>то в <strong class='tag-b'>API </strong>функциях есть поддержка выборки файлов по маскам где выбрать можно несколько, важно указать разделитель, от системы к системе он различается но в основном точка с запятой вот пример маски как при выборе файлов<br>
<strong class='tag-b'>&quot;.JPG;.BMP;.MOV&quot;</strong> есть случаи когда требуется указания названий <strong class='tag-b'>&quot;*.jpg;*.bpm;*.mov&quot;</strong>]]></description>
        <author>konvikkor</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=459342&amp;view=findpost&amp;p=3920373</guid>
        <pubDate>Fri, 04 Apr 2025 22:50:34 +0000</pubDate>
        <title>Поиск файлов в папке по двум маскам.</title>
        <link>https://forum.sources.ru/index.php?showtopic=459342&amp;view=findpost&amp;p=3920373</link>
        <description><![CDATA[macomics: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=459342&view=findpost&p=3920372'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>gorbovsky &#064; <time class="tag-quote__quoted-time" datetime="2025-04-04T19:51:32+00:00">04.04.25, 19:51</time></span><div class='quote '>Думал, может хитрую маску какую можно скормить, типа как в консольных командах, навроде такой</div></div><br>
Это не хитрая маска, а список файлов где каждый член списка является маской и для каждого из списка запускается команда del. Это равнозначно последовательному поиску по маскам. Для команды cmd.exe это не критичная по скорости действия операция.<br>
<br>
В вашем же примере загружаются текстуры. Это само по себе не быстрая операция. А вы еще и диск загружаете повторными опросами. Разумнее в плане стратегии использования кеша диска использовать маску &#39;*&#39; или общую для ваших двух случаев &#39;*.???&#39;. Дальше сделать свой фильтр записей, чтобы обращения для поиска по папке прошли все разом подряд и только один раз *. Ну а дальше начнутся уже обращения на чтение с диска для загрузки текстур. Они уже могут по своему использовать кеш работы с диском. Да и сам процесс загрузки и создания текстур можно потом будет распараллелить на несколько потоков. Потому, как вы вскоре выясните, само время чтения файла текстуры с диска много меньше чем преобразование считанного в преемлимый для текстуры формат (bmp - для файлов jpg в вашем случае).<br>
<br>
Как показывают результаты тестирования библиотек загрузки jpg и png: чтение с диска для 650 Мб данных на нем (т.е. размер исходных файлов общим числом ок 1000) составляет примерно 1 сек для SATA 3 обычного HDD (WD 7200 об/сек - т.е. присутствуют задержки на доступ к секторам и все равно время маленькое; для SSD и тем более M2 время будет еще меньше). А вот общее время загрузки и преобразования уже составляет 10 сек для 20 потоков и 15 сек для 1 потока. Тогда как дополнительное преобразование (создание миниатюры из bmp) добавляет к этому времени еще 5 сек.<br>
<br>
ADD: * - это нужно для оптимизации работы ОС с диском и самого устройства. Хотя я говорю дальше, что чтение весьма быстрая операция, но операции сбора строк путей к файлам - это операции чисто с оперативной памятью и они еще быстрее чем обращения к диску.]]></description>
        <author>macomics</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=459342&amp;view=findpost&amp;p=3920372</guid>
        <pubDate>Fri, 04 Apr 2025 19:51:32 +0000</pubDate>
        <title>Поиск файлов в папке по двум маскам.</title>
        <link>https://forum.sources.ru/index.php?showtopic=459342&amp;view=findpost&amp;p=3920372</link>
        <description><![CDATA[gorbovsky: Т.Е. перебирать файлы подряд, проверяя имена на совпадение с критерием.<br>
Думал, может хитрую маску какую можно скормить, типа как в консольных командах, навроде такой<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">del *.jpg, *.jpeg, *.mp4 *.webp *.png *.pdf</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script>]]></description>
        <author>gorbovsky</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=459342&amp;view=findpost&amp;p=3920371</guid>
        <pubDate>Fri, 04 Apr 2025 18:40:46 +0000</pubDate>
        <title>Поиск файлов в папке по двум маскам.</title>
        <link>https://forum.sources.ru/index.php?showtopic=459342&amp;view=findpost&amp;p=3920371</link>
        <description><![CDATA[macomics: Тогда решайте сами, что быстрее. Два раза выполнить обращения к диску для поиска по файловым записям или же один раз поискать все файла, которые подходят по общему шаблону и потом из результатов дополнительно отсеять не нужные. Как я вижу - работа со строками быстрее чем дважды искать на диске.<br><br>Надо понимать, что ФС ничего не знает о маске и перечисляет все файловые записи при каждом поиске, а уже заданная вами маска используется для первичного фильтра по условию.]]></description>
        <author>macomics</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=459342&amp;view=findpost&amp;p=3920370</guid>
        <pubDate>Fri, 04 Apr 2025 18:29:05 +0000</pubDate>
        <title>Поиск файлов в папке по двум маскам.</title>
        <link>https://forum.sources.ru/index.php?showtopic=459342&amp;view=findpost&amp;p=3920370</link>
        <description><![CDATA[gorbovsky: Проще 2 раза поиск запустить.]]></description>
        <author>gorbovsky</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=459342&amp;view=findpost&amp;p=3920368</guid>
        <pubDate>Fri, 04 Apr 2025 17:06:19 +0000</pubDate>
        <title>Поиск файлов в папке по двум маскам.</title>
        <link>https://forum.sources.ru/index.php?showtopic=459342&amp;view=findpost&amp;p=3920368</link>
        <description><![CDATA[macomics: Поищите по маске &quot;*.???&quot; а затем просто дополнительно отсейте файлы не оканчивающиеся на .jpg или .bmp<br><br>ADD: Еще не стоит сразу применять найденные файлы. Сначала лучше составить из них список. Возможно вам понадобится еще дополнительно как-то их отсортировать или выбросить из списка некоторые элементы.]]></description>
        <author>macomics</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=459342&amp;view=findpost&amp;p=3920367</guid>
        <pubDate>Fri, 04 Apr 2025 16:37:26 +0000</pubDate>
        <title>Поиск файлов в папке по двум маскам.</title>
        <link>https://forum.sources.ru/index.php?showtopic=459342&amp;view=findpost&amp;p=3920367</link>
        <description><![CDATA[gorbovsky: Добрый день форумчане&#33;<br>
Есть функция, ищущая файлы в текущей папке.<br>
Ищем по расширениям .jpg и .bmp<br>
Для каждого запускается отдельный цикл FindFirst-FindNext.<br>
А как попроще, в одном цикле?<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">HRESULT LoadSkins()</div><div class="code_line">{</div><div class="code_line">LPDIRECT3DTEXTURE9 *temp;</div><div class="code_line">SetCurrentDirectory(__argv[0]);</div><div class="code_line">WIN32_FIND_DATA fd={0};</div><div class="code_line">const char mask[]=&quot;*.jpg&quot;;</div><div class="code_line">HANDLE findhandle=FindFirstFile(mask,&amp;fd);</div><div class="code_line">if(findhandle!=INVALID_HANDLE_VALUE)</div><div class="code_line">{</div><div class="code_line">do</div><div class="code_line">&nbsp;&nbsp; {</div><div class="code_line">&nbsp;&nbsp; temp=new LPDIRECT3DTEXTURE9;</div><div class="code_line">&nbsp;&nbsp; if(FAILED(D3DXCreateTextureFromFile(pDirect3DDevice,fd.cFileName ,temp)))</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;return E_FAIL;</div><div class="code_line">&nbsp;&nbsp; textures.push_back(*temp);</div><div class="code_line">&nbsp;&nbsp; SkinsNumber++;</div><div class="code_line">&nbsp;&nbsp; }</div><div class="code_line">while(FindNextFile(findhandle,&amp;fd));</div><div class="code_line">}</div><div class="code_line">FindClose(findhandle);</div><div class="code_line">//-------------------for BMP</div><div class="code_line">const char mask2[]=&quot;*.bmp&quot;;</div><div class="code_line">findhandle=FindFirstFile(mask2,&amp;fd);</div><div class="code_line">if(findhandle!=INVALID_HANDLE_VALUE)</div><div class="code_line">{</div><div class="code_line">do</div><div class="code_line">&nbsp;&nbsp; {</div><div class="code_line">&nbsp;&nbsp; temp=new LPDIRECT3DTEXTURE9;</div><div class="code_line">&nbsp;&nbsp; if(FAILED(D3DXCreateTextureFromFile(pDirect3DDevice,fd.cFileName ,temp)))</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;return E_FAIL;</div><div class="code_line">&nbsp;&nbsp; textures.push_back(*temp);</div><div class="code_line">&nbsp;&nbsp; SkinsNumber++;</div><div class="code_line">&nbsp;&nbsp; }</div><div class="code_line">while(FindNextFile(findhandle,&amp;fd));</div><div class="code_line">}</div><div class="code_line">FindClose(findhandle);</div><div class="code_line">&nbsp;</div><div class="code_line">return S_OK;</div><div class="code_line">}</div></ol></div></div></div></div>]]></description>
        <author>gorbovsky</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      </channel>
      </rss>
	