Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] Как показать IP адрес локальной сети на Lazarus (http://forum.oszone.net/showthread.php?t=304135)

PlanktoN 18-08-2015 12:30 2542990

Как показать IP адрес локальной сети на Lazarus
 
Нужно чтобы при нажатии кнопки т.е Button Показывался текущий IP адрес на label. Но откуда взять текущий IP адрес?? Нужен скрипт

Iska 18-08-2015 14:39 2543070

Оттуда же, где он берётся и без Lazarus. На выбор: разбор stdout «ipconfig.exe», Wbem (WMI Tasks: Networking (Windows)), WinAPI.

PlanktoN 18-08-2015 15:48 2543108

"Нужен скрипт"

Iska 18-08-2015 16:23 2543138

Цитата:

Цитата PlanktoN
"Нужен скрипт" »

Так берите по приведённой ссылке. В чём проблема?

opel431 18-08-2015 17:21 2543155

Для первого совета от Iska, вот так

Код:

uses ..... Process;

function GetIpAddrList(): string;
var
  AProcess: TProcess;
  s: string;
  sl: TStringList;
  i, n: integer;

begin
  Result:='';
  sl:=TStringList.Create();
  {$IFDEF WINDOWS}
  AProcess:=TProcess.Create(nil);
  AProcess.CommandLine := 'ipconfig.exe';
  AProcess.Options := AProcess.Options + [poUsePipes, poNoConsole];
  try
    AProcess.Execute();
    Sleep(500); // poWaitOnExit don't work as expected
    sl.LoadFromStream(AProcess.Output);
  finally
    AProcess.Free();
  end;
  for i:=0 to sl.Count-1 do
  begin
    if (Pos('IPv4', sl[i])=0) and (Pos('IP-', sl[i])=0) and (Pos('IP Address', sl[i])=0) then Continue;
    s:=sl[i];
    s:=Trim(Copy(s, Pos(':', s)+1, 999));
    if Pos(':', s)>0 then Continue; // IPv6
    Result:=Result+s+'  ';
  end;
  {$ENDIF}
  {$IFDEF UNIX}
  AProcess:=TProcess.Create(nil);
  AProcess.CommandLine := '/sbin/ifconfig';
  AProcess.Options := AProcess.Options + [poUsePipes, poWaitOnExit];
  try
    AProcess.Execute();
    sl.LoadFromStream(AProcess.Output);
  finally
    AProcess.Free();
  end;

  for i:=0 to sl.Count-1 do
  begin
    n:=Pos('inet addr:', sl[i]);
    if n=0 then Continue;
    s:=sl[i];
    s:=Copy(s, n+Length('inet addr:'), 999);
    Result:=Result+Trim(Copy(s, 1, Pos(' ', s)))+'  ';
  end;
  {$ENDIF}
  sl.Free();
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  label1.Caption:=GetIpAddrList;
end;

Нашел источник -  http://forum.lazarus.freepascal.org/index.php/topic,4519.msg177771.html#msg177771


или использовать дополнительные библиотеки, компоненты.

Iska 18-08-2015 18:53 2543206

opel431, так это ж не скрипт… Или автор «скриптом» исходный программный код обзывает?!

opel431 18-08-2015 18:59 2543208

Цитата:

Цитата Iska
так это ж не скрипт… »

У отправившего SOS, это скрипт...
Цитата:

Цитата PlanktoN
Нужно чтобы при нажатии кнопки т.е Button Показывался текущий IP адрес на label. Но откуда взять текущий IP адрес?? Нужен скрипт »


Iska 18-08-2015 19:17 2543222

Цитата:

Цитата opel431
У отправившего SOS, это скрипт... »

Да, наверняка так оно и есть :).

PlanktoN 19-08-2015 12:21 2543473

Нужен код т.е на Lazarus. Язык программирования Free Pascal

Iska 19-08-2015 12:42 2543483

Цитата:

Цитата PlanktoN
Нужен код т.е на Lazarus. Язык программирования Free Pascal »

Ну, так коллега opel431 его и привёл выше, причём для двух платформ.

PlanktoN 19-08-2015 20:37 2543672

а короче есть или только это?

opel431 24-08-2015 20:24 2545526

Цитата:

Цитата PlanktoN
а короче есть или только это? »

А короче, Iska Вам уже предложил - https://theroadtodelphi.wordpress.co...-code-creator/ (Open the generated Free Pascal code directly in the Lazarus IDE)


Время: 03:39.

Время: 03:39.
© OSzone.net 2001-