Bir fonksiyona array adresi yollamak istiyorum ama beceremedim.
Yapmak istedigim
Global degiskenlerim
a: array [0..10] of real;
b: array [0..10] of real;
c: array [0..10] of real;
yazmak istedigim fonksiyon x[0]=x[1] islemini yapacak;
Fonksiyonu mesela a arrayi icin cagiracagim bunun icin fonksiyona a[0] adresi yollayacagim.
Bu is nasil yapilir?
Fonksiyonu ve nasil cagrilacagini yazabilirmisiniz.
Fonksiyona adres parametresini global degisken uzerinden bildirirsem sorum yok ama fonksiyona parametre yollamaya calisirsam bir turlu kabul ettiremiyorum.
Ayrica pointer degerini inc ve dec ile artirip azaltmak da hosuma gitmiyor.
Global degiskenle su sekilde cozdum.
a:array [0..10] of real;
p:^real;
function Tasi():real;
{
inc(p); // Bu isleme gerek olmadan da yapabilmem lazim
result:=p^;
dec(p); // Bu isleme gerek olmadan da yapabilmem lazim
p^:=result;
}
Cagirirken;
p:=@a;
Tasi(); // p[0]=p[1]
Bu sekilde oldu ama inc ve dec'dan da kurtulmam lazim.
function Tasi(a: pointer):real;
var p: ^real;
begin
p:=a;
inc(p);
result:=p^;
dec(p);
p^:=result;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
a[1]:=2.8;
Tasi(@Ia);
end;
Edit
Fonksiyona diziyi parametre olarak girmek:
https://stackoverflow.com/questions/714456/how-do-you-pass-an-array-by-reference-in-delphi
Cok basit sekilde hallettim. Pointera falan gerek kalmadi
function Tasi(var n: array of real):real;
begin
n[0]:=n[1];
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
a[1]:=2.8;
Tasi(a);
end;
Evet, fonksiyon parametresi önüne var kelimesi ekleyince Fonksiyon dışındaki değişken kastedilmiş oluyor. Bu sayede global değişken veya başka fonksiyon içindeki değişken kullanılabiliyor