![]() |
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 |
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 ![]() 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. |
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. |
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
iii iiii iiii iiii iiii iiii iiii iiii
mmm mmmm mmmm mmmm mmmm mmmm mmmx mmmm iii iiii iiii iiii iiii iiii iiii iiii mmm mmmm mmmm mmmm mmmm mmmm mmmx mmmm iii iiii iiii iiii iiii iiii iiii iiii |
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. |
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.
|
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:
dann hast du jedenfalls die Position und kannst dann ja schauen was davor und danach kommt.
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; Für Variable Text längen müsste man das ganze dann natürlich rekursiv aufbauen |
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
|
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
|
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:
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
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; |
AW: Suche bestimmten Wert in Memo und zeige mir den neben stehenden Wert an im Edit f
Zitat:
|
AW: Suche bestimmten Wert in Memo und zeige mir den neben stehenden Wert an im Edit f
|
AW: Suche bestimmten Wert in Memo und zeige mir den neben stehenden Wert an im Edit f
Hi habe jetzt folgendes hinbekommen..
Delphi-Quellcode:
Das funktioniert schonmal, er sucht nach dem Wort "test" und nimmt dann den wert zwischen GesLänge(A) und GesLänge/(B)procedure TForm1.Button6Click(Sender: TObject); var s, s2: string; Pos1, Pos2, Pos3: Integer; begin s := memo1.Text; Pos1 := Pos('test', s); // erstes Komma Pos2 := PosEx('GesLänge/(A):', s, Pos1+1); // zweites Komma Pos3 := PosEx('GesLänge/(B):', s, Pos2+1); // drittes Komma s2 := Copy(s, Pos2+14, Pos3 - Pos2 -15); // Text zwischen 2. und 3. Komma Edit2.text := (Trim(s2)); // Leerzeichen entfernen und ausgeben end; wie kann ich nun noch über Pos die zeilen / reihen bestimmen ? also z.B. pos1 := Pos('test'), s; Pos2 := PosEx( ?????, s, Pos1+1); // statt ????? z.B. unter gefundenem wort "test" eine reihe darunter. Memo feld aufbau test hallo katze Reihe 1 = test Reihe 2 = hallo katze nun würde ich gerne wissen wie ich auf die reihe zwei per pos komme.. vielen Dank nochmal für die ganzen tipps.. |
AW: Suche bestimmten Wert in Memo und zeige mir den neben stehenden Wert an im Edit f
Zitat:
Delphi-Quellcode:
function textsuch(charrarr: Array of Char; length, count, pos: integer): Integer;
begin if count = length then begin Result := pos - count; exit; end; if Memo1.Lines.Text[pos] = charrarr[count] then Result := textsuch(charrarr, length, count+1, pos+1) else Result := -1; end; |
AW: Suche bestimmten Wert in Memo und zeige mir den neben stehenden Wert an im Edit f
danke für die funktion, kannst du mir kurz sagen wie ich diese ansteuere ?
|
AW: Suche bestimmten Wert in Memo und zeige mir den neben stehenden Wert an im Edit f
@PhilmacFly: Toll. Wieso postest Du eigentlich immer neuen Code, anstatt einfach mal eine allgemeingültige Lösung?
Dein nächster Versuch sollte alle Vorkommnisse in einer Zeile finden. Und verwende garantiert keine vorgefertigten Lösungen, wie z.B. 'PosEx'. Das wäre ja ... naheliegend? |
AW: Suche bestimmten Wert in Memo und zeige mir den neben stehenden Wert an im Edit f
Zitat:
Echte Kerle programmieren alles selber ... ich selber wollte 2 Strings in einer Text-Datei speichern und nun bin ich seit ca. 2.5 Jahren dabei ein eigenes Dateisystem zu schreiben. Sieht gut aus, das Speichern geht, nur mit dem Auslesen hapert es noch :mrgreen: |
AW: Suche bestimmten Wert in Memo und zeige mir den neben stehenden Wert an im Edit f
Zitat:
Aber warum den ganzen Tag darüber reden wie man es machen könne, warum nicht in 10 Minuten es Coden
Delphi-Quellcode:
function WortAnPos(s: String; p: Integer): String;
var i: Integer; begin if Pos(' ', s) < p then begin for i := p downto 1 do if s[i] = ' ' then begin Delete(s, 1, i); Break; end; end; Result := s; if Pos(' ', Result) > 0 then Delete(Result, Pos(' ', Result), maxint); end; function _darunter(list: TStrings; Index, p: Integer): String; var s: String; begin if Index = 0 then Exit; Result := WortAnPos(list[Index - 1], p); end; function _darueber(list: TStrings; Index, p: Integer): String; begin if Index = list.Count - 1 then Exit; Result := WortAnPos(list[Index + 1], p); end; function _links(s: String; p: Integer): String; begin Delete(s, p, Maxint); if LastDelimiter(' ', s) > 0 then Delete(s, LastDelimiter(' ', s), Maxint); if LastDelimiter(' ', s) > 0 then Result := Trim(Copy(s, LastDelimiter(' ', s), Maxint)) else Result := Trim(s); end; function _rechts(s, substr: String; p: Integer): String; begin Delete(s, 1, p + length(substr)); if Pos(' ', s) > 0 then begin Delete(s, 1, Pos(' ', s)); Result := Trim(Copy(s, 1, Pos(' ', s))) end else Result := Trim(s); end; procedure TForm1.Button1Click(Sender: TObject); const gesucht = 'bb'; var i, p: Integer; s: String; begin Memo1.Clear; Memo1.Lines.Add('1111 2222 3333 4444'); Memo1.Lines.Add('aaaa bbbb cccc dddd'); Memo1.Lines.Add('5555 6666 7777 8888'); for i := 0 to Memo1.Lines.Count - 1 do begin s := Memo1.Lines[i]; p := Pos(gesucht, s); if p > 0 then begin ShowMessage('Links: ' + _links(s, p)); ShowMessage('Rechts: ' + _rechts(s, gesucht, p)); ShowMessage('Draunter: ' + _darunter(Memo1.Lines, i, p)); ShowMessage('Draunter: ' + _darueber(Memo1.Lines, i, p)); end; end; end; |
AW: Suche bestimmten Wert in Memo und zeige mir den neben stehenden Wert an im Edit f
[QUOTE=Sir Rufo;1151793]
Zitat:
|
AW: Suche bestimmten Wert in Memo und zeige mir den neben stehenden Wert an im Edit f
vielen Dank :) das hilft mir schon super weiter ..
dankeschön |
AW: Suche bestimmten Wert in Memo und zeige mir den neben stehenden Wert an im Edit f
Man mag es nicht glauben ... TEdit ist am Ende auch nur eine gekapselte Windows-Komponente.
Diese ist mehrzeilig und es gibt gewisse Schnittstellen. Sogar Eine, die man fragen kann, in welcher Zeile sich ein bestimmtes Zeichen befindet. ![]() Dazu gibt es sogar noch Befehle zum Suchen usw. Aber man kann auch einfach, so es wie gleich am Anfang von irgendwem schonmal genannt wurde, jede Zeile einzeln durchsuchen und schon hat man automatisch auch die Zeile, worin man etwas gefunden hatte. :roll: |
AW: Suche bestimmten Wert in Memo und zeige mir den neben stehenden Wert an im Edit f
Zitat:
|
AW: Suche bestimmten Wert in Memo und zeige mir den neben stehenden Wert an im Edit f
Zitat:
Aber dem TE scheint diese Lösung wohl nicht zu gefallen. |
AW: Suche bestimmten Wert in Memo und zeige mir den neben stehenden Wert an im Edit f
Zitat:
|
AW: Suche bestimmten Wert in Memo und zeige mir den neben stehenden Wert an im Edit f
Inzwischen gehen hier fast alle ab, bis auf Klaus9, der den Sourcecode auf seine Frage fast schon ausprogrammiert geliefert bekommt :evil:
GG |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:31 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