Показать сообщение отдельно
  #4  
Старый 11.03.2013, 09:10
buhhu_nyx buhhu_nyx вне форума
Прохожий
 
Регистрация: 25.01.2011
Сообщения: 2
Репутация: 10
По умолчанию

Цитата:
Сообщение от BBBCat
К сожалению у меня Delphi 7, но по логике получается, что что-то происходит на месте многоточия
Код:
Function InitApplication:boolean;
begin
...
 Main.CB.Items.Clear; //Tcombobox на главной форме проекта...
Что там такого страшного?

Вы ПРАВЫ и за это вам респект и большое спасибо.
Выше было вот что:
Код:
Procedure LocalIPHost;
var
  phe: PHostEnt;
  Buffer: Pansichar; // array[0..63] of Char; - это работало в Delphi6
  ...
begin
  if (WSAStartup($101, GInitData)<>0) then exit;
  Result := '';
  if (GetHostName(Buffer,128)<>0) then exit;
  phe := GetHostByName(buffer);
 ...
end;

Проблема была в типе переменной buffer и вызове 2 функций GetHostName && GetHostByName. Получается я выделял 1 байт памяти на строку для имени компа, понятно что имя получалось подлиннее и происходило наложение на следующие участки памяти полученного имени компа.
Глюк вылез именно после перехода на RAD2009. Глюк,к сожалению, у меня

Рабочее решение для моей ситуации следующее:
Код:
var
  phe: PHostEnt;
  Buffer: array[0..63] of Char;
begin
  if (GetHostName(@Buffer,sizeof(buffer))<>0) then exit;
  phe := GetHostByName(@buffer);
end;
Ответить с цитированием