|
10.4 Record
-
Possui vários componentes, denominados
campos
-
Os campos podem ser de tipos diferentes e são
identificados por um nome.
Ex.:
Type
DATA = Record
MES: 1..12;
DIA: 1..31;
ANO: 1900..2000;
End;
complexo = Record
PREAL: Real;
PIMG: Real
End;
REGISTRO= Record
NOME: Array [1..40] of Char;
SALARIO: Real;
IDADE: Integer;
SEXO: Char;
End;
Var
x: complexo
DIA_DE_SEMANA: DATA
CADASTRO: Array
[1..1000] of REGISTRO;;
REG: REGISTRO; |
Para referenciarmos um campo de um Record, usamos
um ponto (.)
Ex.:
X.PREAL:= 6.0;
X.PIMG:= 2.0;
-
Pode ser usado com qualquer operador compatível
com o tipo de dado, contido no campo do Record.
-
Somente o operador :=
pode ser aplicado a um Record inteiro.
Ex.:
Var
X,Y: complexo;
Begin
X.PREAL:= Y.PREAL;
X.PIMG:= Y.PIMG;
End.
Isto é equivalente
a:
X:=
Y;
Um Record pode conter qualquer estrutura,
inclusive outro Record. Então, usando o que foi definido anteriormente:
Type
novoregistro = Record
regantigo: registro
aniversario: data
End;
Var
nreg: novoregistro;
Begin
nreg.regantigo.nome:=
'jose';
nreg.aniversario.mes:=
1;
End.
Comando With
Permite que se manipule um Record referenciando
apenas os campos deste.
Var
a:Record
b:integer;
c:Record
d:boolean;
e:real;
End;
End; |
a.b:= 1;
a.c.d:= true;
a.c.e:= 1.3; |
=
|
With
a do
Begin
b:=1;
c.d:=true;
c.e:=1.3;
End; |
=
|
With
a,c do
Begin
b:=1;
d:=true;
e:=1.3;
End; |
Não é permitido fazer dentro do
With qualquer alteração da variável denotada em uma
lista de variáveis abreviadas.
Ex.
Program aula;
Type
brinquedo = Record
tipo:(bola,jogo,boneca);
custo:real;
estado:(bom,quebrado);
End;
Var
estoque:array
[1..10] of brinquedo;
i:integer;
Begin
with
estoque [1] do
Begin
tipo:=bola;
custo:=500.00;
estado:=bom;
End;
End. |
Porém, se fizermos:
i:=1;
with
estoque [i] do
Begin
…
i:=i+1 => ERRADO
End; |
|