Autor Beitrag
sPeeD2k5
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 72



BeitragVerfasst: Mi 01.10.08 14:19 
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.
ausblenden Delphi-Quelltext
1:
if Content <= '!kill' then					

kann man das irgndwie machen, dass er nur checkt ob der String enthalten ist?

Moderiert von user profile iconChristian S.: Code- durch Delphi-Tags ersetzt
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 01.10.08 14:20 
Spontan fallen mir Pos() und AnsiContainsText() ein.
sPeeD2k5 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 72



BeitragVerfasst: Mi 01.10.08 14:25 
perfekt, funktioniert! danke dir :)
Bronstein
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 578
Erhaltene Danke: 1

WIN XP
Delphi 6 / Delphi 2006 / Delphi XE
BeitragVerfasst: Sa 04.10.08 14:35 
Hier eine Funktion die ich nutze:

ausblenden 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;

_________________
Es gibt keine dummen Fragen nur dumme Antworten!!!
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Sa 04.10.08 14:45 
user profile iconBronstein hat folgendes geschrieben Zum zitierten Posting springen:
Hier eine Funktion die ich nutze:

ausblenden 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:

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: 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.

ausblenden 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,

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)