Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Memo auswerten


tmkb - Mi 01.01.03 17:37
Titel: Memo auswerten
Hallo,

Ich habe folgendes vor: Wenn man auf button1 drückt, sucht er sich in memo1 alle IPs (weiß nicht wie man die am besten auslesen kann!) und schreibt die dann in dem Format in memo2:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
  127.0.0.1

  127.0.0.1

  127.0.0.1

  127.0.0.1

  usw

(also immer ne freie zeile zwischen jeder IP und vor jeder ip zwei leerstellen)

Zur Info: Die IPs in memo1 sind immer woanderst, ich kann also nicht sagen "Zeile 1 von stelle 1 bis 7" oder so. außerdem sind immer verschieden viele IPs in memo1. Kann mir da irgendjemand aushelfen und mir wenns möglich wäre einen relativ leicht verständlichen Code geben? Ich krieg das nämlich nicht hin, ist nicht ganz meine kragenweite...
danke schon im vorraus!
cu,
tmkb[/code]


matze - Mi 01.01.03 19:58

was ist denn das für ein text, in dem die IPs vorkommen ?? ist das ein HTML quelltext, denn dann kann man den z.b. sehr einfach nach hyperlinks durchsuchen !


tmkb - Mi 01.01.03 20:52

nein, es ist mehr eine Logdatei in dem Format:



Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
Command Beginning
127.0.0.1 Listening on Port 21
127.0.0.6 Listening on Port 21
127.0.0.12 Listening on Port 21
Command End

Command Beginning
127.0.0.45 Listening on Port 21
127.0.0.68 Listening on Port 21
127.0.0.2 Listening on Port 21
127.0.0.88 Listening on Port 21
Command End

usw.


Sledge_Hammer - Mi 01.01.03 22:05

Moin
Also ich weiß nicht ob das nun das Beste ist was man machen kann, aber ich würde über prüfen, ob das erste Zeichen in der Zeile eine Zahl ist und dann würde ich alles in einem String speichern bis das erste Leerzeichen kommt, also die IP zuende ist.


kampfkoloss23 - Mi 01.01.03 22:10

ist doch ganz einfach, zwar ein bißchen Arbeit. Mach doch ne Einfache if Abfrage. En schnelleren Weg weiß ich leider auch nicht. Schau dir die Stellen einzeln an und mach halt immer ne if Abfrag.

charakeristisch für die Ip ist z.B, dass drei Punkte max. 3 Stellen jeweils auseinander sind also:

Jedes zeichen einzeln auslesen mit copy(memo1.text,f,g);

Falls '.', dann überprüfen, ob noch 2 Punkte da, wenn ja, dann Teil kopieren von Leerstelle davor bis dahinter ist zwar en bißchen Arbeit, aber die genauen Befehle für das auslesen z.B copy findest du in der Delphi Hilfe


Delete - Mi 01.01.03 22:47


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
procedure TForm1.Button1Click(Sender: TObject);
var
  i : Integer;
  s : String;
  iZeichen : Integer;
begin
  for i := 0 to Memo1.Lines.Count-1 do
  begin
    s := Memo1.Lines.Strings[i];
    if s = '' then
      continue;
    ShowMessage(s);
    iZeichen := StrToIntDef(s[1], -1);
    if iZeichen = -1 then
      continue;
    if iZeichen in [0..9] then
      s := copy(s, 0, pos(' ', s));
    ListBox1.Items.Add(s);
  end;
end;


tmkb - Do 02.01.03 01:44

danke, klappt!