Копался во многих источниках,к сожалению не нашел. Задача: сравнить текст,в случае если он одинаков ->true.Если же нет,то передача действия к следующей функции. Допустим мне надо сравнивать айпи адреса ,(локальный и не локальный).С помощью уже готовой функции получаем айпи адрес.Его значение равно переменной Ip. Потом идет сравнение ,в случае если он локальный то выводиться :Айпи локальный,если же нет,то :Айпи не локальный Так вот,вопрос:как сделать так,чтобы сравнение шло по маске? Т.е не использовать все время,и не сравнивать Ip,с каждый айпи адресом (127.0.0.1,192.168.1.1 и т.д). А чтобы автоматически шло сравнение по маске,к примеру: Если XXX -равно 192,то возвращается True (*проверка дальше не происходит),здесь XXX используется в качестве: XXX.168.1.1 И т.д.Чтобы определить к примеру определенные сетки айпишек. Code: if ((AnsiString) Ip=="XXX.XXX.XXX.XXX"){Edit1->Text="Айпи локальный"; } else Edit1->Text="Айпи не локальный";;
используй циклы.а лучше по подробнее опиши суть вопроса.если честно не хя не понял) А подробнее если я все понял правильно .создай масив с масками локальной сети тоесть array("192","193");# к примеру и с помошью while срафни в цикли первый ети цифры так сказать айпи адреса с етими если совпал значит break;и return все это дело загони в функциюв а в возврат помести ответ
Для локальных сетей вообще принято присваивать адреса из диапазона 192.168.*.*, а 127.0.0.* - это "кольцо" (придумали для тестирования сетевых приложений в условиях отсутствия реальной сети). Code: if (Edit1->Text.SubString(0,7) == "192.168" || Edit1->Text.SubString(0,7) == "127.0.0") ShowMessage("local");
Joker-jar,спасибо.Доработал и получилось хорошо ) Итог: PHP: Edit1->Text=Ip; if (Edit1->Text.SubString(0,7) == "192.168" || Edit1->Text.SubString(0,7) == "127.0.0" || Edit1->Text.SubString(0,7) == "172.16" || Edit1->Text.SubString(0,7) == "10.0.0") ShowMessage("local"); } Вроде все правильно
хватит хулиганить для локальных сетей были придуманы 172.168.*.* (255.255.0.0), 192.168.*.* (255.255.0.0), 10.*.*.* (255.0.0.0) обратите внимание на МАСКИ подсети. нифига подобного, 127.*.*.* используется как loopback так же, теоретически .0 значит тек. хост а .255 - броадкаст на всю подсеть так что правильная ф-ия будет какой-то типа вот такой-то: Code: BOOL isLocal( LPSTR szIP ) { ULONG uAddr = inet_addr( szIP ); if (uAddr == -1) return FALSE; return ( (LOBYTE( LOWORD( uAddr ) ) == 192 && HIBYTE( LOWORD( uAddr ) ) == 168) || LOBYTE( LOWORD( uAddr ) ) == 10 || (LOBYTE( LOWORD( uAddr ) ) == 172 && HIBYTE( LOWORD( uAddr ) ) == 168) || LOBYTE( LOWORD( uAddr ) ) == 127 || LOBYTE( LOWORD( uAddr ) ) == 255 ); } ----- хотя все это (адреса) относительно и стандартизировано, можно привязать всё наоборот и радоваться веселому приколу