Re: Problem mit txt Dateien
Für die Arbeit mit Strings möchte ich gerne wieder auf [dp]reguläre Ausdrücke[/dp] verweisen, mit denen eine Prüfung auf gültige IPs (jede Komponente 0-255) relativ kurz gestaltet werden kann:
Delphi-Quellcode:
Um also die IPs gem Deiner Beschreibung in ein Memo zu laden, felro, könnte mit dem passenden Ausdruck in ReIPFromLogFile dieser Code verwendet werden:
function IsValidIPAddress(const AString: string): Boolean;
const RE255 = '([1-9]?\d|1\d\d|2([0-4]\d|5[0-5]))'; begin Result:= RegExp('^(%s\.){3}%:0s$', [RE255]).Execute(AString); end;
Delphi-Quellcode:
Wenn Du in Zukunft häufiger mit Strings arbeitest, könnten Lösungen dieser Art einiges an Arbeit ersparen auch wenn sie auf den ersten Blick etwas kryptisch anmuten mögen...
with TStringList.Create do
try LoadFromFile(AFilename); with RegExp(ReIPFromLogFile) do if Execute(Text) then repeat Memo1.Lines.Add(Match[0]) until not ExecuteNext; finally Free; end; |
Re: Problem mit txt Dateien
Dass hört sich ja mal sehr gut an :D muss ich gleich mal porbieren. THX felro
|
Re: Problem mit txt Dateien
hmm hab jetzt nen paar Wochen immer ma wieder probiert aber so richtig weiter gekommen bin ich leider nicht! Kann mir jemand evtl nochma helfen?
|
Re: Problem mit txt Dateien
Delphi-Quellcode:
procedure einlesen;
var f : textfile; s : string; begin AssignFile(f,'C:\beispiel.txt'); Reset(f); while not EOF(f) do begin Readln(f, s); Delete(s, Pos(' ',s),length(s)); Memo1.Lines.Add(s); end; CloseFile(f); end; |
Re: Problem mit txt Dateien
Hmm ja dass einlesen hab ich ja schon :D
Mein Problem ist, dass ich den obrigen Quelltext nicht verstehe und es mir lieber wäre wenn es ein Befehl gibt, der nach 16 Zeichen alles abscneidet und dann noch alle leerzeichen und buchstaben entfernt. CU felro |
Re: Problem mit txt Dateien
Hi felo,
was genau verstehst Du denn nicht ? Hier bist Du doch genau richtig zum fragen, oder ? ;) Zu Deinem Wunsch:
Delphi-Quellcode:
und weiter:
//In Edit1 stehen zb. 40 Zeichen und Du willst nur die ersten 16
Edit2.Text:= Copy(Edit1.Text,1,16);
Delphi-Quellcode:
und zum Schluss:
//alle Leerzeichen entfernen
function DelSpace(Data:string):string; var i: integer; begin for i:= 1 to length(Data) do delete(Data,pos(' ',Data),1); DelSpace:= Data; end; ...String auf Zahlen überprüfen Gruß Bit P.S. Die vor mir geposteten Sourcen sind aber bei weitem besser als das was Du jetzt vorhast ! |
Re: Problem mit txt Dateien
Ich weis nicht, ob diese Ersetzen-Routine wirklich funzt.
Edit: Denn wenn da mehrere Spaces hintereinander stehen, wird er jedes zweite übergehen, da alles nach dem Löschen um eins nach vorn rutscht, Dein Index aber auch um eins weiter geht. Das macht dann einen Suchschritt von zwei Zeichen.
Delphi-Quellcode:
function bla(s:string);
i:integer; c:char; begin // s ist die aus der Datei eingelesene Zeile s:=copy(s,1,16); // Eine Möglichkeit (benötigt Unit StrUtils): s:=AnsiReplaceStr(s,' ',''); // Zweite Möglichkeit: i:=pos(' ',s); while i>0 do begin delete(s,i,1); i:=pos(' ',s) end; // Bzw auch für Ziffern: i:=1; while i<=length(s) do if s[i] in [' ','0'..'9'] then delete(s,i,1) else inc(i); bla:=s end; |
Re: Problem mit txt Dateien
Ok danke an euch beide, dass klingt ja schonmal wesentlich einfacher. Danke felro
|
Re: Problem mit txt Dateien
..wie wäre es mit
Delphi-Quellcode:
function GetOnlyValidChars(aString:String):String;
newString := ''; for i := 0 to length(aString) do begin if not(aString[i] in [#0]) then //hier könntest du noch mehr zeichen ausschliessen begin newString := newString + aString[i]; end; end; result := newString; end; |
Re: Problem mit txt Dateien
Leerzeichen entfernen? Schon mal an StringReplace gedacht? :roll:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:29 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