AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Gleich beginnende Strings zählen

Ein Thema von Jörn · begonnen am 26. Mär 2005 · letzter Beitrag vom 26. Mär 2005
Antwort Antwort
Jörn

Registriert seit: 5. Sep 2003
Ort: Helmstedt
312 Beiträge
 
#1

Gleich beginnende Strings zählen

  Alt 26. Mär 2005, 04:54
Hallo,

ich habe heute mal wieder echt keinen Plan, wie ich ein Problem angehen soll.
Gegeben ist mir eine Stringlist mit vielen IPs. Diese möchte ich untersuchen nach Häufigkeit in bestimmten Bereichen (im Sinne einer Statistik). Nach dem Bearbeiten möchte ich eine Liste haben wie folgt:

192.168.0.* = 20 IPs
192.168.1.* = 0 IPs
192.168.2.* = 7 IPs

Jemand einen Lösungsansatz für mich?

MfG
  Mit Zitat antworten Zitat
Benutzerbild von derpepe
derpepe

Registriert seit: 16. Mär 2005
Ort: Dotternhausen
164 Beiträge
 
Delphi 2005 Personal
 
#2

Re: Gleich beginnende Strings zählen

  Alt 26. Mär 2005, 06:50
Also: Du wolltest einen Ansatz, deshalb hier ein kleines Progrämmchen für Dich.

Es generiert in OnFormCreate 10.000 IPs der Form 192.168.xxx.xxx. Außerdem werden noch 20 IPs der Form 192.169.xxx.xxx generiert.
Man kann jetzt einen gleichbleibenden Anfangsstring eingeben, in unserem Fall "192.168.".

Klickt man auf den Button wird die von Dir gewünschte Statistik erstellt und ausgegeben. Dabei werden IPs die mit "192.168." beginnen gezählt, der Rest (also in unserem Fall 20) werden unter "andere" aufgeführt.

Momentan geht das Programm davon aus, dass nach dem "192.168." drei relevante Zeichen kommen nach denen es die Gruppen bildet. Das erschien mir sinnvoll, da es ja um IPs geht. Aber man kann das ja auch, wenn gewünscht, entsprechend abändern.

Natürlich ist alles noch sehr verbesserungsbedürftig, aber das ist ja auch nur ein Ansatz

Viel Spaß damit und frohe Ostern!


Der Quelltext (in ListBox1 stehen die IPs, in ListBox2 wird das Ergebnis ausgegeben):
Delphi-Quellcode:
procedure TForm1.BitBtn1Click(Sender: TObject);
var
  anz,laenge,i:integer;
  pname,anfang,gekuerzt:string;
  liste:tstringlist;

  procedure neue_ip(s:string);
  begin
    liste.add(s+': 1');
  end;

  function anzahl_ip(s:string):integer;
  var
    i:integer;
    temp:string;
  begin
    for i:=0 to liste.count-1 do begin
      temp:=copy(liste[i],1,length(s));
      if temp=s then begin
        temp:=liste[i];
        break;
      end;
      temp:='';
    end;
    if temp='then begin
      anzahl_ip:=0;
    end else begin
      anzahl_ip:=strtoint(copy(temp,pos(':',temp)+1,length(temp)-pos(':',temp)));
    end;
  end;

  procedure update_ip(s:string;anzahl:integer);
  var
    i:integer;
    temp:string;
  begin
    for i:=0 to liste.count-1 do begin
      temp:=copy(liste[i],1,length(s));
      if temp=s then begin
        liste[i]:=s+': '+inttostr(anzahl);
      end;
    end;
  end;

begin
  liste:=tstringlist.create();

  anfang:=edit1.text;
  laenge:=length(edit1.text)+3;

  for i:=0 to listbox1.items.count-1 do begin
    gekuerzt:=copy(listbox1.items[i],1,laenge);
    if copy(gekuerzt,1,laenge-3)=anfang then
      pname:=copy(listbox1.items[i],1,laenge)
    else
      pname:='andere';
    anz:=anzahl_ip(pname);
    if anz=0 then
      neue_ip(pname)
    else
      update_ip(pname,anz+1);
  end;

  listbox2.Items:=liste;
end;
Miniaturansicht angehängter Grafiken
screen2_140.jpg   screen1_808.jpg  
Angehängte Dateien
Dateityp: zip test_179.zip (160,0 KB, 5x aufgerufen)
Peter J. Schneider
http://raketenwerfer.de/programmieren/delphi/index.html
Nes dar in da kev, sed un est a log!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz