![]() |
zuviele 'or's?
Hi, :) ich glaub ich hab zuviele OR's eingebaut, denn es kommt immer die Fehlermeldung:
[Error] HTML.pas(76): Operator not applicable to this operand type So sieht mein Befehl aus, was kann man ändern damit der Fehler verschwindet?????
Delphi-Quellcode:
if Mask<>'*.jpe' or '*.jpg' or '*.jpeg' or '*.png' or '*.gif' then sl.Add(RootFolder + SR.Name+'
') else sl.Add('[img]'+SR.Name+'[/img] '); |
Re: zuviele 'or's?
du musst die If-Abfrage anders schreiben:
Delphi-Quellcode:
MfG
if (Mask<>'*.jpe') or (Mask<>'*.jpg') or (Mask<>'*.png') //usw.
then sl.Add(RootFolder + SR.Name+' ') else sl.Add('[img]'+SR.Name+'[/img] '); Christian |
Re: zuviele 'or's?
DAnke, jetzt klappts... :wall: :wall: :wall: :)
|
Re: zuviele 'or's?
Ausserdem kann man, mein ich, soviele or's machen wie man will. Man muss sie nur richtig machen :)
|
Re: zuviele 'or's?
ich glaub das mask muss man auch net immer weider wiederholen oder?
|
Re: zuviele 'or's?
Wie willst Du sonst einen Bool'schen Ausdruck produzieren? Und nur die kannst Du mit einem OR logisch verknüpfen!
|
Re: zuviele 'or's?
Hallo Peter,
Zitat:
Delphi-Quellcode:
ist in diesem "Spezialfall" äquivalent zu
var
myVar1, myVar2, myVar3: Cardinal; begin // ... if (myVar1 or myVar2 or myVar3)>0 then
Delphi-Quellcode:
und mitunter sogar etwas performanter...
if (myVar1>0) or (myVar2>0) or (myVar3>0) then
|
Re: zuviele 'or's?
Hallo!
Damit hast Du aber doch eine bitweise und keine logische Verknüpfung gemacht (ich habe da meine Worte schon mit bedacht gewählt). Und mit dem Ergebnis der bitweisen Verknüpfung hast Du schließlich einen Bool'schen Ausdruck konstruiert. Mit einem String - und das ist hier in dem Falle wohl gefragt - wird Dir das aber nicht gelingen. Das geht halt nur im Spezialfall der Integerzahlen (und wahrscheinlich ein paar andere, die mir jetzt nicht einfallen). MfG Peter |
Re: zuviele 'or's?
So geht es aber auch:
Delphi-Quellcode:
Das finde ich in so einem Fall übersichtlicher, denn wenn noch ein paar Formate dazu kommen, wird die or-Version unübersichtlich.
const
Formats: array[0..2] of string = ('*.jpe', '*.jpg', '*.png'); begin if Mask in Formats then sl.Add('[img]'+SR.Name+'[/img] ') else sl.Add(RootFolder + SR.Name+' '); |
Re: zuviele 'or's?
Hallo FriFra,
Zitat:
Zwar könnte man eine Lösung Deiner Art mit AnsiIndexText realisieren und dank format mit einem konstanten Array letztlich eine Lösung der Art (ungetestet)
Delphi-Quellcode:
hinbekommen, aber, dass man den is-Operator in der DL auf Arrays anwenden kann, ist mir unbekannt... :gruebel:
const
arFormats: array[0..2] of string = ('*.jpe', '*.jpg', '*.png'); arResult: array[Boolean] of string = ('%s%s ', '[img]%:1s[/img]'); begin sl.Add(arResult[AnsiIndexText(AMask, arFormats)>0]); @Peter: Du hast selbstverständlich recht, es handelt sich bei meinen ORs um eine binäre Operation, dessen Ergebnis nur mit dem Vergleichsoperator zu einem Bool'schen wird. Ich war mir nicht sicher, wie genau Du Dein "logisch" nahmst und wollte schlicht eine andere Variante aufzeigen, die der natürlichen Formulierung "a oder b oder c größer null" näherkommt. In Zukunft werde ich wieder jedes Wort von Dir auf die Goldwaage legen ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:50 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