Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Memo auslesen und Text vergleichen mit Edit (https://www.delphipraxis.net/146637-memo-auslesen-und-text-vergleichen-mit-edit.html)

DaveRidge 24. Jan 2010 09:24


Memo auslesen und Text vergleichen mit Edit
 
Meine Frage:

Inhalt der Memo1.lines:
Zeile1 : wec.de
Zeile2 : gmy.de
Zeile3 : kla.de

Text von Edit1:
Text : http://wec.de/login.html

Jede Zeile von Memo1 muss ausgelesen werden und mit Edit1.text verglichen werden. Wenn der text irgendwo gleich ist, muss z.b. Edit1.clear kommen.
Wie mache ich das am besten?

MfG Dave

fkerber 24. Jan 2010 09:41

Re: Memo auslesen und Text vergleichen mit Edit
 
Hi!

Du könntest mit einer For-Schleife durch Memo.Lines gehen und damit zeilenweise vergleichen.


Grüße, Frederic

patti 24. Jan 2010 09:49

Re: Memo auslesen und Text vergleichen mit Edit
 
Ein Stichwort, welches dir beim Vergleichen helfen könnte, ist Delphi-Referenz durchsuchenPos. Als Rückgabewert bekommst du eine Integer, wenn die Zahl > 0 ist, dann ist der angegebene SubString im String vorhanden.

mfg

DaveRidge 24. Jan 2010 09:54

Re: Memo auslesen und Text vergleichen mit Edit
 
Zitat:

Zitat von fkerber
Hi!

Du könntest mit einer For-Schleife durch Memo.Lines gehen und damit zeilenweise vergleichen.


Grüße, Frederic

Das hab ich mir auch schon überlegt, nur wenn bei Edit1.text z.b. http://www. steht, erkennt er das nicht. Es müssen irgendwie gehen, das er jeden Buchstabe überprüft und wenn eine reihenfolge passt, soll er z.b. Edit1.clear ausführen.

MfG Dave

fkerber 24. Jan 2010 10:02

Re: Memo auslesen und Text vergleichen mit Edit
 
Hi!

Also er soll das Edit leeren, wenn Teile seines Inhalts im Memo vorkommen?
Dann wäre das angesprochene Delphi-Referenz durchsuchenpos das Richtige für dich.


Grüße, Frederic

patti 24. Jan 2010 10:07

Re: Memo auslesen und Text vergleichen mit Edit
 
Ich verstehe das Kriterium, wann der Vergleich "true" liefern soll, ehrlich gesagt noch nicht ganz. Soll es so sein, wie in deinem ersten Post, wo überprüft werden soll, ob Edit1.Text eine gesamte Zeile des Memos enthält? Oder reicht es, wenn im Edit und in einer Zeile des Memos eine (beliebig lange) Sequenz an Buchstaben gleich ist? :gruebel:

Dein Beispiel aus Post #4 kann ich nicht ganz nachvollziehen, da der von dir gepostete Beispiel-Inhalt des Edits ja auch in keiner Zeile des Memos vorkommt :gruebel: ...

fkerber 24. Jan 2010 10:13

Re: Memo auslesen und Text vergleichen mit Edit
 
Hi!

Ich hatte das so verstanden, dass das im Edit nicht mehr erkannt wird, wenn zusätzlich das "http://www." davor steht.


Grüße, Frederic

DaveRidge 24. Jan 2010 10:40

Re: Memo auslesen und Text vergleichen mit Edit
 
Zitat:

Zitat von fkerber
Hi!

Ich hatte das so verstanden, dass das im Edit nicht mehr erkannt wird, wenn zusätzlich das "http://www." davor steht.


Grüße, Frederic

genau so meine ich das. Wie kann ich das umsetzten?

MfG Dave

Ps.: Über POS hab ich das noch nicht gemacht, aber ich denke das es nicht so funktioniert wie ich mir das denke

fkerber 24. Jan 2010 10:51

Re: Memo auslesen und Text vergleichen mit Edit
 
Hi!

Doch, genau mit Pos sollte das funktionieren - hast du dir mal die Funktion angeschaut, was sie macht?


Grüße, Frederic

mkinzler 24. Jan 2010 11:33

Re: Memo auslesen und Text vergleichen mit Edit
 
Sind die Einträge der Memos identisch mit dem entsprechendem Inhalt des Edit?

patti 24. Jan 2010 11:40

Re: Memo auslesen und Text vergleichen mit Edit
 
Ah, ok. Dann hatte ich das anfangs doch richtig verstanden, und mich nur durch die (etwas seltsame) Formulierung in Post #4 durcheinanderbringen lassen. Wenn also im Edit steht:

Code:
http://www.xyz.de/
und im Memo

Code:
abc.de
def.de
xyz.de
dann soll der Vergleich "true" liefern, und zwar bei Zeile 3 (also mit dem Index 2, da die Nummerierung ja bei 0 beginnt). Gehe einfach in einer Schleife jede Zeile deines Memos durch, z.B. so:

Delphi-Quellcode:
for i := 0 to Memo1.Lines.Count -1 do
begin
  zeile := Memo1.Lines[i];
  //
  // Vergleich...
end;
Den Vergleich kannst du mit Pos machen. Schau dir die Funktion einfach mal in der Hilfe oder in entsprechenden Threads der DP an. Evtl. kannst du die Eingaben vor dem Vergleich alle noch mit UpperCase() in Großbuchstaben umwandeln, damit die Groß-/Kleinschreibung vernachlässigt wird.

mfg

DaveRidge 24. Jan 2010 12:03

Re: Memo auslesen und Text vergleichen mit Edit
 
Dank Eurer Hilfe hab ichs geschafft. Erstmal ein Herzliches Danke schön an alle die mit geholfen haben.

Ich habs jetzt so gemacht:

Delphi-Quellcode:
procedure TForm1.MozillaBrowser1BeforeNavigate2(Sender: TObject;
  const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
  Headers: OleVariant; var Cancel: WordBool);
var zeichen, counter, h: Longint;
begin
zeichen:=Form6.Memo1.Lines.Count;
counter:=0;
For h:=0 to zeichen do
 if h<zeichen then
   begin
    if pos(Form6.Memo1.Lines[counter],Form1.Edit8.Text)=0 then begin
    Form1.StatusBar1.Panels[1].Text:=('Webseite wurde geprüft!');
    end else begin
    showmessage('Diese Webseite wurde gesperrt!!!');
    Form1.Edit8.Text:=(' ');
    Form1.MozillaBrowser1.Navigate('http://google.de');
   end;
 counter:=counter+1;
 end;

end;


Falls Euch an den Code noch was auffällt, bzw. besser machen könnte, schreibts einfach.

MfG Dave

Vielen Danke an alle.

Luckie 24. Jan 2010 12:08

Re: Memo auslesen und Text vergleichen mit Edit
 
Warum die if-Abfrage?
Delphi-Quellcode:
if h<zeichen then
Zieh doch einfach eins bei der for-Schleife ab:
Delphi-Quellcode:
For h:=0 to zeichen-1 do

DaveRidge 24. Jan 2010 12:15

Re: Memo auslesen und Text vergleichen mit Edit
 
Zitat:

Zitat von Luckie
Warum die if-Abfrage?
...
Zieh doch einfach eins bei der for-Schleife ab:
...

Stimmt, ich machs immer Komplizierter als es ist :-)

