как побороть "варнинг" WSAData

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
timofas
новенький
Сообщения: 20
Зарегистрирован: 26.07.2013 14:55:40

как побороть "варнинг" WSAData

Сообщение timofas »

проект причесал, остался только этот варнинг:
unit1.pas(157,31) Hint: Local variable "WSAData" does not seem to be initialized

Код: Выделить всё

function TForm1.GetIPFromHost(HostName, IPaddr: string): Boolean;
type
  cName = array[0..100] of Char;
  PName = ^cName;
var
  HEnt: pHostEnt;
  HName: PName;
  WSAData: TWSAData;
  i: Integer;
begin
  Result := False;
  if WSAStartup($0202, WSAData) <> 0 then begin  // <<< ругается сюда
    WSAErr := 'Сокет не отвечает!"';
    Exit;
  end;
  New(HName);
  if GetHostName(HName^, SizeOf(cName)) = 0 then
  begin
    HostName := StrPas(HName^);
    s_comp := HostName;
    HEnt := GetHostByName(HName^);
    for i := 0 to HEnt^.h_length - 1 do
     IPaddr := Concat(IPaddr, IntToStr(Ord(HEnt^.h_addr_list^[i])) + '.');
    SetLength(IPaddr, Length(IPaddr) - 1);
    Result := True;
  end
  else begin
   case WSAGetLastError of
    WSANOTINITIALISED:WSAErr:='WSANotInitialised';
    WSAENETDOWN      :WSAErr:='WSAENetDown';
    WSAEINPROGRESS   :WSAErr:='WSAEInProgress';
   end;
  end;
  Dispose(HName);
  WSACleanup;
end;


ну подможите с winsock
Ism
энтузиаст
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Сообщение Ism »

SetLength(WSAData,0)
WSAData:=nil
или чтото типа такого
timofas
новенький
Сообщения: 20
Зарегистрирован: 26.07.2013 14:55:40

Сообщение timofas »

unit1.pas(159,23) Error: Type mismatch
unit1.pas(160,14) Error: Incompatible types: got "Pointer" expected "WSADATA"

в голову не помогло, да я лузер :)
Ism
энтузиаст
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Сообщение Ism »

Может так , как здесь ?
viewtopic.php?f=30&t=9290&start=30#p74530

Добавлено спустя 3 минуты 51 секунду:
Ищите в исходниках Lazarus по TwsAData
SeZuka
постоялец
Сообщения: 209
Зарегистрирован: 05.09.2012 14:58:05

Сообщение SeZuka »

А чем вас смущает это предупреждение, это ведь не ошибка, просто говорится что переменная не инициализирована. Функция WSAStartup как раз и заполняет ее, только компилятор об этом не знает.
timofas
новенький
Сообщения: 20
Зарегистрирован: 26.07.2013 14:55:40

Сообщение timofas »

просто периодически она пропадает, понять почему так происходит непонятно
Ответить