Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Prüfen ob Teilstring enthalten ist?
sPeeD2k5 - Mi 01.10.08 14:19
Titel: Prüfen ob Teilstring enthalten ist?
Also mein Problem ist folgendes: Ich schreibe zur Zeit einen IRC-Bot der auf bestimmte Commands reagieren soll!
Bsp:
!kill test.exe
dann soll er halt die test.exe beenden.. Mein Problem ist, wenn ich das Command mit der Test.exe am benutze, reagiert die If-Abfrage nicht.
Delphi-Quelltext
1:
| if Content <= '!kill' then |
kann man das irgndwie machen, dass er nur checkt ob der String enthalten ist?
Moderiert von
Christian S.: Code- durch Delphi-Tags ersetzt
Delete - Mi 01.10.08 14:20
Spontan fallen mir Pos() und AnsiContainsText() ein.
sPeeD2k5 - Mi 01.10.08 14:25
perfekt, funktioniert! danke dir :)
Bronstein - Sa 04.10.08 14:35
Hier eine Funktion die ich nutze:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| function IstInString(quelle: string; suche: string):boolean; begin if pos(suche,quelle) > 0 then result := true else result:=false; end; |
Yogu - Sa 04.10.08 14:45
Bronstein hat folgendes geschrieben : |
Hier eine Funktion die ich nutze:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| function IstInString(quelle: string; suche: string):boolean; begin if pos(suche,quelle) > 0 then result := true else result:=false; end; | |
Das ist ein wenig "doppelt gemoppelt", so wär's performanter und einfacher:
Delphi-Quelltext
1: 2: 3: 4:
| function IstInString(const Quelle, Suche: String): Boolean; begin Result := Pos(Suche, Quelle) > 0; end; |
Aber eigentlich macht das nicht viel Sinn, sind nur ein Jump-Befehl und ein paar Hin- und Herschubskommanodos mehr.
Hidden - Sa 04.10.08 14:50
Hi,
Das läuft auf das selbe Verständnisproblem heraus wie die direkten Vergleiche auf true.
Außerdem muss der String so zuerst kopiert werden. Strings können im Speicher sehr groß werden. Bei Objekten wird standardmäßig(implizit) ein Pointer übergeben. Bei Datentypen der Größe eines Integers lohnt sich das erstellen eines Pointers nicht(Pointer ist gleich groß wie Integer).
Bei Strings kann es aber im Extremfall minutenlanges kopieren ersparen, wenn man sie als "const" deklariert, da dann keine Kopie erstellt werden muss.
Kompakter wäre sicherlich:
1: 2: 3: 4:
| function Contains(const S, aKeyword: String): Boolean; begin result := Pos(aKeyword, S) > 0; end; |
E: Mist, zu spät, während ich noch 'n bissel 'was hinterhergeschrieben habe..
@Yugo: Naja. Für absolute Laien wäre es sicherlich verständlicher ;) Insofern stellt sich hier die Frage, an welche Zielgruppe der Code gerichtet ist.
mfG,
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!