<?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=401954&amp;view=findpost&amp;p=3597735</guid>
        <pubDate>Sun, 03 May 2015 16:42:39 +0000</pubDate>
        <title>отладка - пример сканера</title>
        <link>https://forum.sources.ru/index.php?showtopic=401954&amp;view=findpost&amp;p=3597735</link>
        <description><![CDATA[s2004: при настройке запуск студио с остановом затем goto search 004d6cde, а дальше действия, где адрес 00000278? Куда вводить?<br>
<span class="b-attach" data-size="201126" data-hits="604" data-attach-id="45164" data-attach-post-id="3597735">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=3597735&amp;attach_id=45164' title='Скачать файл' target='_blank'>error2.jpg</a> (, : 604)
		</span>]]></description>
        <author>s2004</author>
        <category>Delphi: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=401954&amp;view=findpost&amp;p=3596868</guid>
        <pubDate>Wed, 29 Apr 2015 16:21:23 +0000</pubDate>
        <title>отладка - пример сканера</title>
        <link>https://forum.sources.ru/index.php?showtopic=401954&amp;view=findpost&amp;p=3596868</link>
        <description><![CDATA[s2004: вот адрес<br>
<span class="b-attach" data-size="32513" data-hits="546" data-attach-id="45107" data-attach-post-id="3596868">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=3596868&amp;attach_id=45107' title='Скачать файл' target='_blank'>error.jpg</a> (, : 546)
		</span>]]></description>
        <author>s2004</author>
        <category>Delphi: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=401954&amp;view=findpost&amp;p=3596853</guid>
        <pubDate>Wed, 29 Apr 2015 15:13:49 +0000</pubDate>
        <title>отладка - пример сканера</title>
        <link>https://forum.sources.ru/index.php?showtopic=401954&amp;view=findpost&amp;p=3596853</link>
        <description><![CDATA[Relaxander: Implicit string cast from &#39;AnsiChar&#39; to &#39;string&#39; - это не неявный переход, а неявное привидение типа из указателя на AnsiChar к строке.<br>Но в любом случае, к ошибке по адресу эти варнинги отношения не имеют.<br>Надо смотреть, что за адрес и пробовать отлаживать. Возможно, где-то портится память]]></description>
        <author>Relaxander</author>
        <category>Delphi: Сетевое программирование</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=401954&amp;view=findpost&amp;p=3596843</guid>
        <pubDate>Wed, 29 Apr 2015 14:58:59 +0000</pubDate>
        <title>отладка - пример сканера</title>
        <link>https://forum.sources.ru/index.php?showtopic=401954&amp;view=findpost&amp;p=3596843</link>
        <description><![CDATA[s2004: имеется пример сканера он в интернете достаточно распространён, код внизу. Я его использовал работает, но вот что интересно выдаёт через некоторое время ошибку по адресу... <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">[DCC Warning] Unit23.pas(81): W1057 Implicit string cast from &#39;AnsiChar&#39; to &#39;string&#39; что тут неявный переход??</div><div class="code_line">[DCC Warning] Unit23.pas(137): W1024 Combining signed and unsigned types - widened both operands - типы без знака?</div><div class="code_line">[DCC Warning] Unit23.pas(176): W1057 Implicit string cast from &#39;AnsiChar&#39; to &#39;string&#39;</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
<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 Unit23;</div><div class="code_line">&nbsp;</div><div class="code_line">interface</div><div class="code_line">&nbsp;</div><div class="code_line">uses</div><div class="code_line">&nbsp;&nbsp;Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,</div><div class="code_line">&nbsp;&nbsp;Dialogs, Gauges, StdCtrls, Spin, Buttons, ExtCtrls, AppEvnts,winsock;</div><div class="code_line">&nbsp;</div><div class="code_line">type</div><div class="code_line">&nbsp;&nbsp;TForm23 = class(TForm)</div><div class="code_line">&nbsp;&nbsp; &nbsp;Panel1: TPanel;</div><div class="code_line">&nbsp;&nbsp; &nbsp;Label1: TLabel;</div><div class="code_line">&nbsp;&nbsp; &nbsp;Label2: TLabel;</div><div class="code_line">&nbsp;&nbsp; &nbsp;SpeedButton1: TSpeedButton;</div><div class="code_line">&nbsp;&nbsp; &nbsp;Label3: TLabel;</div><div class="code_line">&nbsp;&nbsp; &nbsp;Label4: TLabel;</div><div class="code_line">&nbsp;&nbsp; &nbsp;Edit1: TEdit;</div><div class="code_line">&nbsp;&nbsp; &nbsp;SpinEdit1: TSpinEdit;</div><div class="code_line">&nbsp;&nbsp; &nbsp;SpinEdit2: TSpinEdit;</div><div class="code_line">&nbsp;&nbsp; &nbsp;ListBox1: TListBox;</div><div class="code_line">&nbsp;&nbsp; &nbsp;ProgressBar1: TGauge;</div><div class="code_line">&nbsp;&nbsp; &nbsp;ApplicationEvents1: TApplicationEvents;</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean);</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure SpeedButton1Click(Sender: TObject);</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure FormDestroy(Sender: TObject);</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure FormCreate(Sender: TObject);</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;TMyThread = class(TThread)</div><div class="code_line">&nbsp;&nbsp; protected</div><div class="code_line">&nbsp;&nbsp; &nbsp;procedure Execute; override;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;TFSocket = record</div><div class="code_line">&nbsp;&nbsp; sa: TSockAddr;</div><div class="code_line">&nbsp;&nbsp; FData: integer;</div><div class="code_line">&nbsp;&nbsp; TimeOut: integer;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;</div><div class="code_line">const</div><div class="code_line">&nbsp;MAX_PORTS=500;</div><div class="code_line">&nbsp;Ping=5000;</div><div class="code_line">&nbsp;</div><div class="code_line">var</div><div class="code_line">&nbsp;&nbsp;Form23: TForm23;</div><div class="code_line">&nbsp;&nbsp;FSocket: array [0..MAX_PORTS - 1] of TFSocket;</div><div class="code_line">&nbsp;&nbsp;FPort: WORD;</div><div class="code_line">&nbsp;&nbsp;FInfo: TWSADATA;</div><div class="code_line">&nbsp;&nbsp;FHost: integer;</div><div class="code_line">&nbsp;&nbsp;FPStart, FPEnd: WORD;</div><div class="code_line">&nbsp;&nbsp;SThread: TMyThread;</div><div class="code_line">implementation</div><div class="code_line">&nbsp;</div><div class="code_line">uses Unit1;</div><div class="code_line">&nbsp;</div><div class="code_line">{$R *.dfm}</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TForm23.ApplicationEvents1Message(var Msg: tagMSG;</div><div class="code_line">&nbsp;&nbsp;var Handled: Boolean);</div><div class="code_line">var</div><div class="code_line">&nbsp;pSrvEnt:pServEnt;</div><div class="code_line">&nbsp;sPortDescription:String;</div><div class="code_line">// j : integer;</div><div class="code_line">// port: array [0..41] of integer;</div><div class="code_line">begin</div><div class="code_line">&nbsp;if (Msg.message&#62;=FPStart+WM_USER)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;and (Msg.message&#60;=FPEnd+WM_USER)</div><div class="code_line">&nbsp;then</div><div class="code_line">&nbsp;if WSAGETSELECTERROR(Msg.lParam)=0</div><div class="code_line">&nbsp;then</div><div class="code_line">&nbsp;&nbsp;case WSAGETSELECTEVENT(msg.lParam) of</div><div class="code_line">&nbsp;&nbsp; FD_CONNECT:</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp;// &nbsp; pSrvEnt := getservbyport(htons(port[j]),&#39;TCP&#39;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; pSrvEnt := getservbyport(htons(msg.message - WM_USER),&#39;TCP&#39;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; if Assigned (pSrvEnt) then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;sPortDescription := &#39;service: &#39; + string(pSrvEnt^.s_name)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; else</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;sPortDescription := &#39;&#39;; </div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; ListBox1.Items.Add(IntToStr(ListBox1.Count+1)+</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#39;) IP: &#39;+inet_ntoa(FSocket[0].sa.sin_addr)+&#39; &nbsp;| &nbsp;&#39;+</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&#39;Port: &#39;+intToStr(Msg.message - WM_USER) + &#39; &nbsp;| &nbsp;&#39; +</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;sPortDescription);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; Application.ProcessMessages;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;Handled:=false;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TForm23.FormCreate(Sender: TObject);</div><div class="code_line">var</div><div class="code_line">&nbsp;i: integer;</div><div class="code_line">begin</div><div class="code_line">&nbsp;if WSAStartup(MAKEWORD(2, 0), FInfo)&#60;&#62;0</div><div class="code_line">&nbsp;then Halt;</div><div class="code_line">&nbsp;for i:=0 to MAX_PORTS-1 do</div><div class="code_line">&nbsp;with FSocket[i] do</div><div class="code_line">&nbsp;&nbsp;begin</div><div class="code_line">&nbsp;&nbsp; TimeOut := 0;</div><div class="code_line">&nbsp;&nbsp; FData := Socket(AF_INET, SOCK_STREAM, 0);</div><div class="code_line">&nbsp;&nbsp; if FData = SOCKET_ERROR</div><div class="code_line">&nbsp;&nbsp; then</div><div class="code_line">&nbsp;&nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; WSACleanup;</div><div class="code_line">&nbsp;&nbsp; &nbsp; Halt;</div><div class="code_line">&nbsp;&nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;Application.OnMessage:=Form23.ApplicationEvents1Message;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TForm23.FormDestroy(Sender: TObject);</div><div class="code_line">var</div><div class="code_line">&nbsp;i: integer;</div><div class="code_line">begin</div><div class="code_line">&nbsp;if SThread&#60;&#62;nil</div><div class="code_line">&nbsp;then</div><div class="code_line">&nbsp;&nbsp;begin</div><div class="code_line">&nbsp;&nbsp; SThread.Terminate;</div><div class="code_line">&nbsp;&nbsp; SThread.WaitFor;</div><div class="code_line">&nbsp;&nbsp; SThread:=nil;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;for i:=0 to MAX_PORTS-1 do</div><div class="code_line">&nbsp;&nbsp;CloseSocket(FSocket[i].FData);</div><div class="code_line">&nbsp;WSACleanup;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure InitSockets;</div><div class="code_line">var</div><div class="code_line">&nbsp;i: integer;</div><div class="code_line">begin</div><div class="code_line">&nbsp;for i:=0 to MAX_PORTS-1 do</div><div class="code_line">&nbsp;&nbsp;with FSocket[i] do</div><div class="code_line">&nbsp;&nbsp; if (FPort&#62;=FPEnd) or (SThread.Terminated)</div><div class="code_line">&nbsp;&nbsp; then break</div><div class="code_line">&nbsp;&nbsp; else</div><div class="code_line">&nbsp;&nbsp; &nbsp;if GetTickCount-TimeOut&#62;PING</div><div class="code_line">&nbsp;&nbsp; &nbsp;then</div><div class="code_line">&nbsp;&nbsp; &nbsp; begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;sa.sin_family:=AF_INET;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;sa.sin_addr.S_addr:=FHost;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;sa.sin_port:=htons(FPort);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;//</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;WSAAsyncSelect(FData, Application.Handle, WM_USER+FPort, FD_CONNECT);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;connect(FData, FSocket[i].sa, SizeOf(FSocket[i].sa));</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;TimeOut:=GetTickCount;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;inc(FPort);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;Form23.Label2.Caption:=&#39;Port: &#39;+intToStr(FPort);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;Form23.ProgressBar1.Progress:=trunc(((FPort-FPStart)*100)/(FPEnd-FPStart));</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;Application.ProcessMessages;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;//</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;Sleep(PING div MAX_PORTS);</div><div class="code_line">&nbsp;&nbsp; &nbsp; end;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TMyThread.Execute;</div><div class="code_line">var</div><div class="code_line">&nbsp;i: integer;</div><div class="code_line">&nbsp;buf: in_addr;</div><div class="code_line">begin</div><div class="code_line">&nbsp;FPStart:=Form23.SpinEdit1.Value;</div><div class="code_line">&nbsp;FPEnd:=Form23.SpinEdit2.Value;</div><div class="code_line">&nbsp;FHost:=inet_addr(PansiChar(AnsiString(Form23.Edit1.Text)));</div><div class="code_line">&nbsp;if (FPEnd&#60;=FPStart)or (Form23.SpinEdit1.Value&#62;65535) or</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(Form23.SpinEdit2.Value&#62;65535)</div><div class="code_line">&nbsp;then FHost:=SOCKET_ERROR;</div><div class="code_line">&nbsp;if FHost=SOCKET_ERROR</div><div class="code_line">&nbsp;then</div><div class="code_line">&nbsp;&nbsp;begin</div><div class="code_line">&nbsp;&nbsp; if not Terminated</div><div class="code_line">&nbsp;&nbsp; then SThread:=nil;</div><div class="code_line">&nbsp;&nbsp; Form23.SpeedButton1.Caption:=&#39;Запуск&#39;;</div><div class="code_line">&nbsp;&nbsp; Exit;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;buf.S_addr:=FHost;</div><div class="code_line">&nbsp;Form23.Edit1.Text:=inet_ntoa(buf);</div><div class="code_line">&nbsp;Form23.ListBox1.Clear;</div><div class="code_line">&nbsp;FPort:=FPStart;</div><div class="code_line">&nbsp;for i:=0 to MAX_PORTS-1 do</div><div class="code_line">&nbsp;&nbsp;with FSocket[i] do</div><div class="code_line">&nbsp;&nbsp; begin</div><div class="code_line">&nbsp;&nbsp; &nbsp;TimeOut:=0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;FData:=Socket(AF_INET, SOCK_STREAM, 0);</div><div class="code_line">&nbsp;&nbsp; end;</div><div class="code_line">&nbsp;//</div><div class="code_line">&nbsp;while not Terminated do</div><div class="code_line">&nbsp;&nbsp;begin</div><div class="code_line">&nbsp;&nbsp; InitSockets;</div><div class="code_line">&nbsp;&nbsp; if FPort&#62;=FPEnd</div><div class="code_line">&nbsp;&nbsp; then break;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">&nbsp;//</div><div class="code_line">&nbsp;for i:=0 to MAX_PORTS-1 do</div><div class="code_line">&nbsp;&nbsp;CloseSocket(FSocket[i].FData);</div><div class="code_line">&nbsp;//</div><div class="code_line">&nbsp;if not Terminated</div><div class="code_line">&nbsp;then</div><div class="code_line">&nbsp;&nbsp;begin</div><div class="code_line">&nbsp;&nbsp; SThread:=nil;</div><div class="code_line">&nbsp;&nbsp; Form23.SpeedButton1.Caption:=&#39;Start&#39;;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">procedure TForm23.SpeedButton1Click(Sender: TObject);</div><div class="code_line">begin</div><div class="code_line">&nbsp;if SThread=nil</div><div class="code_line">&nbsp;then</div><div class="code_line">&nbsp;&nbsp;begin</div><div class="code_line">&nbsp;&nbsp; SThread:=TMyThread.Create(false);</div><div class="code_line">&nbsp;&nbsp; SpeedButton1.Caption:=&#39;Stop&#39;;</div><div class="code_line">&nbsp;&nbsp;end</div><div class="code_line">&nbsp;else</div><div class="code_line">&nbsp;&nbsp;begin</div><div class="code_line">&nbsp;&nbsp; SThread.Terminate;</div><div class="code_line">&nbsp;&nbsp; SThread.WaitFor;</div><div class="code_line">&nbsp;&nbsp; SThread:=nil;</div><div class="code_line">&nbsp;&nbsp; SpeedButton1.Caption:=&#39;Start&#39;;</div><div class="code_line">&nbsp;&nbsp;end;</div><div class="code_line">end;</div><div class="code_line">&nbsp;</div><div class="code_line">end.</div></ol></div></div></div></div>]]></description>
        <author>s2004</author>
        <category>Delphi: Сетевое программирование</category>
      </item>
	
      </channel>
      </rss>
	