Autor Beitrag
sPeeD2k5
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 72



BeitragVerfasst: Do 02.10.08 14:10 
Also wie Topic schon sagt, möchte ich ein kleines Programm schreiben, das mir einfach alle IPs aus einer Text-Datei ausliest, egal ob noch irgndein Text dabei ist.
Gibt es dafür schon passende funktionen in Delphi?

MfG sPeeD
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 02.10.08 14:12 
Wie sieht die Textdatei denn aus?
sPeeD2k5 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 72



BeitragVerfasst: Do 02.10.08 14:16 
ausblenden Quelltext
1:
2:
3:
4:
5:
Text Text Text
ip:port
ip:port
ip:port
ip:port


so ungefähr ;)
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 02.10.08 14:18 
Also in der ersten Zeile beschreibender Text und in den folgenden die IP:Port-Kombination? Immer im gleichen Format?
sPeeD2k5 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 72



BeitragVerfasst: Do 02.10.08 14:22 
yo das ganze wiederholt sich immer wieder :)
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 02.10.08 14:27 
Würde ich mal in etwa so probieren:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
var sl: TStringList;
    i: integer;
begin
  sl := TStringList.Create;
  try
    sl.LoadFromFile(Dateiname);
    for i := 0 to Pred(sl.Count) do
      sl[i] := Copy(sl[i],1,Pred(Pos(':',sl[i])));
    sl.SaveToFile(Neuer_Dateiname);
  finally
    sl.Free;
  end;
end;


Ohne Gewähr, da aus dem Kopf getippselt.
sPeeD2k5 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 72



BeitragVerfasst: Do 02.10.08 14:47 
damit überträgt er leider immanoch den text :/
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 02.10.08 15:25 
Dann mach in der Zeile
ausblenden Delphi-Quelltext
1:
for i := 0 to Pred(sl.Count) do					

mal aus der 0 eine 1.
sPeeD2k5 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 72



BeitragVerfasst: Do 02.10.08 15:44 
gleiches problem wie zuvor^^
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 02.10.08 15:46 
Dann zeig doch mal die ersten 5 Zeilen der Datei und Deinen aktuellen Quältext.
sPeeD2k5 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 72



BeitragVerfasst: Do 02.10.08 15:51 
Ausgangsfile:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
----------------------------------------------------------------------------
COMMAND: C:\PROGRA~1\BORLAND\DELPHI7\PROJECTS\DFIND.EXE -p 80 211.1.1.1 211.1.1.255 500 

----------------------------------------------------------------------------
211.1.1.1:80
----------------------------------------------------------------------------
Scan complete: 1 / 254 IP(s)
----------------------------------------------------------------------------


Nach Clean:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
COMMAND


1.1.1.1

Scan complete


und der aktuelle source sieht so aus:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
var sl: TStringList;
    i: integer;
begin
  sl := TStringList.Create;
  try
    sl.LoadFromFile('sys.log');
    for i := 1 to Pred(sl.Count) do
      sl[i] := Copy(sl[i],1,Pred(Pos(':',sl[i])));
    sl.SaveToFile('clean.txt');
  finally
    sl.Free;
  end;
end;


hoffe dis hilft weiter.


Zuletzt bearbeitet von sPeeD2k5 am Do 02.10.08 15:54, insgesamt 1-mal bearbeitet
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 02.10.08 15:52 
Aha, das sieht ja schon anders aus. Ich habe gleich Feierabend, schaue mir das aber zu Hause dann nochmal in Ruhe an.
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 02.10.08 16:45 
Versuch es mal so (die Konstanten musst Du natürlich anpassen):
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
const sFilename = 'C:\Test.txt';
      sNewFilename = 'C:\Konvertiert.txt';
var sl: TStringList;
    i: Integer;
begin
  sl := TStringList.Create;
  try
    sl.LoadFromFile(sFilename);
    for i  := Pred(sl.Count) downto 0 do
      begin
        if (Trim(sl[i]) <> '') and (sl[i][1] in ['0'..'9']) then
          sl[i] := Copy(sl[i],1,Pred(Pos(':',sl[i])))
        else
          sl.Delete(i);        
      end;
    sl.SaveToFile(sNewFilename);
  finally
    sl.Free;
  end;
end;
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Do 02.10.08 19:32 
user profile iconDeddyH hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
 
9:
10:
11:
12:
13:
14:
15:
{ ... }
for i  := Pred(sl.Count) downto 0 do
  begin
    if (Trim(sl[i]) <> '') and (sl[i][1] in ['0'..'9']) then
      sl[i] := Copy(sl[i],1,Pred(Pos(':',sl[i])))
    else
      sl.Delete(i);        
  end;

Warum denn so kompliziert?

ausblenden Delphi-Quelltext
1:
2:
3:
for i  := sl.Count-1 downto 0 do
  if not ((sl[i] <> '') and (sl[i][1] in ['0'..'9']) and (Pos(':', sl[i][1]) > 0)) then
    sl.Delete(i);

Die IP steht doch im Klartext richtig schön formatiert in einer separaten Zeile. Du musst nur prüfen, ob die Zeile mit einer Zahl beginnt, und zur Sicherheit noch, ob sie einen Doppelpunkt enthält. Wenn du willst, kannst du noch weitere Kriterien in die and-Konstruktion einbauen.
sPeeD2k5 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 72



BeitragVerfasst: Do 02.10.08 23:55 
besten dank habt mir beide sehr weitergeholfen :)
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Fr 03.10.08 07:51 
user profile iconYogu hat folgendes geschrieben Zum zitierten Posting springen:
Die IP steht doch im Klartext richtig schön formatiert in einer separaten Zeile.

Nun ja hüstel... bis auf das ':Port', gelle?

_________________
Na denn, dann. Bis dann, denn.
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 03.10.08 09:26 
user profile iconalzaimar hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconYogu hat folgendes geschrieben Zum zitierten Posting springen:
Die IP steht doch im Klartext richtig schön formatiert in einer separaten Zeile.

Nun ja hüstel... bis auf das ':Port', gelle?

Eben ;)