Danke

MfG dave

DaveRidge 24. Jan 2010 12:32

Re: Memo auslesen und Text vergleichen mit Edit
 
Zitat:

... kannst du die Eingaben vor dem Vergleich alle noch mit UpperCase() in Großbuchstaben umwandeln, damit die Groß-/Kleinschreibung vernachlässigt wird.

mfg

Danke patti
Habs mit UpperCase() gemacht. geht super :-)

Delphi-Quellcode:
...
begin
    if pos(UpperCase(Form6.Memo1.Lines[counter]),UpperCase(Form1.Edit8.Text))=0 then begin
    Form1.StatusBar1.Panels[1].Text:=('Webseite wurde geprüft!');
...
MfG Dave

patti 24. Jan 2010 13:49

Re: Memo auslesen und Text vergleichen mit Edit
 
Hier noch einpaar Verbesserungsvorschläge zu deinem Quelltext:

Delphi-Quellcode:
procedure TForm1.MozillaBrowser1BeforeNavigate2(Sender: TObject;
  const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
  Headers: OleVariant; var Cancel: WordBool);
var zeichen, h: Longint; // "counter" brauchst du nicht
begin
   //--
   zeichen := Form6.Memo1.Lines.Count;
   //
   for h := 0 to zeichen -1 do
   begin // begin - end nicht unbedingt noetig, aber sinnvoll
     if pos(Uppercase(Form6.Memo1.Lines[h]),Uppercase(Form1.Edit8.Text)) = 0 then
       Form1.StatusBar1.Panels[1].Text := ('Webseite wurde geprüft!')
     else
     begin
       showmessage('Diese Webseite wurde gesperrt!!!');
       Form1.Edit8.Text := (' ');
       Form1.MozillaBrowser1.Navigate('http://google.de');
     end;
   end;
