Kezdőoldal » Számítástechnika » Programozás » Újra Delphi. Mi a baj már...

Újra Delphi. Mi a baj már megint? (bővebben képpel lent)

Figyelt kérdés

[link]

később

[link]


Azt hiszem további leírás nem szükséges.



2013. máj. 13. 17:37
 1/5 tabaki ***** válasza:
A Delphiben nincs a blokkok két végén BEGIN/END? Így az ELSE előtt nem kap IF-et (ugyebár, az előzőt teljesítette az utána következő sor végrehajtásával).
2013. máj. 13. 18:41
Hasznos számodra ez a válasz?
 2/5 tabaki ***** válasza:

Egyébként nézzél tovább az orrodnál... A hibaüzeneteket nem szoktad olvasgatni? "END kéne, de ELSE van itt." Nem kell leragadni a pontosvesszőnél.


Basicet tanultál előzőleg, hm?

Pascalban nem írhatsz akárhány utasítást az IF-szerkezetbe, hanem csak _egyet_, így:


IF (feltétel) THEN valami;


vagy:


IF (feltétel) THEN valami ELSE más;


Ugyi a "valami", meg a "más" a lehetséges egy-egy utasítás. Ezek azonban akármilyen méretű _összetett utasítások_ is lehetnek, azokat viszont BEGIN és END fogja közre, hiszen éppen ezzel állítottad elő őket.

2013. máj. 13. 19:06
Hasznos számodra ez a válasz?
 3/5 tabaki ***** válasza:

No, mire jutottál?

Szerintem az IF-blokkod végén levő END-be is bele fog akadni a fordító. Azt ugyanis a pascal NEM zárja le külön. Ha ott időnként END található, az annak köszönhető, hogy az ELSE ágba is összetett utasítás került -- tehát nem az IF, hanem a BEGIN/ELSE lezárásaként van ott.

És miért nem pontosvessző van a PROCEDURE végén?

Most nem tudom kipróbálni, de valami ilyesminek kéne lennie a rutinodnak (a behúzásokat a Gyík le szokta nyelni, ezért mellőzöm, pótold utólag):


Procedure TForm1.Button1Click(Sender: TObject);

begin

if edit1.text='qwerty' then

begin

label1.hide;

edit1.hide;

button1.hide;

button2.hide;

end

else

label1.Caption:='NAAA';

end;


Tekintve, hogy basic-gondolkodást sejtek a hiba mögött, megpróbálom lefordítani arra is. Vélhetőleg ilyesmit akartál, ha ugyan a basicben is ez a beépített Hide metódus neve (a tájszólás is eltérhet, meg nyilván az objektumokat sem Tsatöbbinek kéne nevezni):


SUB TForm1.Button1Click(Sender: TObject)

IF edit1.text="qwerty" then

label1.hide

edit1.hide

button1.hide

button2.hide

ELSE

label1.Caption="NAAA"

END IF

END SUB


Ehelyett ezt az értelmetlenséget írtad:


SUB TForm1.Button1Click(Sender: TObject)

IF edit1.text="qwerty" then

label1.hide

END IF 'egy soros THEN-ként is írhattam volna, csak így világosabb, hogy hol záródik le

edit1.hide 'ez a három sor a feltételvizsgálat erdményétől függetlenül végrehajtódik

button1.hide

button2.hide

ELSE 'itt a basic-fordító is megakadna, mert nincs IF az ELSE előtt

label1.Caption="NAAA"

END IF

END IF 'ez szimulálja a pascal-program fölösleges END-jét, vagyis egy nem létező blokkot akarsz lezárni.

END SUB

2013. máj. 13. 23:53
Hasznos számodra ez a válasz?
 4/5 A kérdező kommentje:
Köszi a segítséget. Igazából NooB-gondolkodást alkalmaztam, de ez a korom miatt megbocsájtható, csak hobbi szinten próbálgatom.
2013. máj. 15. 20:39
 5/5 tabaki ***** válasza:
A lényeg a lényeg. Örülök, ha segítettem.
2013. máj. 15. 20:59
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!