Преобразование AsciString в IP-адрес
Необходимо для динамического увеличения диапазона адресов.
Что то вроде
for( int i = 0; i <= 100; i++ )
{
ini->WriteString( "Hosts", i, Edit->Text+1 );
// В Edit->Text пользователь должен ввести
// начальный IP-адрес, а в .ini будет писатся
// определеный диапазон IP-адресов
}
Функций разбиения я сейчас не вспомню... хелп по AnsiString посмотри, а в Hex переводить, что-то типа StrToHex...
Цитата:
Originally posted by Shure
Народ подскажите как используя только стандартные функции Билдера ( не подключая stlib, stdio string, а используя только vcl )
Народ подскажите как используя только стандартные функции Билдера ( не подключая stlib, stdio string, а используя только vcl )
А что за непонятная неприязнь к stdio
Тут самая простая вещь тебе использовать sscanf
или ты боишься что использование стандартных библиотек сделает твою прогу очень тяжелой :-)
1) Если тебе просто надо писать в *.ini (т.е. в текстовый файл) нечто вида FE.0A.02.01, то юзай
fprintf(ini, "%x.%x.%x.%x", ...);
2) Если тебе нужен именно интернет адрес, то используй inet_addr() с подключением (чем оно тебя так обламывает?) winsock2.h и никакой vcl тебе его не даст...
3) Если все-таки надо, то можно просто руками написать StrToHex. Примитивно, например, так:
AnsiString _IntToHex(int t)
{
char h[] = "0123456789ABCDEF";
AnsiString result;
for (int k = 8*sizeof(int)-4; k>=0; k -= 4)
result += h[(t>>k)&0xF];
return result;
}
Просто думал что есть в билдере функция по преобразованию текста и ИПешник ...
По ходу придется все-таки stdio подключать т.к. проще варианта я не вижу.
Спасибо за помощь.
"В билдере и не подключая *.h"...Интересно же...Если тебе надо, чтобы все было супер-чисто, то есть asm, или Visual C++ & winapi хотя бы...
нет необходимости подключать дополнительные хедеры вот я и думал может есть функция по преобразованию строки в IP-адрес.