AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Teilstrings aus String herausfiltern.

Ein Thema von Aurelius · begonnen am 13. Dez 2007 · letzter Beitrag vom 13. Dez 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Aurelius
Aurelius

Registriert seit: 29. Jan 2007
Ort: Erfurt
753 Beiträge
 
Delphi 7 Personal
 
#1

Teilstrings aus String herausfiltern.

  Alt 13. Dez 2007, 07:12
Hi DPler

Ich möchte in meiner Suchfunktion nach Einträgen in einer Listbox suchen. Das soll nat. auch funktionieren wenn in der LSB "Hallo_Welt" steht und ich in der Suchmaske "hallo Welt" schreibe. dafür muss ich ja die einzelnen Teilstrings "Hallo" und "Welt" aus dem Suchfeld rausfiltern und schauen ob das Ganze in der LSb ist (da er ja bei einem reinen vergleich beider Strings ein FALSE ausgeben würde, da "hallo Welt" <> "hallo_Welt").
Mein Problem ist dabei das Herausfiltern der Teilstrings. Ich nutze diesen Code:

Delphi-Quellcode:
 var Suchtext : String;
 u : integer;

 Suchtext := edSuchen.Text;
 u := 0;
 repeat
 begin
  Length(Teilstrings,u+1);
  if Pos(' ',Suchtext) > 0 then
   Teilstrings[u] := AnsiLeftStr(Suchtext,Pos(' ',Suchtext)-1)
  else
   Teilstrings[u] := Suchtext;
   Suchtext := AnsiRightStr(Suchtext,Length(Suchtext) - Pos(' ',Suchtext));
   u := u + 1;
 end
 until Pos(' ',Suchtext) = 0;
Logischerweise findet er aber dabei nicht den letzten Teilstringwenn schon ein Leerzeichen vorkommt, er findet diesen erst wenn nach dem letzten Teilstring ein Leerzeichen kommt. Ich weiß nat. woran das Problem liegt (an der UNTIL-Bedingung), aber mir fällt einfach keine Möglichkeit ein das zu lösen...
Jonas
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.883 Beiträge
 
Delphi 12 Athens
 
#2

Re: Teilstrings aus String herausfiltern.

  Alt 13. Dez 2007, 07:46
Du must erst die einzelnen Gesuchten Wörter erkennen und in eine Liste ablegen.
Dann erst das eine und dann das andere suchen.
Es sei denn du meintest 'Hallo*Welt' oder 'Hallo?Welt'
Für sowas eignest sich Masks.MatchesMask(const Filename, Mask: string): Boolean; ...auch wenn da dateiname steht...
wenn du es ganz komfortabel haben willst dann empfehle ich dir eine
UNIT zu suchen die Reguläre Ausdrücke unterstützt.
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Benutzerbild von Aurelius
Aurelius

Registriert seit: 29. Jan 2007
Ort: Erfurt
753 Beiträge
 
Delphi 7 Personal
 
#3

Re: Teilstrings aus String herausfiltern.

  Alt 13. Dez 2007, 07:53
Sry, aber was hat das mit meiner Frage zu tun? Wie ich das vergleiche ist klar, mir geht es um das herausfiltern der Strings. Damit hab ich ja das Problem mit meinem Code. Deine Antwort wäre wenn ich gar keine Ahnung hätte wie ich das Ganze insgesamt angehen müsste, und das weiß ich ja, es geht mir eben darum die einzelnen Teilstrings rauszufiltern
Jonas
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

Re: Teilstrings aus String herausfiltern.

  Alt 13. Dez 2007, 07:58
Dafür sind die regulären Ausdrücke doch wunderbar geeignet.
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 Reinhardtinho
Reinhardtinho

Registriert seit: 26. Feb 2007
411 Beiträge
 
Delphi 5 Enterprise
 
#5

Re: Teilstrings aus String herausfiltern.

  Alt 13. Dez 2007, 08:03
Hi,

Delphi-Quellcode:
type
  TsArray = Array of String;

function GetSubStrings(AString: String; Delimiter: Char) : TsArray;
var
  i: Integer;
