Entwickler-Ecke

Dateizugriff - pos, auch Teilstrings ausgeben


Nilius - Mo 06.06.11 09:56
Titel: pos, auch Teilstrings ausgeben
Also ich habe noch ein weiteres Problem mit meinem Programm, ich suche in meinem Array of String zB nach einem Namen und möchte diesen Datensatz danach auch ausgeben lassen. Funktioniert auch alles wunderbar, nur leider gibt er mir wenn ich nach "Muster" suchen lasse "Mustermann" nicht aus und ich weiß nicht was ich daran ändern muss damit er mir den auch auswirft.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure TForm2.Selektieren;
var x,d:integer; suchname,:string; gesucht:boolean; kunde:Dat;
begin
  x:=0//Startwert der zu durchsuchenden Einträge aus der Listbox
  d:=list_daten.items.count;  //Anzahl der Einträge in der Listbox
  suchname:=form3.edit_name.text;  //Zu suchendes Wort
  while d>x do //Solange es mehr Einträge gibt als den wo ich grad bin
    begin
      gesucht:=True;  //Da ich nach mehreren Kriterien suche hab ich das hier eingefügt, und jeweils bei den einzelnen Kriterien wird dann schon ausgesiebt.
      //formatieren der Daten, sodass ich ihm sagen kann wodrin er suchen soll. Also eintragen in meinen Record aus meinem Array (Der Array enthält halt einfach alle Daten ausm Record hintereinander gereiht, aus Speichergründen)            
      if form3.check_name.checked=True then //Wenn nach dem Kriterium Name gesucht werden soll
        begin
          If Kunde.Name=suchname then gesucht:=True //Kunde.Name ist ein Sting in meinem Record
            else gesucht:=False;
        end;
     if gesucht=false then begin list_daten.Items.Delete(x); d:=list_daten.Items.Count; end  //Wenn der nich gesucht is, aus Listbox löschen
     else inc(x); //wenn gesucht ist, nächsten Eintrag überprüfen
end;



Hilfe :(


Gausi - Mo 06.06.11 10:01

Du hast die Lösung doch praktisch schon im Titel des Threads drin. :gruebel:

Anstatt hier auf Gleichheit zu überprüfen


Delphi-Quelltext
1:
If Kunde.Name=suchname then                    

solltest du mit Hilfe der Funktion pos überprüfen, ob suchname in Kunde.Name enthalten ist.


Horst_H - Mo 06.06.11 10:01

Hallo,

Probiere mal das:

Delphi-Quelltext
1:
If POS(suchname,Kunde.Name) >0 then gesucht:=True                    


Gruß Horst


Nilius - Mo 06.06.11 10:03

hachja, das Forum hier hilft mir schon durch die reine anwesenheit^^ habs grad beim post nochma durchlesen selbst rausgefunden^^ *kopf-tisch*


hab jetzt einfach


Delphi-Quelltext
1:
2:
If Kunde.Name=suchname then gesucht:=True //Kunde.Name ist ein Sting in meinem Record          
  else gesucht:=False;


geändert in:


Delphi-Quelltext
1:
2:
3:
c:=pos(suchname,Kunde.name);
If c<>0 then gesucht:=True
else gesucht:=false;


ende^^


Tastaro - Mo 06.06.11 10:25


Delphi-Quelltext
1:
gesucht := pos(suchname,Kunde.name) <> 0;                    


Beste Grüße


Gerd Kayser - Mo 06.06.11 12:19

user profile iconNilius hat folgendes geschrieben Zum zitierten Posting springen:


Delphi-Quelltext
1:
if form3.check_name.checked=True then                    

Das ist falsch! Lass einfach das "= true" weg.