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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.07.2012, 16:28   #1
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,430
По умолчанию WinSock.gethostbyname правильно передать строку.

Доброго времени суток!

Прежде всего: проблема никак не связана с работой в сети. С работой в сети проблем нет, по сему тема в этом разделе.

Далее, есть функция gethostbyname в WinSock2(в Winsock) она тоже есть.

Передаю туда строку: 10.1.0.100
Код:
  pSckHost: PHostEnt;
 ....
  ps:PAnsiChar;
begin
  Result := False;
  try
...
    if not Boolean(sckError) then
    begin
      ps:=PAnsiChar(aAddress);
      pSckHost := GetHostbyName(ps);//gethostbyname(PAnsiChar(aAddress));
в переменой ps поселяет содержимое: 1
а должно быть 10.1.0.100

Результатом будет негование сокетов.

Фигня, статически задаю значение ps.
Код:
ps:='10.1.0.100';
В ps ложится: 10.1.0.100 и все работает.

Проблема:
Почему для gethostbyname не работает приведение типов string => PAnsiChar ? Можно как-то по другому?

Delphi XE2.

Последний раз редактировалось Человек_Борща; 03.07.2012 в 16:30.
Человек_Борща вне форума Ответить с цитированием
Старый 03.07.2012, 16:41   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Код:
ps:=PAnsiChar(AnsiString(aAddress));
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 03.07.2012, 17:28   #3
Tip.the.besT
------------------
Пользователь
 
Регистрация: 15.08.2011
Сообщений: 78
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Доброго времени суток!

Прежде всего: проблема никак не связана с работой в сети. С работой в сети проблем нет, по сему тема в этом разделе.

Далее, есть функция gethostbyname в WinSock2(в Winsock) она тоже есть.

Передаю туда строку: 10.1.0.100
Код:
  pSckHost: PHostEnt;
 ....
  ps:PAnsiChar;
begin
  Result := False;
  try
...
    if not Boolean(sckError) then
    begin
      ps:=PAnsiChar(aAddress);
      pSckHost := GetHostbyName(ps);//gethostbyname(PAnsiChar(aAddress));
в переменой ps поселяет содержимое: 1
а должно быть 10.1.0.100

Результатом будет негование сокетов.

Фигня, статически задаю значение ps.
Код:
ps:='10.1.0.100';
В ps ложится: 10.1.0.100 и все работает.

Проблема:
Почему для gethostbyname не работает приведение типов string => PAnsiChar ? Можно как-то по другому?

Delphi XE2.
Только вчера с этим маялся, тоже тему создавал Предыдущий оратор ответил абсолютно верно!
C YBA}|{EH|/|EM Tip.the.besT
Tip.the.besT вне форума Ответить с цитированием
Старый 03.07.2012, 18:22   #4
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Цитата:
Почему для gethostbyname не работает приведение типов string => PAnsiChar ?
Оно работает, но не так, как ты ожидаешь.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 03.07.2012, 18:25   #5
Tip.the.besT
------------------
Пользователь
 
Регистрация: 15.08.2011
Сообщений: 78
По умолчанию

Вот здесь народ объесняет, почему так, а не эдак - Тац
C YBA}|{EH|/|EM Tip.the.besT
Tip.the.besT вне форума Ответить с цитированием
Старый 03.07.2012, 18:29   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

я не до конца объяснил.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
СИ запись файла в массив, каждую строку передать в переменную sasha502 Помощь студентам 4 20.10.2011 15:21
Передать в dll(загружна в чужое АП) строку... Человек_Борща Win Api 8 18.09.2011 01:01
Через командную строку передать два слова и целое число N. gas777 Общие вопросы C/C++ 5 23.06.2011 19:59
Проблемы с GetHostByName Djanius Общие вопросы Delphi 2 28.12.2010 00:55
Не могу передать строку в функцию Никки Общие вопросы Delphi 4 18.09.2010 21:22