Delphi-PRAXiS
Seite 2 von 3     12 3      

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)

Furtbichler 18. Feb 2012 18:33

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

Zitat von PhilmacFLy (Beitrag 1151709)
nein wieso du gibst zu dem Code noch ein array of char mit wo das wort drin steht

Na ja, und wenn das Wort 4 Zeichen lang ist? Oder nur 2?

Sir Rufo 18. Feb 2012 20:29

AW: Suche bestimmten Wert in Memo und zeige mir den neben stehenden Wert an im Edit f
 
Die Funktionen die du dafür benötigst, sind Delphi-Referenz durchsuchenPos und Delphi-Referenz durchsuchenCopy

klaus9 18. Feb 2012 20:46

AW: Suche bestimmten Wert in Memo und zeige mir den neben stehenden Wert an im Edit f
 
Hi habe jetzt folgendes hinbekommen..

Delphi-Quellcode:

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;
Das funktioniert schonmal, er sucht nach dem Wort "test" und nimmt dann den wert zwischen GesLänge(A) und GesLänge/(B)

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..

PhilmacFLy 18. Feb 2012 21:03

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

Zitat von Furtbichler (Beitrag 1151756)
Zitat:

Zitat von PhilmacFLy (Beitrag 1151709)
nein wieso du gibst zu dem Code noch ein array of char mit wo das wort drin steht

Na ja, und wenn das Wort 4 Zeichen lang ist? Oder nur 2?

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;

klaus9 18. Feb 2012 21:40

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 ?

Furtbichler 18. Feb 2012 21:55

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?

Sir Rufo 18. Feb 2012 22:03

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

Zitat von Furtbichler (Beitrag 1151790)
@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?

Wer macht denn so was ...?

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:

Popov 18. Feb 2012 22:17

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

Zitat von klaus9 (Beitrag 1151774)
Hi habe jetzt folgendes hinbekommen..

Weiter oben wurde zwar "Text" erwähnt, aber Text ist nur ein langer String. Man kann zwar auch hier mit gewissen Aufwand die vorherige Zeile finden, aber warum nicht gleich mit Lines[x] arbeiten?

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;

Popov 18. Feb 2012 22:22

AW: Suche bestimmten Wert in Memo und zeige mir den neben stehenden Wert an im Edit f
 
[QUOTE=Sir Rufo;1151793]
Zitat:

Zitat von Furtbichler (Beitrag 1151790)
Echte Kerle programmieren alles selber ...

Ich bin ganz ordentlich Delphi 3 geschädigt, da ich mehr oder weniger damit aus gegebenem Anlass arbeiten sollte. Deshalb bin ich ein Purist. Und da Delphi 3 so was wie PosEx oder ReplaceStr nicht kennt und ich es nie geschafft habe eine ordentliche Unit mit den Erweiterungen mir anzulegen, verzichte ich auch heute noch auf die Funktionen und proge es alleine.

klaus9 18. Feb 2012 22:29

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


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:57 Uhr.
Seite 2 von 3     12 3      

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