Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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


Michael C ©   (2002-03-04 10:03:00) 

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


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


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;


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

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


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

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


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

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


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

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


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

Вот фрагмент
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 10:51:00) [7]

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


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

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


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

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


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

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


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

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


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

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

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


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

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо