Döngü kontrol değişkenlerinde hata

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
hgunes
Üye
Mesajlar: 27
Kayıt: 01 Nis 2007 03:40
Konum: Çorum

Döngü kontrol değişkenlerinde hata

Mesaj gönderen hgunes »

Kod: Tümünü seç

function TfrmMain.KroneckerCarpimi(A, B: TMatris): TMatris;
var
  i, j, k, l, R1, R2, C1, C2: Integer;
begin
  R1 := GetMatrisRowCount(A);
  R2 := GetMatrisRowCount(B);
  C1 := GetMatrisColCount(A);
  C2 := GetMatrisColCount(B);
  SetMatrisSize(Result, R1 * R2, C1 * C2);

  for i := 1 to R1 do
    for j := 1 to C1 do
      for k := 1 to R2 do
        for l := 1 to C2 do
          Result[(i - 1) * R1 + k - 1, (j - 1) * C1 + l - 1] := A[i - 1, j -
            1] * B[k - 1, l - 1];
end;
Yukarıda yazdığım kodda R1, R2, C1, C2'ler maximum 3 ya da 5 gibi küçük degerler almasına rağmen program anlamsız şekilde i,j,k,l değişkenlerine 2345834, 19675426 gibi anormal büyük rakamlar atıyor. Sonucunda da haliyle Access Violation hatası alıyorum. işin ilginç tarafı bu fonksiyonu programda sadece bir işlem için üst üste iki sefer çağırıyorum. Birinci de herhangi bir hata olmaksızın sonuç üretirken, ikinci de yukarıda bahsettiğim hatayı alıyorum. Bu hata zaman zaman i ve j'de zaman zaman da k ve l'de ortaya çıkıyor.

Acaba proje seçeneklerinden Range Checking ve Overflow Checking'den düzelir mi dedim ancak kar etmedi.

Bu durumla karşılaşanlar var mı? Sizce çözüm nedir?
Cevapla