end;
So ist der Quelltext dank Einrückungen besser lesbar. Außerdem kannst du dir die Variable "counter" auch schenken, denn die entspricht ja der Variable "h". Bei der if-Abfrage hab ich den begin-end-Block rausgenommen, brauchst du ja nicht unbedingt, dafür hab ich einen bei der Schleife eingebaut. Bis jetzt ist das nicht unbedingt nötig, aber solltest du später mal eine Anweisung nach der if-Abfrage aber innerhalb der Schleife einbauen wollen und dann das begin-end vergessen, dann kann es dir passieren, dass du ewig nach dem Fehler suchst und der nur wegen dem fehlenden begin-end auftaucht.

mfg

DeddyH 25. Jan 2010 10:37

Re: Memo auslesen und Text vergleichen mit Edit
 
Da mittlerweile auch Umlaute in URLs erlaubt sind, würde ich statt Pos() und Uppercase() vielleicht eher Delphi-Referenz durchsuchenStrUtils.AnsiContainsText verwenden.

Dave729 25. Jan 2010 21:30

Re: Memo auslesen und Text vergleichen mit Edit
 
Hi Patti. Counter habsch rausgenommen. Da war noch was anderes in Planung, aber da Uppcase die zweite Sache auch gleich noch gelöst hat, berauch ichs net mehr :-)

Hi DeddyH.

Jo, eigentlich haste recht, aber ich hab in meinem Prog das Mozilla 1.7 verwendet, da gehen keine Umlaute.


MfG dave

Ps.: Kennt einer eine Delphi Komponente wo ich über RTSP auf meine Ip Kamera connecten kann?

mkinzler 25. Jan 2010 21:33

Re: Memo auslesen und Text vergleichen mit Edit
 
Zitat:

Ps.: Kennt einer eine Delphi Komponente wo ich über RTSP auf meine Ip Kamera connecten kann?
Diese Frage hat m.E. einen eigenen Thread verdient :zwinker:

Dave729 25. Jan 2010 22:19

Re: Memo auslesen und Text vergleichen mit Edit
 
Zitat:

Zitat von mkinzler
Zitat:

Ps.: Kennt einer eine Delphi Komponente wo ich über RTSP auf meine Ip Kamera connecten kann?
Diese Frage hat m.E. einen eigenen Thread verdient :zwinker:

Ich weiss :-) , srry

MfG Dave


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:20 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