begin
  SetLength(result, 0);

  i := 0;

  while (Pos(Delimiter, aString) <> 0) do
  begin
    SetLength(Result, i+1);
    Result[i] := Copy(aString, 0, Pos(Delimiter, aString) - 1);
    Delete(aString, 1, Pos(Delimiter, aString));
    inc(i);
  end;

  if (Length(aString) <> 0) then
  begin
    SetLength(Result, i+1);
    Result[i] := aString;
  end;
end;
Hiermit suche ich die einzelnen SubStrings in einem Editfeld und übergebe das ganze an ein dynamische Array. Man kann natürlich auch eine Stringliste benutzen. In Delimeter musst du halt dann dein '_' angeben.

MFG
Lorenz
Ich habe viel von meinem Geld für Alkohol, Weiber und schnelle Autos ausgegeben ... Den Rest habe ich einfach verpraßt.

George Best - 22.05.1946 - 25.11.2005 - nordirischer Fußballspieler
  Mit Zitat antworten Zitat
Benutzerbild von Aurelius
Aurelius

Registriert seit: 29. Jan 2007
Ort: Erfurt
753 Beiträge
 
Delphi 7 Personal
 
#6

Re: Teilstrings aus String herausfiltern.

  Alt 13. Dez 2007, 08:25
Das seiht doch nicht schlecht aus.

Ich habe mich auch mal nach den reg. Ausdrücken erkundigt und werde es auch mal damit versuchen. Scheint aber recht kompliziert zu sein...
Jonas
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.883 Beiträge
 
Delphi 12 Athens
 
#7

Re: Teilstrings aus String herausfiltern.

  Alt 13. Dez 2007, 08:32
Mach das! Regexen ist DAS Mittel zur Suche bzw. Filterung.
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Benutzerbild von Aurelius
Aurelius

Registriert seit: 29. Jan 2007
Ort: Erfurt
753 Beiträge
 
Delphi 7 Personal
 
#8

Re: Teilstrings aus String herausfiltern.

  Alt 13. Dez 2007, 08:53
Ich bin da bis jetzt auf Das TPerlRegEx gestoßen. Gibts dafür deutsche tuts?

@Reinhardtinho: Ich hab das mal schnell gemacht aber es funktioniert so nicht. Die "Liste" enthält nur 1 Element...

Delphi-Quellcode:
procedure TForm1.Edit1Change(Sender: TObject);
var Liste : tsarray;
    i, u : integer;
    boola : bool;
begin
  Listbox2.Clear;
  for i := 0 to 3 do
  begin
    Boola := TRUE;
    Liste := GetSubstrings(Listbox1.Items.Strings[i],Char(' '));
    Label1.Caption := InttoStr(High(liste));
    for u := 0 to high(Liste) do
     if not ansicontainstext(Listbox1.Items.Strings[i],Liste[u]) then
      Boola := FALSE;
    if Boola then
      Listbox2.Items.Add(Listbox1.Items.Strings[i])
  end;
end;
Jonas
  Mit Zitat antworten Zitat
Benutzerbild von Reinhardtinho
Reinhardtinho

Registriert seit: 26. Feb 2007
411 Beiträge
 
Delphi 5 Enterprise
 
#9

Re: Teilstrings aus String herausfiltern.

  Alt 13. Dez 2007, 09:08
Stehen in der ListBox1 die Wörter die gesucht werden sollen? Gib mal bitte ein Beispiel.
Ich habe viel von meinem Geld für Alkohol, Weiber und schnelle Autos ausgegeben ... Den Rest habe ich einfach verpraßt.

George Best - 22.05.1946 - 25.11.2005 - nordirischer Fußballspieler
  Mit Zitat antworten Zitat
Benutzerbild von Aurelius
Aurelius

Registriert seit: 29. Jan 2007
Ort: Erfurt
753 Beiträge
 
Delphi 7 Personal
 
#10

Re: Teilstrings aus String herausfiltern.

  Alt 13. Dez 2007, 09:22
In der Listbox1 steht:
Hallo Welt
Hallo_Welt
Hallo
Welt

Komischerweise wird, sobald ich etwas in das Edit-feld reinschreibe, alles in der Listbox2 übernommen
Jonas
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 08:30 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