J
hier noch eine kürzere variante (benötigt die math.hpp)
TStrings* ipRange(String StartIp, String StopIp)
{ TStringList *Range = new TStringList();
StartIp += ".";
StopIp += ".";
__int64 IP1 = 0, IP2 = 0;
for(int i=0; i<4; i++)
{ IP1 += StrToInt(StartIp.SubString(1, StartIp.Pos(".")-1)) * Power(256, 3-i);
StartIp.Delete(1,StartIp.Pos("."));
IP2 += StrToInt(StopIp.SubString(1, StopIp.Pos(".")-1)) * Power(256, 3-i);
StopIp.Delete(1,StopIp.Pos("."));
}
String IP;
for(__int64 i=IP1; i<=IP2; i++)
{ IP = "";
for(int j=0; j<4; j++)
IP += IntToStr(__int64(i / Power(256, 3-j)) % 256) + String((j<3) ? "." : "");
Range->Add(IP);
}
return Range;
}
die function testet noch nicht die gültigkeit der ip's, ich gehe davon aus, dass ich 2 gültige ip's übergeben bekomme
das prinzip ist ein anderes:
ich rechne jede ip erst in einen __int64-wert um, und lass dann eine schleife durchlaufen, die von der startip zur stopip durchläuft
dann rechne ich nur noch in der schleife den jeweiligen wert ins ip-format zurück