Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Memo Komponente Wörter rausfiltern (https://www.delphipraxis.net/106161-memo-komponente-woerter-rausfiltern.html)

jkstar 6. Jan 2008 13:21


Memo Komponente Wörter rausfiltern
 
Hi!
Ich bin neu hier und habe ein Problem ich hoffe ihr könnt helfen.
Ich hab über den Webbrowser den Quelltext in eine Memo datei gespeichert.
Jetzt

zb:
Delphi-Quellcode:
<td width="70%" class="class2" style="FONT-FAMILY: Verdana; FONT-SIZE: 11px; BACKGROUND-COLOR: #ffffff; border:solid 1px #999999; border-top:none;"><span style="margin-left: 3px;">
                          <a href=view.php?ad=21702 target=_blank>New!
Jetzt möchte ich durch einen Button filtern .Die Nummer hinter view.php?ad= also in diesem Falle 21702 in ein 2tes Memofeld speichern.
Wie erreiche ich ,dass ich die Nummer dahinter speichern kann?
Meine Überlegung war wie immer mit einer Zählschleife das zu machen bitte helft mir , Danke.

STS301 6. Jan 2008 13:23

Re: Memo Komponente Wörter rausfiltern
 
.....

Blackheart 6. Jan 2008 13:27

Re: Memo Komponente Wörter rausfiltern
 
Pos, Copy

jkstar 6. Jan 2008 13:28

Re: Memo Komponente Wörter rausfiltern
 
Ich hab den Quelltext aus der Twebbrowser Komponente von Delphi in ein Delphi Memo gespeichert und jetzt möchte ich die Memodatei filtern.
Ich benutze Delphi 7.

DeddyH 6. Jan 2008 13:31

Re: Memo Komponente Wörter rausfiltern
 
Hallo, willkommen in der DP :dp:
Wenn der String immer nur einmal vorkommt, sollte das im Prinzip recht einfach sein:
Zunächst die Position des eindeutigen Strings innerhalb des Memos ermitteln
Delphi-Quellcode:
iPos := Pos(Memo.Text,'view.php?ad=');
Wird dieser String gefunden, dahinter solange Zeichen einlesen, bis ein Leerzeichen kommt.
Delphi-Quellcode:
SuchString := '';
SuchPos := iPos + Length('view.php?ad=');
while (SuchPos < Length(Memo.Text) and (Memo.Text[SuchPos] <> #32) do
  begin
    SuchString := SuchString + Memo.Text[SuchPos];
    inc(SuchPos);
  end;
Getippt und nicht getestet.

jkstar 6. Jan 2008 13:40

Re: Memo Komponente Wörter rausfiltern
 
Danke für die schnelle Antwort,

view.php?ad= kommt öfters vor.
Ich hab grade die Methode getestet
Ich weiss nicht ob das mit der Deklaration stimmt :
Delphi-Quellcode:
var ipos,suchpos:integer;suchstring:string;
Ich bekomme den Fehler
Delphi-Quellcode:
[Fehler] m_test.pas(74): Operator ist auf diesen Operandentyp nicht anwendbar
[Fehler] m_test.pas(74): Operator ist auf diesen Operandentyp nicht anwendbar

1234588 6. Jan 2008 13:48

Re: Memo Komponente Wörter rausfiltern
 
zeig uns mal bitte zeile 74

jkstar 6. Jan 2008 13:49

Re: Memo Komponente Wörter rausfiltern
 
Delphi-Quellcode:
while (SuchPos < Length(Memo1.Text) and (Memo1.Text[SuchPos] <> #32) do

DeddyH 6. Jan 2008 13:52

Re: Memo Komponente Wörter rausfiltern
 
Sorry, da fehlt eine Klammer.
Delphi-Quellcode:
while (SuchPos < Length(Memo1.Text)) and (Memo1.Text[SuchPos] <> #32) do

jkstar 6. Jan 2008 13:59

Re: Memo Komponente Wörter rausfiltern
 
Vielen Dank,
es läuft zwar aber wenn ich
Delphi-Quellcode:
memo2.Lines.add(suchstring);
benutze
um dieses in memo2 zu speicher kommt sowas bei rau

Delphi-Quellcode:
t
tM
tMa
tMar
tMarg
tMargi
tMargin
tMargin=
tMargin=0

DeddyH 6. Jan 2008 14:00

Re: Memo Komponente Wörter rausfiltern
 
Zeig doch mal den bisherigen Code.

jkstar 6. Jan 2008 14:03

Re: Memo Komponente Wörter rausfiltern
 
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var ipos,suchpos:integer;suchstring:string;
begin
iPos := Pos(Memo1.Text,'view.php?ad=');
SuchString := '';
SuchPos := iPos + Length('view.php?ad=');
while (SuchPos < Length(Memo1.Text)) and (Memo1.Text[SuchPos] <> #32) do
  begin
    SuchString := SuchString + Memo1.Text[SuchPos];
    inc(SuchPos);
    memo2.Lines.add(suchstring);
  end;




end;

DeddyH 6. Jan 2008 14:12

Re: Memo Komponente Wörter rausfiltern
 
Wenn Du die Zeile innerhalb der Schleife dem Memo hinzufügst, ist das ja auch kein Wunder ;) Außerdem scheint es sich ja nicht um den gewünschten Inhalt zu handeln. Da könntest Du mal einen Blick in die Hilfe zu PosEx werfen.

jkstar 6. Jan 2008 14:16

Re: Memo Komponente Wörter rausfiltern
 
Sorry aber Ich kenne mich noch nicht so gut aus damit , ich wollte nur die nummern iregendwie rausfiltern, ist das so schwer?
Was muss ich machen damit ich die in memo2 reinbekomme?

DeddyH 6. Jan 2008 14:27

Re: Memo Komponente Wörter rausfiltern
 
Also nochmal anders (ich habe hier gerade kein Delphi und kann daher nicht testen):
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
const gesucht = 'view.php?ad=';
var ipos,suchpos:integer;
    suchstring:string;
begin
iPos := Pos(Memo1.Text,gesucht);
SuchString := '';
SuchPos := iPos + Length(gesucht);
while (SuchPos < Length(Memo1.Text)) and (Memo1.Text[SuchPos] <> #32) do
  begin
    SuchString := SuchString + Memo1.Text[SuchPos];
    inc(SuchPos);  
  end;
memo2.Lines.add(suchstring);
end;

jkstar 6. Jan 2008 14:31

Re: Memo Komponente Wörter rausfiltern
 
Ich habs grade getestet
Ich bekomm tMargin=0 in Memo2 aber nicht die Nummer :(

DeddyH 6. Jan 2008 14:33

Re: Memo Komponente Wörter rausfiltern
 
Dann muss der gesuchte String bereits vorher auftauchen.

jkstar 6. Jan 2008 14:37

Re: Memo Komponente Wörter rausfiltern
 
Wie schon gesagt view.php?ad= kommt ja öfters vor , Ich möchte das der den Sourecode durchforstet und die nummer hinter dem = in das Memofeld steckt.
Hab sowas mal vor Jahren gemacht mit
Delphi-Quellcode:
I:=0 to memo1.lines.count-1 do begin j:=0 to length(memo1.lines[i]) do begin
memo1.lines[i][j]
oder sowas .

DeddyH 6. Jan 2008 14:53

Re: Memo Komponente Wörter rausfiltern
 
Sind das immer Zahlen, die Du suchst?

[edit] Falls da so ist, versuch es mal so (hab jetzt auch wieder Delphi zur Verfügung):
Delphi-Quellcode:
uses StrUtils;

procedure TForm1.Button1Click(Sender: TObject);
const davor = 'view.php?ad=';
var iPos: integer;
    SuchStr: string;
begin
  iPos := PosEx(AnsiLowerCase(davor),AnsiLowerCase(Memo1.Text));
  while iPos > 0 do
    begin
      SuchStr := '';
      inc(iPos,Length(davor));
      while Memo1.Text[iPos] in ['0'..'9'] do
        begin
          SuchStr := SuchStr + Memo1.Text[iPos];
          inc(iPos);
        end;
      Memo2.Lines.Add(SuchStr);
      iPos := PosEx(AnsiLowerCase(davor),AnsiLowerCase(Memo1.Text),iPos);
    end;
end;
[/edit]

jkstar 6. Jan 2008 14:59

Re: Memo Komponente Wörter rausfiltern
 
Ja nur die Zahlen dahinter.

DeddyH 6. Jan 2008 15:00

Re: Memo Komponente Wörter rausfiltern
 
Hab meinen vorherigen Beitrag editiert ;)

jkstar 6. Jan 2008 15:04

Re: Memo Komponente Wörter rausfiltern
 
JUHU, FUNKTIONIERT !!
DANKE DU BIST EIN GOTT :-D


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:09 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz