<?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=468029&amp;view=findpost&amp;p=3930268</guid>
        <pubDate>Sat, 18 Oct 2025 11:21:16 +0000</pubDate>
        <title>Проблема с WNetEnumResource</title>
        <link>https://forum.sources.ru/index.php?showtopic=468029&amp;view=findpost&amp;p=3930268</link>
        <description><![CDATA[Elijah: Спасибо. Переделал. Но выдаёт только:<br><br>Microsoft Terminal Services<br>Microsoft Windows Network<br>Web Client Network<br><br>В упор не видит другой комп, хотя в эксплорере-&gt;Сеть нормально открывается.]]></description>
        <author>Elijah</author>
        <category>Delphi: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=468029&amp;view=findpost&amp;p=3930263</guid>
        <pubDate>Fri, 17 Oct 2025 21:00:06 +0000</pubDate>
        <title>Проблема с WNetEnumResource</title>
        <link>https://forum.sources.ru/index.php?showtopic=468029&amp;view=findpost&amp;p=3930263</link>
        <description><![CDATA[macomics: Первое что бросается в глаза, это то что выделено памяти сильно меньше чем запрашиваете у функции данных.<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">GetMem(Resources, BufferSize); // Только на 1 TResource</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><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">&nbsp;&nbsp; &nbsp;Count := MAX_RES; // const MAX_RES = 1000;</div><div class="code_line">&nbsp;&nbsp; &nbsp;Res := WNetEnumResource(hEnum, Count, Resources, BufferSize); // 1000 штук</div></ol></div></div></div></div><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">BufferSize := SizeOf(TResources) * MAX_RES;</div></ol></div></div></div></div> <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2025-10-17T21:06:12+00:00">17.10.25, 21:06</time></span></span><br>
И сразу второе: чтобы избежать логических ошибок с зависанием / зацикливанием, не следует применять <span class='tag-u'><strong class='tag-b'>while</strong> True <strong class='tag-b'>do</strong></span><br>
<br>
Для кода, который должен быть использован повторно стоит писать отдельную функцию и вызывать её пока она возвращает результаты, а не в бесконечном цикле.]]></description>
        <author>macomics</author>
        <category>Delphi: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=468029&amp;view=findpost&amp;p=3930255</guid>
        <pubDate>Fri, 17 Oct 2025 16:17:13 +0000</pubDate>
        <title>Проблема с WNetEnumResource</title>
        <link>https://forum.sources.ru/index.php?showtopic=468029&amp;view=findpost&amp;p=3930255</link>
        <description><![CDATA[Elijah: Не работает перечисление компьютеров сети. Проводник свободно видит и работает с соседним компом, тот тоже.<br>
Даже клиент-серверная прога ведёт обмен по TServerSocket и TClientSocket. А список компов сети получить не могу.<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">unit PForm;</div><div class="code_line">&nbsp;</div><div class="code_line">interface</div><div class="code_line">&nbsp;</div><div class="code_line">uses &nbsp;Windows, Messages, SysUtils, Classes, Controls, Forms, Dialogs, StdCtrls;</div><div class="code_line">&nbsp;</div><div class="code_line">const MAX_RES = 1000;</div><div class="code_line">&nbsp;</div><div class="code_line">type</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;TMain = class(TForm)</div><div class="code_line">&nbsp;&nbsp; &nbsp;LB: TListBox;</div><div class="code_line">&nbsp;&nbsp; &nbsp;Start: TButton;</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure StartClick(Sender: TObject);</div><div class="code_line">&nbsp;&nbsp; &nbsp;private</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;procedure NetEnumResources(Root: PNetResource);</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;TNetEnumResourcesCallback = procedure(NetResource: TNetResource);</div><div class="code_line">&nbsp;&nbsp;PResources = ^TResources;</div><div class="code_line">&nbsp;&nbsp;TResources = array[0 .. MAX_RES-1] of TNetResource;</div><div class="code_line">&nbsp;</div><div class="code_line">var &nbsp; Main: TMain;</div><div class="code_line">&nbsp;</div><div class="code_line">implementation {$R *.dfm}</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TMain.StartClick(Sender: TObject);</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;NetEnumResources(nil);</div><div class="code_line">&nbsp;&nbsp;LB.AddItem(&#39;stop&#39;, nil);</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TMain.NetEnumResources(Root: PNetResource);</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;hEnum: THandle;</div><div class="code_line">&nbsp;&nbsp;Count,</div><div class="code_line">&nbsp;&nbsp;BufferSize,</div><div class="code_line">&nbsp;&nbsp;Res: dword;</div><div class="code_line">&nbsp;&nbsp;Resources: PResources;</div><div class="code_line">&nbsp;&nbsp;i: Integer;</div><div class="code_line">begin</div><div class="code_line">&nbsp;&nbsp;Res := WNetOpenEnum(RESOURCE_GLOBALNET, RESOURCETYPE_ANY, 0, Root, hEnum);</div><div class="code_line">&nbsp;&nbsp;if NO_ERROR &#60;&#62; Res then exit;</div><div class="code_line">&nbsp;&nbsp;BufferSize := SizeOf(TResources);</div><div class="code_line">&nbsp;&nbsp;GetMem(Resources, BufferSize);</div><div class="code_line">&nbsp;&nbsp;while True do begin</div><div class="code_line">&nbsp;&nbsp; &nbsp;Count := MAX_RES;</div><div class="code_line">&nbsp;&nbsp; &nbsp;Res := WNetEnumResource(hEnum, Count, Resources, BufferSize);</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (Res &#60;&#62; NO_ERROR) and (Res &#60;&#62; ERROR_MORE_DATA) then break;</div><div class="code_line">&nbsp;&nbsp; &nbsp;for i := 0 to Count - 1 do begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;with Resources^[i] do LB.AddItem(&#39;Local Name: &#39; + lpLocalName + &#39;, &#39; + &#39;Remote Name: &#39; + lpRemoteName + &#39;, &#39; + lpComment, nil);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;if (Resources^[i].dwUsage and RESOURCEUSAGE_CONTAINER) &#60;&#62; 0 then NetEnumResources(@(Resources^[i]));</div><div class="code_line">&nbsp;&nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;&nbsp;FreeMem(Resources);</div><div class="code_line">&nbsp;&nbsp;WNetCloseEnum(hEnum);</div><div class="code_line">&nbsp;&nbsp;LB.AddItem(&#39;end&#39;, nil);</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">end.</div></ol></div></div></div></div><br>
<br>
Может у кого есть рабочий код?]]></description>
        <author>Elijah</author>
        <category>Delphi: Сетевое программирование</category>
      </item>
	
      </channel>
      </rss>
	