Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Vergleichsoperatoren in Delphi (https://www.delphipraxis.net/18490-vergleichsoperatoren-delphi.html)

Virchov 19. Mär 2004 15:02


Vergleichsoperatoren in Delphi
 
Tach.

Welche Vergleichsoperatoren gibt es im Delphi? Was wäre zB eine Alternative für == vom c++?
Ein Operator, der zwei Variablen miteinander vergleicht und ein boolschen Wert zurückliefert?


Danke.
Virchov

sakura 19. Mär 2004 15:04

Re: Vergleichsoperatoren in Delphi
 
Zitat:

Zitat von Virchov
Was wäre zB eine Alternative für == vom c++?

Ein einfaches =

Das = aus C++ ist :=

...:cat:...

Leuselator 19. Mär 2004 15:04

Re: Vergleichsoperatoren in Delphi
 
Onlinehilfe:Index:"operatoren"eingeb:lesen

glkgereon 19. Mär 2004 15:05

Re: Vergleichsoperatoren in Delphi
 
also, delphi is ja im prinzip pascal, von daher
grösser: >
kleiner: <
gleich: =
grössergleich: =>
kleinergleich: =<

Virchov 19. Mär 2004 15:08

Re: Vergleichsoperatoren in Delphi
 
"==", nicht "=" war gemeint.

Luckie 19. Mär 2004 15:10

Re: Vergleichsoperatoren in Delphi
 
Und darauf hat dir sakura auch geantwortet.

Virchov 19. Mär 2004 15:11

Re: Vergleichsoperatoren in Delphi
 
so. Verstehe. Danke

Virchov 19. Mär 2004 15:13

Re: Vergleichsoperatoren in Delphi
 
das hab ich im Prinzip auch so gemacht, der compiler meckert aber:

result:= (iEdgeCount=4);

(result muss integer sein)

Gibt es da einen Ausweg?

sakura 19. Mär 2004 15:14

Re: Vergleichsoperatoren in Delphi
 
Zitat:

Zitat von Virchov
result:= (iEdgeCount=4);

(result muss integer sein)

Gibt es da einen Ausweg?

Deklariere die Funktion als Boolean (Boolean, WordBool, BOOL, ...) ;-) Ist in C++ nicht anders

...:cat:...

Virchov 19. Mär 2004 15:14

Re: Vergleichsoperatoren in Delphi
 
iedgecount ist auch integer

c113plpbr 19. Mär 2004 15:15

Re: Vergleichsoperatoren in Delphi
 
'anders' oder 'ungleich' habt ihr vergessen: <>

Virchov 19. Mär 2004 15:16

Re: Vergleichsoperatoren in Delphi
 
die Lösung ist mir klar, kann ich aber nicht. Die Funktion muss einen integer zurückliefern :(

sakura 19. Mär 2004 15:16

Re: Vergleichsoperatoren in Delphi
 
Zitat:

Zitat von Virchov
iedgecount ist auch integer

Schon klar. Aber der Vergleich zweier Werte kann nur True oder False ergeben, also ist das Ergebnis vom Typ Boolean ;-)

...:cat:...

sakura 19. Mär 2004 15:17

Re: Vergleichsoperatoren in Delphi
 
Zitat:

Zitat von Virchov
die Lösung ist mir klar, kann ich aber nicht. Die Funktion muss einen integer zurückliefern :(

Was soll die Funktion für einen Wert bei Gleichheit liefern und welchen bei Ungleichheit :gruebel:

...:cat:...

Virchov 19. Mär 2004 15:18

Re: Vergleichsoperatoren in Delphi
 
also, im C geht das, obwohl die Funktion als int deklariert ist... hmmmm:
return (iEdgeCount == 4);

sakura 19. Mär 2004 15:19

Re: Vergleichsoperatoren in Delphi
 
Zitat:

Zitat von Virchov
also, im C geht das, obwohl die Funktion als int deklariert ist... hmmmm:
return (iEdgeCount == 4);

Dann schreibe
Delphi-Quellcode:
Result := Integer(Boolean(iEdgeCount = 4));
Das sollte auch gehen.

...:cat:...

Meflin 19. Mär 2004 15:20

Re: Vergleichsoperatoren in Delphi
 
ich persönlich check noch net mal was du eigentlich willst mit deiner funktion!? :roll:

Virchov 19. Mär 2004 15:21

Re: Vergleichsoperatoren in Delphi
 
result:= integer(iEdgeCount=4); das ging aber.

Virchov 19. Mär 2004 15:23

Re: Vergleichsoperatoren in Delphi
 
genau. Hab ich schon. Trotzdem Danke!

Luckie 19. Mär 2004 16:35

Re: Vergleichsoperatoren in Delphi
 
In C/C++ sind int und Bool zuweisungskompatible bzw. sollte der Compiler trotzdem eine Warnung ausgeben. In Delphi sind sie es nur nach einem Cast, wie du es jetzt gemacht hast. Der Rückgabewert ist jetzt eben 0 oder eins, je nach dem. Warum nommst du also definierst du die Funktion nicht als Boolean?

Chewie 19. Mär 2004 20:30

Re: Vergleichsoperatoren in Delphi
 
Das ist eben ein Designunterschied zwischen Pascal und C.
In C kannst du einen Pointer wie einen Integer behandeln. Im Grunde ist ein Pointer ja auch nur ein vorzeichenloser Integer, deswegen geht das.
Pascal dagegen ist sehr streng, wenn es um Typen geht. Auch wenn ein Zeiger im Grunde genommen eine Ganzzahl ist, so kann sie dennoch nicht wie eine solche behandelt werden. Nur wenn man explizit (per Cast) angibt, dass man den Pointer wie einen Integer behandeln will, kann man ihn inkrementieren etc. Ist zwar mehr Schreibarbeit, aber man wird zu dazu gezwungen, Code zu schreiben, der meiner Meinung nach lesbarer ist.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 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 by Thomas Breitkreuz