AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Suche nach Teilstring in einem Stringgrid

Ein Thema von Schüler · begonnen am 8. Apr 2012 · letzter Beitrag vom 9. Apr 2012
Antwort Antwort
Schüler

Registriert seit: 20. Mär 2012
12 Beiträge
 
#1

Suche nach Teilstring in einem Stringgrid

  Alt 8. Apr 2012, 11:56
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

Geändert von mkinzler ( 8. Apr 2012 um 12:00 Uhr) Grund: Delphi-Tag eingefügt
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.830 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Suche nach Teilstring in einem Stringgrid

  Alt 8. Apr 2012, 12:02
Pos() liefert dir die Position des Suchbegriffs innerhalb des zu durchsuchenden Strings.
Markus Kinzler
  Mit Zitat antworten Zitat
Schüler

Registriert seit: 20. Mär 2012
12 Beiträge
 
#3

AW: Suche nach Teilstring in einem Stringgrid

  Alt 8. Apr 2012, 13:01
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!?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.455 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Suche nach Teilstring in einem Stringgrid

  Alt 8. Apr 2012, 13:02
Und eben deshalb sollst Du mit Pos() ermitteln, ob der Teilstring enthalten ist.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#5

AW: Suche nach Teilstring in einem Stringgrid

  Alt 8. Apr 2012, 13:04
String: "Der,Die,Das"
Suchstring: "Die"
Pos(Suchstring, String) = 5

Suchstring: "Was"
Pos(Suchstring, String) = 0 oder -1
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.455 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Suche nach Teilstring in einem Stringgrid

  Alt 8. Apr 2012, 13:07
Vielleicht ist es mit Delphi-Referenz durchsuchenAnsiContainsText bzw. Delphi-Referenz durchsuchenAnsiContainsStr einfacher.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman
Online

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.082 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Suche nach Teilstring in einem Stringgrid

  Alt 8. Apr 2012, 13:45
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 ?
  Mit Zitat antworten Zitat
Schüler

Registriert seit: 20. Mär 2012
12 Beiträge
 
#8

AW: Suche nach Teilstring in einem Stringgrid

  Alt 8. Apr 2012, 22:58
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!
Noch komischer ist, dass ich nachdem ich nun 'Suchbegriff' definiert hab keine korrekte Meldung über: String vorhanden(Ja/Nein), erhalte!

Geändert von Schüler ( 8. Apr 2012 um 23:03 Uhr)
  Mit Zitat antworten Zitat
silver-moon-2000

Registriert seit: 18. Feb 2007
Ort: Schweinfurt
170 Beiträge
 
Delphi XE Professional
 
#9

AW: Suche nach Teilstring in einem Stringgrid

  Alt 8. Apr 2012, 23:35
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!
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.
Tobias
Bitte nicht hauen , ich weiß es nicht besser
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#10

AW: Suche nach Teilstring in einem Stringgrid

  Alt 9. Apr 2012, 00:02
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;
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 07:55 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf