Toon posts:

[delpi] Raar maar het zal wel weer al te makkelijk

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb al een keer gepost vandaag dus dit kan eigenlijk niet.
Maar ik vond het zo'n rare error daarom posten ik hem ff.
here goes:

code
if Xp>100 or Xp<200 then
begin
Y1:=0;
end;
maar wat zecht de compiler:

[Error] a.pas(120): Incompatible types

hij zegt dus dat de if een icompatible type is, maare hoest.

  • Rashann
  • Registratie: Maart 2000
  • Laatst online: 24-08 07:20

Rashann

Zoek de hond...

Op donderdag 25 juli 2002 19:33 schreef Cazzz het volgende:
code:
1
2
3
4
if Xp&gt;100 or Xp&lt;200 then
  begin
    Y1:=0;
  end;
ik heb totaal geen Delphi ervaring, maar je if-statement is zeker fout... zo doet ie het namelijk altijd

If nothing is written below, I was the last to reply...


Verwijderd

Je moet zoiezo ( ) gebruiken bij die if. En die or is inderdaad een beetje vreemd.

Waarschijnlijk moet het zoiets zijn:
code:
1
2
3
4
if (Xp &gt; 100) and (Xp &lt; 200) then
begin
  Y1:=0;
end;

Verwijderd

Op donderdag 25 juli 2002 19:33 schreef Cazzz het volgende:
code:
1
2
3
4
if Xp&gt;100 or Xp&lt;200 then
begin
  Y1:=0;
end;
ze zegt dat ie dus flipt op de regel met de "if".
het kan zijn dat ie niet op de "if zelf flipt, maar op "Xp>100"...

weet je zeker dat "Xp" een getal is (int, float) ??
misschien flipt ie toch op de "if" omdat er geen haakjes bij staan, probeer eens:
code:
1
if ((Xp &gt; 100) and (Xp &lt; 200)) then

  • EvdB
  • Registratie: November 2001
  • Laatst online: 31-08 20:18
Wanneer Xp tussen 100 en 200 moet liggen dan zou het volgens mij er zo uit moeten zien. Wanneer er maar 1 statement is dan hoef je geen begin en end te gebruiken.
code:
1
2
if (Xp&gt;100 and Xp&lt;200) then
    Y1:=0;

Verwijderd

Topicstarter
dat bedoel ik dus, stom stom stom stom stom stom stom stom stom stom stom stom.
Maar bedankt, als een van julie net zo'n user icon(smilly met bril) als mij willen zeg het dan.
Ik ben wel master in het maken van smilies(niet zo in delphi :'( )

  • Delphi32
  • Registratie: Juli 2001
  • Laatst online: 31-08 21:58

Delphi32

Heading for the gates of Eden

Check Delphi help: Object Pascal Reference, topic Operator Precedence Rules. Daar staat precies wanneer en waarom je in een statement
code:
1
if xp &gt; 100 or xp &lt; 200 then

haakjes nodig hebt.

  • MaxxRide
  • Registratie: April 2000
  • Laatst online: 09-01 10:13

MaxxRide

Surf's up

hij probeer nu 100 met xp te and-en.. Dus idd haakjes erom :)

If you are not wiping out you are nog pushing enough...


  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 13:23

Tomatoman

Fulltime prutser

In de Object Pascal Help vind je via het topic 'precedence of operators' de volgende quote:
In complex expressions, rules of precedence determine the order in which operations are performed.
code:
1
2
3
4
5
6
Operators                  Precedence
=================================   ===============
@, not                  first (highest)
*, /, div, mod, and, shl, shr, as   second
+, , or, xor                third
=, &lt;&gt;, &lt;, &gt;, &lt;=, &gt;=, in, if      fourth (lowest)
Zoals verschillende tweakers al eerder aangaven, moet je dus haakjes gebruiken, want anders wordt 'or' eerder geëvalueerd dan '>' en '<':
code:
1
2
3
4
if (Xp &gt; 100) or (Xp &lt; 200) then
begin
  Y1 := 0;
end;

Maar dit geeft vast niet het resultaat dat je wilt, want deze if-statement is True voor iedere waarde van Xp. Ieder willekeurig getal is immers groter dan 100 óf kleiner dan 200. Waarschijnlijk bedoel je 'als Xp ligt tussen 100 en 200':
code:
1
2
3
4
if (Xp &gt; 100) and (Xp &lt; 200) then
begin
  Y1 := 0;
end;

Een goede grap mag vrienden kosten.


  • The-Source
  • Registratie: Augustus 2001
  • Laatst online: 09:33
code:
1
2
3
4
if (Xp &gt; 100) and (Xp &lt; 200) then
begin
  Y1 := 0;
end;

Is de enigste juiste (die hier boven staat)
Ik weet uit eigen ervaring dat ik die haakjes zelf ook wel eens vergeet :P .
Tip voor Cazzz : Kijk bij een compiler fout altijd waar de cursor staat. De eerste instructie die voor die cursor staat geeft de fout.
Bij jouw code zou die cursor bij de and of bij de 2e xp in de if tag komen denk ik (ff uit het hoofd).

* The-Source gaat nu ff zijn eigen algoritme afmaken :)

Taal fouten inbegrepen ;)


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Hum, wat vreemd dat de conditionele operatoren 'and' en 'or' operators in Delphi hogere prioriteit hebben dan de vergelijkings operatoren (>, <, = etc). In de meeste talen ligt de prioriteit van de vergelijkings operatoren juist hoger, wat volgens mij meer overeenkomt met het normale gebruik...

Het kan natuurlijk nooit kwaad om in geval van onduidelijkheid of onzekerheid even haakjes te zetten, maar deze keuze vind ik toch wel wat merkwaardig.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • TheLunatic
  • Registratie: April 2001
  • Laatst online: 09-07 16:41

TheLunatic

Ouwe boxen.

Nu nog een normale topictitel, en alweer een probleem opgelost :)

Mother, will they like this song?

Pagina: 1