Döngüden Çıkıp Tekrar Girince Çalışan Kod ?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
techmaster
Üye
Mesajlar: 52
Kayıt: 08 Ağu 2003 03:24
Konum: Adana

Döngüden Çıkıp Tekrar Girince Çalışan Kod ?

Mesaj gönderen techmaster »

Arkadaşlar freereporttaki image nesnelerine veri gönderiyorum ancak sorun çıkıyor...
Aşağıdaki kod yine bir döngünün içinde ancak işin garip yani bu döngü bir kere çalıştığında sorun çıkmıyor ama ikinci çalışmasında 'Access violation at address...' hatası veriyor. (İkinci çalışmasından kastım k'nın 1,2,3 diye ilerlemesi. )
Ayrıca döngüden çıkıp tekrar girdiğindede sorun vermiyor yani döngü içerisinde birinciden sonra hata alıyorum. Yardımcı olabilirmisiniz?

Kod: Tümünü seç

for k:=0 to (Sayi-1) do
    begin
     HangiNesne:='Picture'+inttostr(DegerTut);
     (Raporla.FindObject(HangiNesne) as TfrPictureview).Picture.Assign(Image2.Picture);
     DegerTut:=DegerTut+1;
    end;
master of technology

http://www.cuemot.org
ulu coder
Üye
Mesajlar: 838
Kayıt: 01 Nis 2006 06:46
Konum: Ankara

Mesaj gönderen ulu coder »

Access violation demek olmaya bişeye erişmeye çalışmak demek...

muhtemelen 'HangiNesne' değişkeninde adı tutulan nesne yok. ilk kez döngüye girdiğinde olmuyor, sonra oluyorsa, DegerTut'un ilk değerine bi bakın.

Kolay gelsin.
Kullanıcı avatarı
techmaster
Üye
Mesajlar: 52
Kayıt: 08 Ağu 2003 03:24
Konum: Adana

Mesaj gönderen techmaster »

DegerTut'un ilk değeri 1 döngüye ilk girişinde Picture1 e erişmeye çalışıyorum erişip resmin diskteki yerini gönderiyorum ancak döngünün 2nci turunda Picture2 olmasına rağmen tam

Kod: Tümünü seç

(Raporla.FindObject(HangiNesne) as TfrPictureview).Picture.Assign(Image2.Picture); 
bu satırda hata alıyorum...
master of technology

http://www.cuemot.org
ulu coder
Üye
Mesajlar: 838
Kayıt: 01 Nis 2006 06:46
Konum: Ankara

Mesaj gönderen ulu coder »

Edit:
En son ulu coder tarafından 02 Ara 2007 12:23 tarihinde düzenlendi, toplamda 3 kere düzenlendi.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

TfrPictureview tipindeki nesne sayınız nedir ? bir tane olup da raporlama sırasında ürüyorlar gibi düşünüyorsanız yanılıyorsunuz. Hep aynı nesneye atama yapın. Bir öncekinin hükmü ilgili band yazdırılma işleminde sona erer.
Resim
Resim ....Resim
Kullanıcı avatarı
techmaster
Üye
Mesajlar: 52
Kayıt: 08 Ağu 2003 03:24
Konum: Adana

Mesaj gönderen techmaster »

mrmarman cevabınız için teşekkür ederim ama anlamadım biraz daha açabilirmisiniz...
master of technology

http://www.cuemot.org
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- Fastreport formuna kaç tane frPictureview nesnesi koymuştunuz ? Onu sordum.
Resim
Resim ....Resim
Kullanıcı avatarı
techmaster
Üye
Mesajlar: 52
Kayıt: 08 Ağu 2003 03:24
Konum: Adana

Mesaj gönderen techmaster »

formda 8 tane var
master of technology

http://www.cuemot.org
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- Verdiğin aşağıdaki kodda DegerTut değişkenini, döngüden önce sıfırlamayı ihmal etmiyorsun değil mi ?

Kod: Tümünü seç

  for k:=0 to (Sayi-1) do 
  begin 
    HangiNesne:='Picture'+inttostr(DegerTut); 
    (Raporla.FindObject(HangiNesne) as TfrPictureview).Picture.Assign(Image2.Picture); 
    DegerTut:=DegerTut+1; 
  end; 
Resim
Resim ....Resim
akdatilla
Üye
Mesajlar: 292
Kayıt: 02 Nis 2006 06:04
Konum: Antalya

Mesaj gönderen akdatilla »

1-programda acces violation hatasını engellemek için şu yöntem
kullanabilirsin sanırım:

Kod: Tümünü seç

for k:=0 to (Sayi-1) do 
    begin 
     HangiNesne:='Picture'+inttostr(DegerTut); 
if Assigned(Raporla.FindObject(HangiNesne)) Then
Begin
     (Raporla.FindObject(HangiNesne) as TfrPictureview).Picture.Assign(Image2.Picture); 
     DegerTut:=DegerTut+1; 
end;
    end; 
2- Sayın mrmarman'ın dediği gibi verdiğiniz kod bloğunda bazı kontrolsüz değişkenler görülüyor. Bu değişkenlerin mutlaka bir başlangıç değeri verilmelidir (Özelliklle Sayi ve DegerTut değişkenleri).
Cevapla