Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Suche bestimmten Wert in Memo und zeige mir den neben stehenden Wert an im Edit feld (https://www.delphipraxis.net/166551-suche-bestimmten-wert-memo-und-zeige-mir-den-neben-stehenden-wert-im-edit-feld.html)

klaus9 17. Feb 2012 21:15

Suche bestimmten Wert in Memo und zeige mir den neben stehenden Wert an im Edit feld
 
Hallo,

ich habe ein Memo Feld, hier möchte ich gerne nach dem Text

z.B. YXZ suchen und den neben stehenden Text anzeigen lassen in einem Edit Feld.

Memo.text

.
bla blub
bla bla
bla YXZ 1234 blub
bla
.


Nun soll im Edit1.text Feld dann angezeigt werden

1234

Wie kann ich dieses hinbekommen ?

Bzw. wie kann ich sagen er soll mir bei einem gefundenem Wert z.B. "YXZ"

den Wert darüber, oder auch darunter oder da neben oder davor anzeigen.

Hat jemand eine Idee ?

Vielen Dank

himitsu 17. Feb 2012 21:38

AW: Suche bestimmten Wert in Memo und zeige mir den neben stehenden Wert an im Edit f
 
Ein Memo kennt .Text oder auch .Lines (wenn man Zeilenweise auswerten will).
Dort kann man mit Pos drine suchen (bei Lines mit einer Schleife über alle Zeilen).
Hat man was mit Delphi-Referenz durchsuchenPos gefunden, dann kann man über Copy und bissl Mathematik sich dort was rauskopieren.

Eventuell mit einem weiteren Pos/PosEx oder einer weiteren Schleife über die Zeichen weitere Stellen suchen (wie z.B. das nächste Leerzeichen) ... zwischen dem gefundenem Wort und dem nächsten gefundenen Zeichen ist dann das gewünschte nächste Wort.

Popov 17. Feb 2012 21:43

AW: Suche bestimmten Wert in Memo und zeige mir den neben stehenden Wert an im Edit f
 
Da gibt es einige Wege, wobei, was verstehst du unter Text darüber?

Am einfachsten wird es sein über for to alle Lines des Memo von Anfang bis Ende durchzugehen und in jeder Lines Zeile mit Pos(Wort, Lines[i]) nach dem Wort suchen. So findest du schon mal die Zeile und Position innerhalb der Zeile. Jetzt mit vier Funktionen das Wort links, rechts, oben oder unten ermitteln.

Edit:
Wobei ich dir noch die Funktion LastDelimiter empfehlen könnte für die Rückwertssuche, d. h. hast du die Position gefunden, alles bis zu der Position kopieren, trimen und dann mit LastDelimiter das letzte Leerzeichen finden. Schon hast du das vorherige Wort.

Furtbichler 18. Feb 2012 07:51

AW: Suche bestimmten Wert in Memo und zeige mir den neben stehenden Wert an im Edit f
 
"Daneben" ist einfach, aber "darüber" bzw. "darunter" nicht trivial, denn was genau über einem Wort ist, ist vom Zeichensatz abhängig. Beispiel
Code:
iii iiii iiii iiii iiii iiii iiii iiii
mmm mmmm mmmm mmmm mmmm mmmm mmmx mmmm
iii iiii iiii iiii iiii iiii iiii iiii
iii iiii iiii iiii iiii iiii iiii iiii
mmm mmmm mmmm mmmm mmmm mmmm mmmx mmmm
iii iiii iiii iiii iiii iiii iiii iiii

klaus9 18. Feb 2012 08:31

AW: Suche bestimmten Wert in Memo und zeige mir den neben stehenden Wert an im Edit f
 
Hi,

vielen Dank, für die Tipps.

Hat jemand vielleicht mal ein beispiel wie ich das über die Positionen ermitteln könnte ? Die variante von Popov klingt gut.

Furtbichler 18. Feb 2012 09:29

AW: Suche bestimmten Wert in Memo und zeige mir den neben stehenden Wert an im Edit f
 
Na, komm. Ein wenig googeln und Eigeninitiative ist doch nicht zuviel verlangt.

PhilmacFLy 18. Feb 2012 10:59

AW: Suche bestimmten Wert in Memo und zeige mir den neben stehenden Wert an im Edit f
 
Man könnte natürlich auch mit ein bisschen Automaten Theorie daran gehen so z.B:

Delphi-Quellcode:
for i:=1 to length(memo1.Text) do
 begin
  if Memo1.Lines.Text[i] = X then
    if Memo1.Lines.Text[i+1] = Y then
      if Memo1.Lines.Text[i+2] = Z then
        begin
          ...
        end;
 end;
dann hast du jedenfalls die Position und kannst dann ja schauen was davor und danach kommt.
Für Variable Text längen müsste man das ganze dann natürlich rekursiv aufbauen

Furtbichler 18. Feb 2012 11:56

AW: Suche bestimmten Wert in Memo und zeige mir den neben stehenden Wert an im Edit f
 
Nunja, dann müsste man den Code für jeden Suchtext umschreiben

PhilmacFLy 18. Feb 2012 12:09

AW: Suche bestimmten Wert in Memo und zeige mir den neben stehenden Wert an im Edit f
 
nein wieso du gibst zu dem Code noch ein array of char mit wo das wort drin steht

klaus9 18. Feb 2012 15:46

AW: Suche bestimmten Wert in Memo und zeige mir den neben stehenden Wert an im Edit f
 
hi,

danke für die infos, also der Code funktioniert schonmal sehr gut

Delphi-Quellcode:
for i:=1 to length(memo1.Text) do
 begin
  if Memo1.Lines.Text[i] = X then
    if Memo1.Lines.Text[i+1] = Y then
      if Memo1.Lines.Text[i+2] = Z then
        begin
          ...
        end;
 end;
Aber wie kann ich jetzt sagen er möchte mir nach dem fund des wortes "XYZ" dann alle zeichen z.B. nach dem Wort kopieren und in Edit1.text einfügen


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:13 Uhr.
Seite 1 von 3  1 23      

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