Entwickler-Ecke

Sonstiges (Delphi) - bestimmte Zeile im Memo auslesen


tmkb - So 23.06.02 01:27
Titel: bestimmte Zeile im Memo auslesen
Hallo,

Kann mir jemand helfen? Und zwar will ich es so machen, ich habe ein Memo feld indem ein text steht. Nun soll dieses Memo Feld per Button druck nach einem bestimmten Wort durchsucht werden, und in label1 soll dann reingeschrieben werden, in welcher Zeile dieses Wort vorkommt. Kann mir da jemand n kleinen Tip geben? Wäre echt dankbar, cya
tmkb


Tino - So 23.06.02 01:58

Hallo,

da Du diese Frage in die Sparte Sonstiges und nicht in die Sparte Komponenten gepostet hast gehe ich davon aus das Du mit den o. g. Komponenten keine Problem hast sondern lediglich das suchen:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
Var
  Idx: Integer;
Begin
  For Idx := 0 To Memo1.Items.Count -1 Do
    If Pos (Search, Memo1.Items [Idx]) > 0 Then
      Begin
        Label1.Caption := IntToStr (Idx);
        Exit;
      End;
End;

Kommst Du mit dem Code zurecht? Wenn nicht dann sag bescheid :-D

Gruß


Steffer - Mo 24.06.02 12:35
Titel: Nachtrag
Sollte wohl

If Pos (Search, Memo1.Items [Idx]) > 0 Then ...

heissen. Ansonsten wird bei einer Suche nach einer Ziffer der erste Wert übergangen


Tino - Mo 24.06.02 12:51

Danke für den Hinweis! Natürlich muss der Code so aussehen. Hab ich oben verbessert.

TINO


tmkb - Mi 26.06.02 00:19

danke, klappt!
wobei ich den code nochn bissel abändern musste, ansonsten hat er ihn nich angenommen:

Quelltext
1:
2:
3:
4:
5:
6:
  For Idx := 0 To Memo1.Lines.Count -1 Do
    If Pos ('Search', Memo1.Lines [Idx]) > 0 Then
      Begin
        Label1.Caption := IntToStr (Idx);
        Exit;
      End;
aber funzt jezz, thx!

Code-Tags hinzugefügt. Tino


tmkb - Mi 26.06.02 00:33

arg, da komm ich gleich zur nächsten Frage...Mit folgendem Code lese ich ja eine bestimmte Zeile im memo aus:

Quelltext
1:
label1.caption:=memo1.lines[3];                    

in dem Fall liest er zeile 3 aus..wie kann ich das was in der eckigen Klammer steht, aus einem anderen label laden lassen?
also zB

Quelltext
1:
label1.caption:=memo1.lines[label2.caption];                    

..dieser code funzt halt nicht...
wäre cool wenn mir jemand sagen könnte, wie ich den code zum laufen kriegen würde, thx!

Code-Tags hinzugefügt. Tino


Arakis - Mi 26.06.02 01:14

Hi,
schreib einfach das hier:

Quelltext
1:
label1.caption:=memo1.lines[StrToInt(label2.caption)];                    

Bis dann
user defined image


Tino - Mi 26.06.02 09:08

tmkb hat folgendes geschrieben:
in dem Fall liest er zeile 3 aus..
Das ist nicht richtig! Die erste Zeile bekommst du mit der 0, die zweite mit der 1, die dritte mit der 2, usw. Es wird immer bei 0 angefangen zu zählen!

Gruß


tmkb - Mi 26.06.02 22:22

@Tino: du hast natürlich recht...das wusste ich eigentlich auch, aber ich wollt das nich weiter betonen weils in meinem problem eigentlich irelevant war. Thx, hast mir mal wieder geholfen!
Jezz hab ich nur noch ein Prob das ich beseitigen muss, bis mein Proggy fertich ist, hoffentlich kannst du mir nochmal helfen...

Du hast mir ja ein paar posts weiter oben folgenden Code gegeben:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
Var 
  Idx: Integer; 
Begin 
  For Idx := 0 To Memo1.Lines.Count -1 Do 
    If Pos ('wort1', Memo1.Lines [Idx]) > 0 Then 
      Begin 
        Label1.Caption := IntToStr (Idx); 
        Exit; 
      End; 
End;

jezz hab ich das Problem, dass ich das mit 2 Wörtern machen will! in dem Beispielcode wird ja das wort "wort1" gesucht und die zeile in der es ist, in label1.caption geschrieben. Was ist aber, wenn ich zur selben Zeit (in der selben prozedur) auch noch das Wort "wort2" suchen will, und dessen Zeile in label2.caption schreiben will? Habe schon alles probiert, nichts klappt, er sucht immer nur nach dem ersten Wort! Wäre cool wenn du mir noch ein letztes mal helfen könntest, bin kurz vor meinem Ziel :-) ! thx, Tmkb

Code-Tags hinzugefügt. Tino


Alfons-G - Mi 26.06.02 23:23

Das geht mit ein wenig Nachdenken gang einfach:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
Var 
  Idx: Integer; 
  First, Second: Boolean;
Begin
  First := false;
  Second := false; 
  For Idx := 0 To Memo1.Lines.Count -1 Do
    begin 
    If Pos ('wort1', Memo1.Lines [Idx]) > 0 Then 
      Begin 
      Label1.Caption := IntToStr (Idx); 
      First := true;
    End;begin 
    If Pos ('wort2', Memo1.Lines [Idx]) > 0 Then 
      Begin 
      Label2.Caption := IntToStr (Idx); 
      Second := true;
    End;
    If First And Second Then
      Exit; 
  End; 
End;
PS:
Wie Du sicher siehst, macht ein [ code ]-Tag das Ganze viel lesbarer :wink:

:idea: