Mikä on varattujen sanojen is ja as tarkoitus?
is ja as
as_and_is
2284
0Äänestä
Muut lukivat myös
Odottaa vastausta
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
Turvaa tilisi vahvistamalla puhelinnumerosi. Voit silloin palauttaa unohtuneen salasanan tekstiviestillä.
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
Vastaukset 2
Vanhimmat
if Sender is TButton then (Sender as TButton).Caption := '&Ok';
is vertaa onko objecti tiettyä tyyppiä, as suorittaa tyypinmuunnoksen.
Varattua sanaa is voidaan testata myös näin.
Eli aluksi Formille on luotu Memo ja Button sekä Buttonille
tapahtumankäsittelijä. Sitä on täydennetty näin:
Tyyppien esittelyosassa on
...
type
TIhminen = Class
public
nimi:String;
constructor Create(annettuNimi:String);
end;
TMies = Class(TIhminen);
TNainen = CLass(TIhminen);
{ TForm1 }
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ private declarations }
procedure kerroSukupuoli(hlo:TIhminen);
public
{ public declarations }
end;
...
ja implementation-osaan on täydennetty näin
...
constructor TIhminen.Create(annettuNimi:String);
begin
nimi := annettuNimi;
end;
procedure TForm1.kerroSukupuoli(hlo:TIhminen);
begin
if hlo is TMies then Memo1.Lines.Add(hlo.nimi ' on mies');
if hlo is TNainen then Memo1.Lines.Add(hlo.nimi ' on nainen');
end;
procedure TForm1.Button1Click(Sender: TObject);
var Mara:TMies;
Mimuli:TNainen;
begin
Memo1.Clear;
Mara := TMies.Create('Martti');
Mimuli := TNainen.Create('Minna-Liisa');
if Mara is TIhminen then Memo1.Lines.Add(Mara.nimi ' on ihminen');
if Mimuli is TIhminen then Memo1.Lines.Add(Mimuli.nimi ' on ihminen');
kerroSukupuoli(Mara);
kerroSukupuoli(Mimuli);
Mimuli.Free;
Mara.Free;
end;
...