Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.04.2013, 13:54   #1
malor
Форумчанин
 
Регистрация: 23.05.2007
Сообщений: 151
Вопрос Инициализация структуры: W1036 Variable 'LpAdapterAddresses' might not have been initialized

Код функции:
Код:
var
  bf: Cardinal;
  LpAdapterAddresses: PIP_ADAPTER_ADDRESSES;
  .......... etc ..............
begin

  if WSAStartup($0202, m_data) <> 0 then
  begin
    Result := false;
    Exit;
  end;

  hostlen := NI_MAXHOST;     // 1025
  servlen := NI_MAXSERV;     // 32

  Result := true;                        
  AInfoStr := '';
  try
    bf := 0;
    if GetAdaptersAddresses(AF_INET, 0, nil, nil, @bf) <> ERROR_BUFFER_OVERFLOW then Abort;
    try
      GetMem(LpAdapterAddresses, bf);

      if GetAdaptersAddresses(AF_INET, 0, nil, LpAdapterAddresses, @bf) <> ERROR_SUCCESS then Abort;

      while LpAdapterAddresses <> nil do
      begin
        // Здесь что-то делаем.
      end;
    finally
      FreeMem(LpAdapterAddresses, bf);
    end;
  except
    Result := false;
    AInfoStr := '';
  end;

  WSACleanup;     
end;
Взят из поста про GetAdaptersAddresses.

Дельфи сообщает:
Цитата:
W1036 Variable 'LpAdapterAddresses' might not have been initialized
Как вам известно `PIP_ADAPTER_ADDRESSES` это тип указателя на структуру:
Код:
  _IP_ADAPTER_ADDRESSES = record
    Union: record
      case Integer of
        0: (
          Alignment: ULONGLONG);
        1: (
          Length: ULONG;
          IfIndex: DWORD);
    end;
    Next: PIP_ADAPTER_ADDRESSES;
    AdapterName: PAnsiChar;
    FirstUnicastAddress: PIP_ADAPTER_UNICAST_ADDRESS;
    FirstAnycastAddress: PIP_ADAPTER_ANYCAST_ADDRESS;
    FirstMulticastAddress: PIP_ADAPTER_MULTICAST_ADDRESS;
    FirstDnsServerAddress: PIP_ADAPTER_DNS_SERVER_ADDRESS;
    DnsSuffix: PWCHAR;
    Description: PWCHAR;
    FriendlyName: PWCHAR;
    PhysicalAddress: array [0..MAX_ADAPTER_ADDRESS_LENGTH - 1] of BYTE;
    PhysicalAddressLength: DWORD;
    Flags: DWORD;
    Mtu: DWORD;
    IfType: DWORD;
    OperStatus: IF_OPER_STATUS;
    Ipv6IfIndex: DWORD;
    ZoneIndices: array [0..15] of DWORD;
    FirstPrefix: PIP_ADAPTER_PREFIX;
  end;
Как здесь быть с инициализацией, в подобном случае?

Delphi XE
malor вне форума Ответить с цитированием
Старый 27.04.2013, 14:06   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Это не ошибка а предупреждение.
Насчет инициализации можно попробовать ZeroMemory(LpAdapterAddresses,sizeo f(LpAdapterAddresses))
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.04.2013, 10:42   #3
malor
Форумчанин
 
Регистрация: 23.05.2007
Сообщений: 151
По умолчанию

Вставил "ZeroMemory(LpAdapterAddresses, sizeof(LpAdapterAddresses));"
сразу после "GetMem(LpAdapterAddresses, bf);" но ворнинг сохранился.
malor вне форума Ответить с цитированием
Старый 28.04.2013, 10:47   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну и пес с ним. Если прога нормально работает то предупреждение всего лишь буревестник косяков, которые могут и не появится )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.04.2013, 11:36   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
LpAdapterAddresses:=nil
вставить в начале функции и перестанет.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 28.04.2013, 12:13   #6
malor
Форумчанин
 
Регистрация: 23.05.2007
Сообщений: 151
Радость

Сработало.

Спасибо!
malor вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
инициализация массива структуры Артэс Общие вопросы C/C++ 8 02.10.2012 00:21
variable 'ch' is being used without being initialized (С++) DarkAltair Помощь студентам 6 06.10.2011 15:18
run-time error 91 (object variable or with block variable not set) mrs.petrushina Microsoft Office Access 5 19.04.2011 12:59
run-time error 91 (object variable or with block variable not set) mrs.petrushina Microsoft Office Excel 7 05.04.2011 00:22
Variable <Имя> might not have been initialized Anchut@ Общие вопросы Delphi 5 21.06.2010 11:01