subglobal1 link | subglobal1 link | subglobal1 link | subglobal1 link | subglobal1 link | subglobal1 link | subglobal1 link
subglobal2 link | subglobal2 link | subglobal2 link | subglobal2 link | subglobal2 link | subglobal2 link | subglobal2 link
subglobal3 link | subglobal3 link | subglobal3 link | subglobal3 link | subglobal3 link | subglobal3 link | subglobal3 link
subglobal4 link | subglobal4 link | subglobal4 link | subglobal4 link | subglobal4 link | subglobal4 link | subglobal4 link
subglobal5 link | subglobal5 link | subglobal5 link | subglobal5 link | subglobal5 link | subglobal5 link | subglobal5 link
subglobal6 link | subglobal6 link | subglobal6 link | subglobal6 link | subglobal6 link | subglobal6 link | subglobal6 link
subglobal7 link | subglobal7 link | subglobal7 link | subglobal7 link | subglobal7 link | subglobal7 link | subglobal7 link
subglobal8 link | subglobal8 link | subglobal8 link | subglobal8 link | subglobal8 link | subglobal8 link | subglobal8 link

Delphi->статьи->получаем локальный IP адрес

small logo

Для примера брось на форму одну кнопку и несколько компонентов TEdit (см рисунок). Для кнопки создай обработчик OnClick и напиши там:

procedure TForm1.Button1Click(Sender: TObject);

type
TaPInAddr = Array[0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;

var
phe: PHostEnt;
pptr: PaPInAddr;
Buffer: Array[0..63] of Char;
I: Integer;
GInitData: TWSAData;

begin
//Инициализация сокетов
WSAStartup(MAKEWORD(2,2), GInitData);
//Получаем имя локального компьютера (хоста)
GetHostName(Buffer, SizeOf(Buffer));
//Получаем указатель на хост
phe := GetHostByName(buffer);
if phe = nil then Exit;
//Получаем указатель на массив адресов.
pPtr := PaPInAddr(phe^.h_addr_list);
I := 0;
//Перечисляем все адреса
while pPtr^[I] <> nil do
begin
//Вывести адрес
TEdit(FindComponent('Edit'+IntToStr(i+1))).Text:=inet_ntoa(pptr^[I]^);
Inc(I);
end;
//Закрываем сокет
WSACleanup;
end;

На рисунке показана запущенная прога. Я отключен от сети, поэтому мой адрес 127.0.0.1, а остальные TEdit'ы пустые.

 

 

 

 

А вот как осуществляется вывод результата: TEdit( FindComponent(' Edit'+ IntToStr( i+1))). Text:= inet_ ntoa( pptr^[ I]^). Здесь используется функция FindComponent, которая ищет компонент на форме по имени. В качестве параметра ей нужно передать имя компонента, например, 'Edit1'. Но я дпоступаю немного по-другому: 'Edit' плюс индекс приведённый к строке IntToStr(i+1). Таким образом, на первом этапе я буду искать FindComponent('Edit1'), на втором этапе FindComponent('Edit2') и так далее.

Найденный с помощью функции FindComponent компонент я привожу к TEdit с помощью TEdit(FindComponent('Edit'+IntToStr(i+1))) -синтаксис операции приведения такой же, как в С++. А далее использую всю эту конструкцию, как простой TEdit компонент:

TEdit(FindComponent('Edit'+IntToStr(i+1))).Параметр :=Значение ;

 

Вся информация на сайте является интелектуальной собственностью. Перепечатка или распространение без разрешения автора запрещена

Copiright©: GRIENDERS 2006 ака Маслаков Александр


Hosted by uCoz