Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Strings vergleichen (https://www.delphipraxis.net/137374-strings-vergleichen.html)

youuu 19. Jul 2009 21:11


Strings vergleichen
 
Hi,

ich vergleiche momentan Strings im VST so

Delphi-Quellcode:
Procedure TFormMain.SucheCallback(Sender: TBaseVirtualTree; Node: PVirtualNode; data: Pointer; var Abort: Boolean);
Begin
  Customer:= TCustomerDaten(VstCustomer.GetNodeData(Node)^);
  VstCustomer.IsVisible[Node]:= (EditSearchFast.Text = '') or AnsiStartsText(EditSearchFast.Text, Customer.company_name)>0);
End;
Funktioniert auch super, nur möchte ich das wenn

suchende String: Test
EditSuchfeld: st

Dann trotzdem der Eintrag gefunden wird und nicht nur wenn ich te eingebe.

Matze 19. Jul 2009 21:16

Re: Strings vergleichen
 
Hallo,

ich denke anstelle von AnsiStartsText kannst duDelphi-Referenz durchsuchenPos verwenden. Das Prüft, ob ein Teilstring in einem String enthalten ist.

Grüße, Matze

DeddyH 19. Jul 2009 21:17

Re: Strings vergleichen
 
Oder AnsiContainsText :zwinker:

youuu 19. Jul 2009 21:21

Re: Strings vergleichen
 
AnsiContainsText dann findet er gar nicht's mehr :/
Und bei pos ist es so, das es auf Groß und Kleinschreibung achtet oder irre ich mich?

DeddyH 19. Jul 2009 21:23

Re: Strings vergleichen
 
Da scheinst Du etwas falsch zu machen. Parameter verwechselt?

youuu 19. Jul 2009 21:26

Re: Strings vergleichen
 
Keine Treffer bei
Delphi-Quellcode:
Procedure TFormMain.SucheCallback(Sender: TBaseVirtualTree; Node: PVirtualNode; data: Pointer; var Abort: Boolean);
Begin
  Customer:= TCustomerDaten(VstCustomer.GetNodeData(Node)^);
  VstCustomer.IsVisible[Node]:= (EditSearchFast.Text = '') or AnsiContainsText(EditSearchFast.Text, Customer.company_name);
End;
Mit
Delphi-Quellcode:
Procedure TFormMain.SucheCallback(Sender: TBaseVirtualTree; Node: PVirtualNode; data: Pointer; var Abort: Boolean);
Begin
  Customer:= TCustomerDaten(VstCustomer.GetNodeData(Node)^);
  VstCustomer.IsVisible[Node]:= (EditSearchFast.Text = '') or AnsiStartsText(EditSearchFast.Text, Customer.company_name)>0);
End;
findet er es ja wenn ich den Anfangsbuchstaben eingebe, daher sollten Parameter stimmen.


Und so wird es aufgerufen

Delphi-Quellcode:
procedure TFormMain.EditSearchFastChange(Sender: TObject);
begin
  VstCustomer.IterateSubtree(nil, SucheCallback, nil)
end;

Matze 19. Jul 2009 21:28

Re: Strings vergleichen
 
Beide Funktionen müssen gehen. Und Pos achtet nicht auf Groß- und Kleinschreibung. Und selbst wenn das so wäre, könnte man sich mittels LowerString/UpperString (oder wie die Funktionen in Delphi heißen, vllt war's auch StrToUpper/StrToLower, wobei das glaub PHP war *g*) aushelfen.

Muetze1 19. Jul 2009 21:34

Re: Strings vergleichen
 
Zitat:

Zitat von Matze
Und Pos achtet nicht auf Groß- und Kleinschreibung.

Und wie er dies macht. Das er das nicht macht ist ein Gerücht welches die Delphi Hilfe über mehrere Ausgaben verbreitete...

youuu 19. Jul 2009 21:45

Re: Strings vergleichen
 
Zitat:

Zitat von Muetze1
Zitat:

Zitat von Matze
Und Pos achtet nicht auf Groß- und Kleinschreibung.

Und wie er dies macht. Das er das nicht macht ist ein Gerücht welches die Delphi Hilfe über mehrere Ausgaben verbreitete...

War das ernst oder höre ich Ironie? :)

DeddyH 19. Jul 2009 21:47

Re: Strings vergleichen
 
Das war Ernst, nach meiner Erfahrung ist Pos() case-sensitive.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:36 Uhr.
Seite 1 von 2  1 2      

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