Для примера брось на форму одну кнопку и несколько компонентов 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))).Параметр :=Значение ;