fonksiyona gönderilen dinamik dizinin boyutu

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

fonksiyona gönderilen dinamik dizinin boyutu

Mesaj gönderen unicorn64 »

merhaba arkadaşlar.
yazmaya çalıştığım programda bir noktada takıldım.
tanımladığım procedure e parametre olarak gönderdiğim dinamik dizinin boyutunu procedure içinde setlength le ayarlamam gerekiyor ama yapamıyorum.
size öncelikle programda kullandığım yapıyı göstereyim. sorunumu anlamada kolaylık olur sanırım.
linear hashingle dosyadaki bilgileri indexlemede kullanmak için oluşturduğum yapı:

Kod: Tümünü seç

type
ofb=record
  b:array [0..39] of string;
  bsatir:array[0..39] of integer;
  bdolu:integer;
  end;

  buck=record
  of_bucket:array of ofb;
  n_bucket:array [0..199] of string;
  n_bsatir:array[0..199] of integer;
  nbdolu:integer;
  ofdolu:integer;
  ofvarmi:boolean;
  end;
genel değişken tanımlamam:

Kod: Tümünü seç

var
buckauth,bucktitle:array of buck;
tanımladığım procedure nin tanımlama şekli

Kod: Tümünü seç

procedure TForm1.bucketbol(bucket:Array of buck);
procedure u bu şekilde çağırıyorum:

Kod: Tümünü seç

bucketbol(buckauth);
hata aldığım nokta

Kod: Tümünü seç

setlength(bucket,length(bucket)+1);
incompatible types hatası veriyor ve procedure e dinamik dizi göndermeme rağmen procedure içinde bu ifade statik bir dizi gibi görülüyor.

tanımlamalarda mı bir hatam var acaba??
Kullanıcı avatarı
undefined
Moderator
Mesajlar: 565
Kayıt: 06 Eki 2003 12:01
Konum: Bursa
İletişim:

Mesaj gönderen undefined »

Kod: Tümünü seç

procedure TForm1.bucketbol(bucket:Array of buck); 
Hocam bu koddan dinamik array geçmez. Çünkü bu syntax dinamik arraylar için değil, open array parameters için. Onun için şöyle birşey kullan.

Kod: Tümünü seç

type TDynamicCharArray = array of Char;
function Find(A: TDynamicCharArray): Integer;
Kaynak :Delphi Help
Cevapla