Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Suche nach Teilstring in einem Stringgrid (https://www.delphipraxis.net/167599-suche-nach-teilstring-einem-stringgrid.html)

Schüler 8. Apr 2012 10:56


Suche nach Teilstring in einem Stringgrid
 
Guten Tag liebe Delphianer,
ich hab mal wieder ein 'Problem'! Ich hab ein Stringgrid und möchte diesesn durchsuchen, das 'Suchwort' ergibt sich aus einem Editfenster (Ich hab unnötigerweise aber dennoch eine Variable dafür eingeführt!), mein Problem besteht vor allem darin, dass ich auch nach Teilstrings suchen möchte und anschließend soll die gesamte Zeile in der das 'Suchwort' gefunden wurde markiert werden.
Wie ich nach dem gesamten 'Suchwort' weiß ich:
Delphi-Quellcode:
------------------------------------------------------------------------
procedure TFrKundenliste.cmdSucheClick(Sender: TObject);
Var i,k : Integer;
    Suchbegriff : String;
begin
   for i:=0 to Kundenliste.colcount-1 do
   for k:=0 to Kundenliste.rowcount-1 do
   if Kundenliste.Cells[k,i]=Suchbegriff then
   begin
   // Zeile markieren
   end;
end;
------------------------------------------------------------------------
aber mit dem Rest komm ich nicht weiter, da z.B. 'Pos' nur einen Integerwert ausgibt!
Ideen:?: Danke:!:

mkinzler 8. Apr 2012 11:02

AW: Suche nach Teilstring in einem Stringgrid
 
Pos() liefert dir die Position des Suchbegriffs innerhalb des zu durchsuchenden Strings.

Schüler 8. Apr 2012 12:01

AW: Suche nach Teilstring in einem Stringgrid
 
Naja, stimmt schon, nur es geht darum das in einer Zelle des Stringgrids mehrere Wörter (Durch Komma getrennt) stehen und der Zelleninhalt ja als EIN String zählt und deshalb nicht mit dem Suchwort übereinstimmt. Anschließend soll ja zu dieser Zeile gesprungen werden, ich weiß nicht ob mir Pos da weiterhilft!?

DeddyH 8. Apr 2012 12:02

AW: Suche nach Teilstring in einem Stringgrid
 
Und eben deshalb sollst Du mit Pos() ermitteln, ob der Teilstring enthalten ist.

Aphton 8. Apr 2012 12:04

AW: Suche nach Teilstring in einem Stringgrid
 
String: "Der,Die,Das"
Suchstring: "Die"
Pos(Suchstring, String) = 5

Suchstring: "Was"
Pos(Suchstring, String) = 0 oder -1

DeddyH 8. Apr 2012 12:07

AW: Suche nach Teilstring in einem Stringgrid
 
Vielleicht ist es mit Delphi-Referenz durchsuchenAnsiContainsText bzw. Delphi-Referenz durchsuchenAnsiContainsStr einfacher.

haentschman 8. Apr 2012 12:45

AW: Suche nach Teilstring in einem Stringgrid
 
Delphi-Quellcode:
procedure TFrKundenliste.cmdSucheClick(Sender: TObject);
Var i,k : Integer;
    Suchbegriff : String;
begin
   for i:=0 to Kundenliste.colcount-1 do
   for k:=0 to Kundenliste.rowcount-1 do
   if Kundenliste.Cells[k,i]=Suchbegriff then
   begin
   // Zeile markieren
   end;
end;
...und wo definierst du den Suchbegriff ? :gruebel:

Schüler 8. Apr 2012 21:58

AW: Suche nach Teilstring in einem Stringgrid
 
Du hast Recht, ich hab vergessen 'Suchbegriff' zu definieren, es ist mir aber nicht aufgefallen, denn wenn ich etwas ins Edit eingebe, dann sagt er mir mit ShowMessage sogar ob dieser String vorhanden ist! Komisch!:gruebel:
Noch komischer ist, dass ich nachdem ich nun 'Suchbegriff' definiert hab keine korrekte Meldung über: String vorhanden(Ja/Nein), erhalte!

silver-moon-2000 8. Apr 2012 22:35

AW: Suche nach Teilstring in einem Stringgrid
 
Zitat:

Zitat von Schüler (Beitrag 1160796)
Du hast Recht, ich hab vergessen 'Suchbegriff' zu definieren, es ist mir aber nicht aufgefallen, denn wenn ich etwas ins Edit eingebe, dann sagt er mir mit ShowMessage sogar ob dieser String vorhanden ist! Komisch!:gruebel:
Noch komischer ist, dass ich nachdem ich nun 'Suchbegriff' definiert hab keine korrekte Meldung über: String vorhanden(Ja/Nein), erhalte!

Wir könnten jetzt versuchen, per VPN o.Ä. auf Deinen Computer zuzugreifen und eine Ferndiagnose durchzuführen, oder,
das einfachere, Du zeigst uns nochmal, was Du bisher geschrieben hast, denn so könnten wir höchstens raten, woran es liegt.

Bummi 8. Apr 2012 23:02

AW: Suche nach Teilstring in einem Stringgrid
 
Delphi-Quellcode:

Function FindInGrid(G:TStringGrid;var StartPoint:TPoint;Const Search:String;Next:Boolean):Boolean;
var
 R,C:Integer;
begin
  Result := False;
  for r := 0 to G.RowCount - 1 do
    for C := 0 to G.ColCount - 1 do
      begin
         IF Pos(Search,G.Cells[C,R]) >0 then
          if (not next) or ((r*G.ColCount + C) > ( StartPoint.y * G.ColCount + StartPoint.x )) then
              begin
                Result := True;
                StartPoint.y := r;
                StartPoint.x := c;
                EXIT;
              end;
      end;

end;
procedure TForm2.Button1Click(Sender: TObject);
var
 p:Tpoint;
 Next:Boolean;
begin
  p.X := 0;
  p.Y := 0;
  Next := False;
  while FindInGrid(StringGrid1,p,'Hallo',Next) do
    begin
      Next := True;
      Showmessage(StringGrid1.Cells[p.X,p.y] + Format(' Col: %d, Row: %d', [p.X,p.y]))
    end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:39 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