İyi gunler.
İki Record'im var.
a=record
x:integer;
end;
b=record
y:integer;
end;
var
R1:a;
R2:b;
dizi:array[1..2]of ?????
dizi[1]:=R1;dizi[2]:=R2;
Bu Recordlar'ı bu bicimde diziye aktarabilir miyiz?
Record'dan diziye
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Evet aktarabiliriz. Ancak dizi degil TList'e aktarmaniz gerekiyor (yanilmiyorsam)
Kullanimi
Asagidaki kodu denemeden yazdim, is operatoru TForm classi icin duzgun calisiyor ancak recordlar icin nasil calisir bilemiyorum.
Kolay gelsin.
Kod: Tümünü seç
type
a=record
x : integer;
end;
type
b=record
y : integer;
end;
Kod: Tümünü seç
var
R1 : a;
R2 : b;
Liste : TList;
begin
R1.x = 500;
R2.y = 300;
Liste := TList.Create;
Liste.Add(a);
Liste.Add(b);
end;
Kullanimi
Asagidaki kodu denemeden yazdim, is operatoru TForm classi icin duzgun calisiyor ancak recordlar icin nasil calisir bilemiyorum.
Kod: Tümünü seç
For i := 0 to Liste.Count -1 do
Begin
if Liste[i] is A then A(Liste[i]).x := 10;
if Liste[i] is B then B(Liste[i]).y := 15;
End;
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: Record'dan diziye
????? olan yere a ya da b tiplerinden birini direk yazabilirsin ama hangi tipi verdiysen diğer tipten atama yapamayacaksın. Küçük bir hile dışında tabikizambak yazdı:İyi gunler.
İki Record'im var.
a=record
x:integer;
end;
b=record
y:integer;
end;
var
R1:a;
R2:b;
dizi:array[1..2]of ?????
dizi[1]:=R1;dizi[2]:=R2;
Bu Recordlar'ı bu bicimde diziye aktarabilir miyiz?

Kod: Tümünü seç
var
R1:a;
R2:b;
dizi:array[1..2]of a;
begin
r1.x:=2; r2.y:=9;
dizi[1]:=r1;
dizi[2]:=a(r2);//<-r2 a tipiymiş gibi gösterilir.
showmessage(Format('%d %d',[dizi[1].x,dizi[2].x]));
end;

Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .