![]() |
"If not" bei string realisieren
hallo leutz ich hab da wieder ein problem:
also so hatte ich es mir vorgestellt nur so stimmt das nicht:
Delphi-Quellcode:
also ich hab hier ein paar domains die gefiltert werden sollen was auch gut klappt mit fast dem selben source(ohne das 'not')
if not domain = 'xxx.de'
or 'xx.com' or 'xx-xx.de' or 'xxxxxxx.de' or 'x.de'} then begin irgendwas machen; end; wieso geht es mit if not nicht wenn die domain zb unbekannt ist? oder habt ihr ne alternative idee? da o0o |
Re: "If not" bei string realisieren
Sind alle Bedingungen alternativ? Dann musst du Klammern. Zudem musst du die Variable in jede Teilbedingung aufnehmen. statt not = kannst du auch <> nehmen
|
Re: "If not" bei string realisieren
Hi,
if not funktioniert bei Strings nicht. Versuchs mal mit
Delphi-Quellcode:
if (domain <> 'xxx.de')
or (domain <> 'xx.com') or (dowmain <> 'xx-xx.de') etc... then begin irgendwas machen; end; |
Re: "If not" bei string realisieren
Zitat:
|
Re: "If not" bei string realisieren
Hai oOo,
wenn das ganze etwas flexibler sein soll wäre es eventuell besser mit z.B. einer TStringList zu arbeiten. |
Re: "If not" bei string realisieren
Zitat:
|
Re: "If not" bei string realisieren
Das hat mit den oben genannten Gründen zu tun:
statt s = x or y or z muss es (s= x) or (s = y) or (s= z) heissen |
Re: "If not" bei string realisieren
Um auf Sharky einzugehen....
Delphi-Quellcode:
var
j1:TStringlist; begin j1 := TStringList.Create; try j1.Add('xxx.com'); j1.Add('xxx-xxx.com'); if (j1.IndexOf(domain)<0) then begin ...Dann tue etwas... end; finally FreeAndNil(j1); end; end; |
Re: "If not" bei string realisieren
NOT und OR funktionieren schon, nur nicht mit Strings.
Sie sind binäre/logische Operatoren und keine für Strings! also entweder ähnlich wie es chest3rs schon zeigte (nur mit AND :zwinker: )
Delphi-Quellcode:
oder
if (domain <> 'xxx.de')
and (domain <> 'xx.com') and (dowmain <> 'xx-xx.de') etc... then
Delphi-Quellcode:
oder schau mal nach
if (domain = 'xxx.de')
or (domain = 'xx.com') or (dowmain = 'xx-xx.de') etc... then ![]() ![]() ![]() ![]()
Delphi-Quellcode:
if not MatchText(domain, ['xxx.com', ..., 'x.de']) then
|
Re: "If not" bei string realisieren
Zitat:
Ich weis nur, dass man eine Negierung bei dieser Art von Operanden nicht verwenden kann. In dem Fall muss es Text <> '{Text}' heißen. Grüße |
Re: "If not" bei string realisieren
Delphi-Quellcode:
bewirkt das gleiche wie
if s <> 'xxx'
Delphi-Quellcode:
if not (s = 'xxx')
|
Re: "If not" bei string realisieren
Oh :roll:,
alles klar, wusste ich nicht, dass das auch so geht. Danke |
Re: "If not" bei string realisieren
er meint das man klammern muss. Ansonsten wird versucht die operatoren auf die Variable anzuwenden und das klappt nicht. Durch das Klammern wird erst das in der Klammer aufgelöst und da kommt ein bool raus. Und diesen kann man mit logischen und binären operatoren handhaben. String1 or String2 macht ja auch keinen Sinn, was soll da schon rauskommen? alle Bytes so weit möglich miteinander irgendwie vermixen?!
|
Re: "If not" bei string realisieren
ach gott ihr seid ja heut mal aktiv:D
ich war nur was essn und soviele posts hier...klasse ich liebe euch:) also damit:
Delphi-Quellcode:
klappt es einwandfrei...genauso wie ich es wollte...
if not (s = 'xxx')
ich danke mal allen die sich hier am thread beteidigt haben...da o0o |
Re: "If not" bei string realisieren
Zitat:
(da hat wer am Ende seines Beitrags nette Funktion erwähnt :zwinker: ) |
Re: "If not" bei string realisieren
... und was ist mit der idee von Sharky mit stringlist und indexof (bsp peschai) ?
|
Re: "If not" bei string realisieren
nja, abgesehn davon daß man dafür erstmal 'ne Klasse (TStringList) erstellen, befüllen und am Ende wieder freigeben muß,
diese Klasse nicht unbedingt sooo schnell ist und sie auch etwas Speicher verbraucht ... ist da nix einzuwenden, aber wie gesagt, es gibt praktische/fertige Funktionen :angel:
Delphi-Quellcode:
if not MatchText(domain, ['xxx.com', 'xxx-xxx.com', 'x.com']) then ...
const MyList = Array[0..2] of String = ('xxx.com', 'xxx-xxx.com', 'x.com'); if not MatchText(domain, MyList) then ... und wer die vielen ADD's nicht mag, könnte es auch zusammen übergeben und über die Trennzeichen (#13, #10 oder #13#10 ... CRLF) abgrenzen.
Delphi-Quellcode:
var
j1:TStringlist; begin j1 := TStringList.Create; try j1.Text := 'xxx.com'#10'xxx-xxx.com'#10'x.com'; if j1.IndexOf(domain) < 0 then begin // ... tue etwas ... end; finally j1.Free; end; end; |
Re: "If not" bei string realisieren
hmm jo was isn eigendlich matchtext?
hab mal gesucht und gefunden: ![]() verstehe leider nicht wie es funkt...0_o waere nice wenn mir jemand auf die spruenge helfen koennte^^ da o0o |
Re: "If not" bei string realisieren
Hallo,
vielleicht kannst du es so umsetzen:
Delphi-Quellcode:
Freundliche Grüße
// if not MatchText(domain, ['xxx.com', 'xxx-xxx.com', 'x.com']) then ...
if {StrUtils.}AnsiIndexText(domain, ['xxx.com', 'xxx-xxx.com', 'x.com']) < 0 then ... |
Re: "If not" bei string realisieren
jupp, intern macht MatchText ja auch nichts anderes, als IndexText aufzurufen :stupid:
es ist aber auch schon in meinem D7 enthalten (obwohl die OH es noch nicht kennt). nja, jedenfalls kennt es die Ansi-Version AnsiMatchText (auch Unit StrUtils). |
Re: "If not" bei string realisieren
heyho marabu...
mit AnsiIndexText funkt es einwandfrei;) was wuerde DP nur ohne dich machen...:) naja ich denke das thema ist jetzt ausgibig behandelt worden und ich moechte mich noch mal bei allen beteidigten bedanken fuer die hilfe da o0o |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:43 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz