Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi zeichenkette mit delphi rausfiltern (https://www.delphipraxis.net/99449-zeichenkette-mit-delphi-rausfiltern.html)

pillepalle 12. Sep 2007 12:48


zeichenkette mit delphi rausfiltern
 
Hi leute,

ich habe eine datei mit folgendem inhalt:

03[11:27] * haywire (bomba@*.connect.net.au) has joined #blubb
[11:27] <@bot-name1> #22 114x [8.9M] bli.zip
[11:27] <+biber2> #23 55x [1.3M] bla
[11:27] <&5luzis> #24 17x [401K] blubb.rar
02[11:28] * wdsnnv (vdds@*.t-ipconnect.de) Quit (Ping timeout)
03[11:28] * luisdiver (luisdiver@*.telepac.pt) has joined #blubb
03[11:28] * barrybreen (asdfa@*.connect.net.au) has joined #blubb
03[11:29] * remb (remb@*.cable.ntl.com) has joined #blubb
[11:30] <5luzis> blablah chitchat blablah

ich will nun aus dieser datei alle zeilen gelöscht haben die nicht dem folgendem muster entsprechen:

[11:27] <bot-name1> #22 114x [8.9M] bli.zip
[11:27] <+biber2> #23 55x [1.3M] bla
[11:27] <&5luzis> #24 17x [401K] blubb.rar


Datei öffnen und ausgeben bekomm ich hin, aber mit was ich nun da dran soll weiss ich leider nicht

danke schonmal :)

Matze 12. Sep 2007 12:54

Re: zeichenkette mit delphi rausfiltern
 
Hallo,

wenn es wirklich um Regeln geht, dann fallen mir spontan reguläre Ausdrücke ein. Damit kann man so ziemlich jede Regel aufstellen, sei sie noch so komplex. Eine entsprechende Unit, die du dazu einbinden musst, findest zu beispielsweise hier.

tr909 12. Sep 2007 12:56

Re: zeichenkette mit delphi rausfiltern
 
Also entweder mit regulären Ausdrücken, oder, wenn die zeile eindeutig durch # gekennzeichnet ist, einfach die Datei in ne StringList laden und mit ner Schleife durchgehen. Wenn wenn in der Zeile # nicht vorkommt (if pos('#',list[i])00) dann diese löschen.

Gruß
tr909

pillepalle 12. Sep 2007 13:34

Re: zeichenkette mit delphi rausfiltern
 
danke für die schnelle antwort

ich denke das ich dann regular expressions benutzen muss, sieht allerdings auf den ersten blick ziemlich kompliziert aus.

pillepalle 13. Sep 2007 08:46

Re: zeichenkette mit delphi rausfiltern
 
irgendwie klappt das bei mir nicht so wie ich will

habe zwar durch http://www.regular-expressions.info/completelines.html hinbekommen wie man komplette linien filtert aber das arbeit leider nicht nach dem muster von oben

kennt sich jemand damit besser aus?

tr909 13. Sep 2007 09:29

Re: zeichenkette mit delphi rausfiltern
 
Also wenn du es schaffst mit Regulären Ausdrücken zu bestimmen ob die Zeile gelöscht werden soll oder nicht, könntest dud ann folgendes versuchen.

Delphi-Quellcode:
procedure DeleteLines (fname_in, fname_out, exp: string);
var
  list : TStrings;
  i : integer;
begin
  list := TStringList.Create;
  try
    list.LoadFromFile(fname_in);
    i := 0;
    while i < list.Count do
    begin
      if not FindWithRegExp (list[i],exp) then
        list.Delete(i)
      else
      inc(i);
    end;
    list.SaveToFile(fname_out);
  finally
    list.Free;
  end;
end;
FindWithRegExp (list[i],exp) wäre dann Eine Funktion , die Prüft ob der Ausdruck in exp auf list[i] passt und dann true bzw false zurück gibt. Mangels Kenntnissen von Regulären Ausdrücken kann ich dir dabei jedoch nicht helfen.

Gruß
tr909

pillepalle 13. Sep 2007 09:36

Re: zeichenkette mit delphi rausfiltern
 
danke dir :)

naja ich werd dann mal weiter versuchen das hinzubekommen

tr909 13. Sep 2007 09:59

Re: zeichenkette mit delphi rausfiltern
 
Viel Erfolg. Ich habs gerade auch mal probiert und die von Matze angesprochene Komponente TPerlRegEx benutzt. Funktioniert sehr gut.
Aber bevor ich hier ne Lösung reinstelle kannst du es ja erstmal selbst versuchen.

Gruß
tr909

*edit*
Noch ein paar links die mir geholfen haben.
http://www.wistedter-jungs.de/category/regexp/
http://weitz.de/regex-coach/

marabu 13. Sep 2007 10:07

Re: zeichenkette mit delphi rausfiltern
 
Hallo pillepalle,

du hast ja bisher kein Muster angegeben. An Hand deiner Beispieldaten würde ich vermuten, dass alle Zeilen entfernt werden sollen, welche eine Speichergrößenangabe in eckigen Klammern aufweisen. Wie sieht denn dein nicht funktionierendes Muster aus?

Grüße vom marabu

tr909 13. Sep 2007 10:26

Re: zeichenkette mit delphi rausfiltern
 
So wie ich das sehe will er alle entfernen die keine Größenangabe aufweisen. Scheint wohl dafür gut zu sein um download-links aus irc-Chans zu grabben ;)

Gruß
tr909


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:40 Uhr.
Seite 1 von 2  1 2      

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