Herkese Merhaba
Benim bir array[1..26]of string ('birinci','ikinci','ucuncu'......)tanımlı dizim ve aynı isime sahip procedurlerim var.
for n:=1 to 26 do
begin
case n of
1:birinci;adlı procedure
2:ikinci;adlı pro
3:ucuncu;adlı pro
end;
end;
Ben bu biçimde caseleri dolduruyom.Güzel bir görünüm oluşturmuyor.
Hele arrayin içindeki değer daha da aratacak olursa case de ona bağlı olarak şişiyor.
Bu biçimde caseleri doldurmadan yani case kullanmadan istenilen şarta göre procedurelere ulaşabilirmiyiz.Teşekkürler....
case
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
-
- Üye
- Mesajlar: 46
- Kayıt: 25 May 2005 09:08
- Konum: izmir
..........
type
yordam = procedure;
var
yordamliste : array [1..4] of yordam;
s : string;
procedure yordam1;
begin
s:=s+#13+'1';
end;
procedure yordam2;
begin
s:=s+#13+'2';
end;
procedure yordam3;
begin
s:=s+#13+'3';
end;
procedure yordam4;
begin
s:=s+#13+'4';
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i :integer;
begin
s:='';
yordamliste[1]:=yordam1;
yordamliste[2]:=yordam2;
yordamliste[3]:=yordam3;
yordamliste[4]:=yordam4;
for i:=1 to 4 do
begin
if assigned(yordamliste) then // bu satır olmazsa başın agrir
yordamliste;
end;
showmessage(s);
end;
Düşündügün buna benzer birşey mi?
veya
Bu tip kullanımda procedure'ler parametre alamaz. Class methodlarına bu şekilde erişilemez. procedure of object tipinde tanımlanmaları gerekir. Ayrıca virtual veya dynamic method'lara erişirken VMT'ye ulaşmak gibi bazı hileler kullanmalısın.
Kod: Tümünü seç
procedure Bir;
begin
ShowMessage('Bir');
end;
procedure Iki;
begin
ShowMessage('İki');
end;
procedure Uc;
begin
ShowMessage('Üç');
end;
const
Procs : array[1..3] of procedure = (Bir, Iki, Uc);
I: Integer;
begin
for I:= 1 to 3 do
Procs[I];
end;