Site Announcements

Liebe Gäste des Forums, wir freuen uns, dass ihr zu uns gelangt seid.
Windev ist eine sehr umfangreiche und starke Entwicklerumgebung für Anwendungen unter Windows, Linux und Internetapplikationen inkl. Mobile.
Hier sind Antworten und Anregungen dazu zu finden!
Möchtest du aktiv mitschreiben? Dann melde dich durch Klick auf den Text "Registrieren" hier rechts oberhalb an.

OR _OR_ AND _AND_

Alle Themen rund um die Erstellung von Programmen

OR _OR_ AND _AND_

Beitragvon Herbert » 5. Oktober 2013, 07:33

Bin soeben über die aus meiner Sicht verkehrte Interpretation der mathematischen Verknüpfungen in Windev gestolpert.
OR, AND ohne die Underscores durchläuft stets den ganzen Satz
_OR, _AND_ brechen bei Erfüllen eines Teils ab

Code: Alles auswählen
IF (NOT bHhwn AND ZLDATEN.VERZABH) OR (bHhwn AND WIN_Daten.CBOX_verzbh) THEN

heisst, dass bei bhwn=false und zldaten.vertabh=true trotzdem eine Fehlermeldung kommt, wenn das Objekt WIN_Daten nicht exisitiert.

Code: Alles auswählen
IF (NOT bHhwn AND ZLDATEN.VERZABH) _OR_ (bHhwn AND WIN_Daten.CBOX_verzbh) THEN

funktioniert dann.
Herbert
Site Admin
 
Beiträge: 354
Registriert: 23. Februar 2010, 08:06
Wohnort: Langenthal, Schweiz
Has thanked: 5 times
Have thanks: 3 times

Re: OR _OR_ AND _AND_

Beitragvon Lewi » 8. Oktober 2013, 22:10

heisst, dass bei bhwn=false und zldaten.vertabh=true trotzdem eine Fehlermeldung kommt, wenn das Objekt WIN_Daten nicht exisitiert.


Mal abgesehen davon, wenn das Objekt "Win_Daten" nicht existieren würde, wird in diesem Fall ein Compiler-Fehler angezeigt. ;-)

Der Unterschied zischen AND und _AND_ im Zuge einer "Verknüfung" ist der, dass die zweite Bedingung nicht geprüft wird, wenn die erste nicht erfüllt wird (Stichwort: Laufzeitoptimierung). In anderen Hochsprachen gibt es dafür einen Compiler-Schalter ( wie z.B. auch bei xBase++).
Lewi
Member
 
Beiträge: 74
Registriert: 3. September 2010, 14:45
Wohnort: Hamburg
Has thanked: 0 time
Have thanks: 1 time

Re: OR _OR_ AND _AND_

Beitragvon BRANDELH » 24. Oktober 2013, 00:40

soweit ich mich erinnere liegt der Unterschied bei der Interpretation in _OR_ (binärer Vergleich) und OR (logischer Vergleich), wobei Unterschiede auftreten können.
BRANDELH
Site Admin
 
Beiträge: 199
Registriert: 30. Juni 2010, 14:31
Wohnort: Germersheim
Has thanked: 0 time
Have thanks: 2 times

Re: OR _OR_ AND _AND_

Beitragvon Herbert » 24. Oktober 2013, 10:52

Nein, das "_" dient einzig der Optimierung. Erfüllt der erste Teil die Bedinungung nicht, wird der zweite Teil nicht angesehen. So darf eben im zweiten Teil ein nicht existierendes Objekt vorkommen, ohne dass ein Fehler auftritt.
Herbert
Site Admin
 
Beiträge: 354
Registriert: 23. Februar 2010, 08:06
Wohnort: Langenthal, Schweiz
Has thanked: 5 times
Have thanks: 3 times

Re: OR _OR_ AND _AND_

Beitragvon BRANDELH » 25. Oktober 2013, 15:15

OK, hatte ich vergessen. Aber es lag ja nahe, da _TO_ auch nur einmalig den Endpunkt ermittelt, während TO das in jeder Schleife tut.
BRANDELH
Site Admin
 
Beiträge: 199
Registriert: 30. Juni 2010, 14:31
Wohnort: Germersheim
Has thanked: 0 time
Have thanks: 2 times

Re: OR _OR_ AND _AND_

Beitragvon Magic » 19. Dezember 2014, 11:35

Hi,

abgesehen von dem o.g. nicht existierendem Objekt der zu Fehler führen könne,
was spricht dagegen die optimierten Anweisungen _OR_ und _AND_ standardmäßig immer zu verwenden? Mir fällt bisher nichts ein warum ich es nicht tun sollte. Aber warum gibt es immer noch beides? Warum wurde dann nicht einfach das normale OR / AND optimiert?

Soll damit irgendwelche Kompatibilität bewahrt werden?
Gruß,
Magic
Magic
Member
 
Beiträge: 51
Registriert: 2. September 2011, 13:48
Has thanked: 0 time
Have thanks: 0 time

Re: OR _OR_ AND _AND_

Beitragvon BRANDELH » 19. Dezember 2014, 23:43

Genau weiß ich es nicht, aber es gibt zwei Gründe die mir einfallen um beides stehen zu lassen:

1. man möchte dass immer alle Funktionen durchlaufen werden, weil dort z.B. Steuerungsaufgaben durchgeführt werden.
2. es könnte sein, dass die optimierte Form nicht passt, weil die Bedingungen sich ändern (ob das hier tatsächlich Sinn mancht weiß ich nicht).
Beispiel FOR TO ermittelt bei jedem Durchlauf den Endwert neu, FOR _TO_ optimiert das in den Fällen wo der Endwert immer gleich ist, weil er z.B. vorher einmalig ermittelt wurde.
BRANDELH
Site Admin
 
Beiträge: 199
Registriert: 30. Juni 2010, 14:31
Wohnort: Germersheim
Has thanked: 0 time
Have thanks: 2 times

Re: OR _OR_ AND _AND_

Beitragvon Herbert » 22. Dezember 2014, 12:40

... und bitte daran denken, dass in Windev AND wie OR gleichberechtigt sind. Also bitte immer Klammern setzen!
nur in SQL-Filtern und SQL-Queries ist AND bevorzugt (das was ich eigentlich immer erwarte)!
Herbert
Site Admin
 
Beiträge: 354
Registriert: 23. Februar 2010, 08:06
Wohnort: Langenthal, Schweiz
Has thanked: 5 times
Have thanks: 3 times

Re: OR _OR_ AND _AND_

Beitragvon Magic » 22. Dezember 2014, 13:32

BRANDELH hat geschrieben:man möchte dass immer alle Funktionen durchlaufen werden

Ok, wenn man tatsächlich mehrere Funktionen aufruft die alle ausgeführt werden sollen und dann auf dem Rückgabewert reagieren will
Dann liefert z.B. IF funkton1() = True AND funktion2() = True AND funktion3() = True THEN ..., ein anderes Ergebnis als die selbe IF Anweisung mit _AND_.
Das muss man in der Tat berücksichtigen!

Herbert hat geschrieben:Also bitte immer Klammern setzen!

Setze ich persönlich so oder so immer in Klammer. Erleichtert auch das Lesen des Quellcodes.
Gruß,
Magic
Magic
Member
 
Beiträge: 51
Registriert: 2. September 2011, 13:48
Has thanked: 0 time
Have thanks: 0 time

Re: OR _OR_ AND _AND_

Beitragvon BRANDELH » 24. Dezember 2014, 22:51

Herbert hat geschrieben:... und bitte daran denken, dass in Windev AND wie OR gleichberechtigt sind. Also bitte immer Klammern setzen!
nur in SQL-Filtern und SQL-Queries ist AND bevorzugt (das was ich eigentlich immer erwarte)!


ehrlich gesagt weiß ich gar nicht wie das bei anderen Sprachen so ist, aber ich setzte die Klammern auch deshalb um mir später sicher zu sein, wie es gedacht war.
BRANDELH
Site Admin
 
Beiträge: 199
Registriert: 30. Juni 2010, 14:31
Wohnort: Germersheim
Has thanked: 0 time
Have thanks: 2 times


Zurück zu Programmierung allgemein

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste

cron