AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Suche bestimmten Wert in Memo und zeige mir den neben stehenden Wert an im Edit feld
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von klaus9 · begonnen am 17. Feb 2012 · letzter Beitrag vom 19. Feb 2012
Antwort Antwort
Seite 2 von 3     12 3      
Furtbichler
(Gast)

n/a Beiträge
 
#11

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

  Alt 18. Feb 2012, 19:33
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?
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#12

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

  Alt 18. Feb 2012, 21:29
Die Funktionen die du dafür benötigst, sind Delphi-Referenz durchsuchenPos und Delphi-Referenz durchsuchenCopy
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
klaus9

Registriert seit: 4. Dez 2011
123 Beiträge
 
#13

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

  Alt 18. Feb 2012, 21:46
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..
  Mit Zitat antworten Zitat
Benutzerbild von PhilmacFLy
PhilmacFLy

Registriert seit: 20. Jan 2008
Ort: Nürnberg
340 Beiträge
 
FreePascal / Lazarus
 
#14

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

  Alt 18. Feb 2012, 22:03
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;
Philipp N.
"Programmiern ist wie küssen:
Mann kan darüber reden, mann kann es beschreiben,
aber man weiss erst, was es bedeutet,
wenn man es getan hat"
  Mit Zitat antworten Zitat
klaus9

Registriert seit: 4. Dez 2011
123 Beiträge
 
#15

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

  Alt 18. Feb 2012, 22:40
danke für die funktion, kannst du mir kurz sagen wie ich diese ansteuere ?
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#16

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

  Alt 18. Feb 2012, 22:55
@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?
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#17

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

  Alt 18. Feb 2012, 23:03
@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
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#18

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

  Alt 18. Feb 2012, 23:17
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;

Geändert von Popov (18. Feb 2012 um 23:28 Uhr) Grund: Fehler korrigiert: Count statt Count - 1 geschrieben
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#19

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

  Alt 18. Feb 2012, 23:22
[QUOTE=Sir Rufo;1151793]
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.
  Mit Zitat antworten Zitat
klaus9

Registriert seit: 4. Dez 2011
123 Beiträge
 
#20

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

  Alt 18. Feb 2012, 23:29
vielen Dank das hilft mir schon super weiter ..

dankeschön
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:07 Uhr.
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