Újra Delphi. Mi a baj már megint? (bővebben képpel lent)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
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.
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
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
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz2.png)
![*](http://static.gyakorikerdesek.hu/p/vsz1.png)
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!