Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.18;
Скачать: [xml.tar.bz2];




Вниз

Хелп, люди... 


Michael C   (2002-03-04 10:03) [0]

Есть набор IP адресов, которые надо записать в массив, и сравнить их с другим набором чисел(это размеры), если IP адрес повторяется то сложить размер с пред. размером этого IP адреса ...немного непонятно, но я сам уже все......



Digitman   (2002-03-04 10:16) [1]

что есть "размер IP-адреса" ?



Michael C   (2002-03-04 10:20) [2]

Каждому IP, из этого набора соответствует опред. размер, грубо

ххх.ххх.хх.хх 1240
ххх.хх.ххх.хх 580



ProgMan   (2002-03-04 10:21) [3]

Не мучайся, посчитай в Excel"е!



Digitman   (2002-03-04 10:29) [4]

Не то что "немного непонятно" - совершенно непонятно, о каком таком "размере" ты речь ведешь.
Что это такое - "размер" ? Что и как у тебя измерялось, в рез-те чего начало фигурировать понятие "размер" чего-то там ? В каких единицах это самый "размер" измерялся ?



Michael C   (2002-03-04 10:39) [5]

Значить, так, DigitMan вся надежда на тебя:
Веду выборку из файла, выбираю столбцы с Source IP, c Dest IP и c Size. Выбрал. Далее, Source IP, может повторяться, так вот надо все одинаковые S IP и D IP, выбрать и сложить их значения Size...
тока не пинай, понедельник тяжел как никогда...



Sasha9   (2002-03-04 10:51) [6]

что-то я не догоняю......... может приведёшь фрагмент из файла с S IP, D IP и Size



Digitman   (2002-03-04 10:51) [7]

SELECT DstIP, SrcIP, Sum(Size) AS TotalSize
FROM TrafficTable
GROUP BY xxx.DstIP, xxx.SrcIP;



Michael C   (2002-03-04 10:59) [8]

Вот фрагмент
Source IP address Dest IP address Size
217.73.192.19 192.168.33.55 971
192.168.33.55 217.73.192.19 60
192.168.33.55 217.73.192.19 60
195.34.32.68 192.168.33.55 62



Sasha9   (2002-03-04 11:06) [9]

обрезай строку до последнего пробела (copy,pos,delete) и складывай оставшийся size с помощью strtoint



Michael C   (2002-03-04 11:15) [10]

Просто мне требуется, код
адрес источника равно номер элемента массива.
А дальше я сам



Shaman_Naydak   (2002-03-04 11:27) [11]

>> ProgMan
Мда, Просто нету слов!
>> Michael C
А в чем проблема-то? Digitman привел абсолютно правильное решение.
Или проблема в том, чтобы из текстового файл считать, разложив каждую строчку по полям структуры?



Michael C   (2002-03-04 11:30) [12]

Вот именно, требуется подсчитать траффик для каждого адреса.
И вопрос group by , именно это и сделает??



Digitman   (2002-03-04 11:36) [13]


type
PTrafficReport = ^TTrafficReport;
TTrafficReport = packed record
SrcIP: DWord;
DstIP: Dword;
Size: Int64;
end;

var
TrafficData: TList; //исходный список указателей на записи типа TTrafficReport;
TotalTrafficData: TList; //результирующий список


...

function FindTotalTrafficRecord(ASrcIp, ADstIp: DWord): PTrafficReport;
var
i: Integer;
p: PTrafficReport;
begin
Result:= nil;
for i:= 0 to TotalTrafficData.Count - 1 do begin
p := TotalTrafficData.Items[i];
if (p.SrcIp = ASrcIp) and (p.DstIp = ADstIp) then begin
Result:= p;
break;
end;
end;
end;

var
i: Integer;
SIp, DIp: DWord;
Sz: Int64;
p: PTrafficReport;

for i:= 0 to TrafficData.Count - 1 do begin
with PTrafficReport(TrafficData.Items[i])^ do begin
SIp := SrcIp;
DIp := DstIp;
Sz := Size;
end;
p:= FindTotalTrafficRecord(SIp, DIp);
if not Assigned(p) then begin
New(p);
p.SrcIp := SIp;
p.DstIp := DIp;
p.Size := 0;
TrafficData.Add(p);
end;
p.Size := p.Size + Sz;
end;




Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.18;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.73 MB
Время: 0.015 c
7-57535           Ruslan2               2001-12-15 20:54  2002.03.18  
Модем


3-57339           Softmaster            2002-02-17 12:23  2002.03.18  
Помощь по концепции.


1-57425           виктор_л              2002-03-01 11:46  2002.03.18  
Почему так получается?


1-57376           КП                    2002-03-01 16:06  2002.03.18  
Одновременное выполнение двух процедур


7-57536           Дима                  2001-12-17 18:31  2002.03.18  
Звук из системного динамика