İmage nesnesine yüklenen resmi hafızadan silmek

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
AliRiza
Üye
Mesajlar: 172
Kayıt: 24 Kas 2004 10:57
Konum: İstanbul/Avcılar
İletişim:

İmage nesnesine yüklenen resmi hafızadan silmek

Mesaj gönderen AliRiza »

Arkadaşlar image nesnesine queryden gelen veriye göre resim yüklüyorum.İmage nesnesini gizledim..

Kod: Tümünü seç

procedure TForm1.sorgulaClick(Sender: TObject);
begin
adoquery1.SQL.Clear;
adoquery1.Close;
adoquery1.SQL.Add('select * from etiket where ntno='+QuotedStr(edit1.Text));
adoquery1.Open;

 if   FileSearch(adoquery1.fieldbyname('resim').AsString+'.bmp',way2)<>'' then
begin
image1.Picture.LoadFromFile(way2+adoquery1.fieldbyname('resim').asstring+'.bmp');
(frReport2.FindObject('Picture1') as TfrPictureview).Picture.Assign(image1.Picture);
end,
Şöyle problemim var.Arama yaptığımda veritabanında resim varsa yüklüyor.Her aramada resim varsa uygun resim geliyor..Veritabanında eğer resim yoksa bir önceki resmi image nesnesine yüklüyor.
Resmin var olup olmadığını kontrol ettiriyorum ama aynı problem yine devam ediyor.
Burada problemin çözüm yolu image nesnesini boşaltmak gibi duruyor.

Yüklemeden image1.free yapıyorum access violation veriyor,destroy yapıyorum yine aynı problem..
Arkadaşlar bu konuda yardımınıza ihtiyacım var..
Yardımlarınızı bekliyorum..
Bilginin efendisi olmak için çalışmanın uşağı olmak şarttır...
BALZAC
Bana bir harf öğretenin kulu kölesi olurum..
HZ.ALİ
Kullanıcı avatarı
delphist
Üye
Mesajlar: 595
Kayıt: 05 Oca 2005 04:34

Mesaj gönderen delphist »

Resim bulunamadı yazan bir bitmap resim hazırlayıp bulunmadığı takdirde bu resmi gösterebilirsin...
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Merhaba.
Arattığınız dosya ismi her seferde değişiyor mu bunu kontrol edin.Bir de dosyayı kontrol ekmek için neden "FileSearch" fonksiyonunu kullandığınızı sorabilir miyim? Ek olarak string karşılaştırması için "SameText" fonksiyonunu kullanmanız daha sağlıklı olur.
Kolay gelsin.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

@delphist'in yaklaşımı doğru.

- Ayrıca TImage içindeki resmi silmek için

Kod: Tümünü seç

Image1.Picture := Nil;
komutu yeterli...

@bLue aLonE'in sorusuna da hak veriyorum. Bir dosyanın var olup olmadığını test etmek için FileExists() fonksiyonunu kullanabilirsin...

- Kodunu da aşağıdaki şekilde güncelledim ama test etmedim. Way2 değişkeninin global bir değişken olduğunu değerlendiriyorum..

Kod: Tümünü seç

procedure TForm1.sorgulaClick(Sender: TObject);
begin
  adoquery1.SQL.Clear;
  adoquery1.Close;
  adoquery1.SQL.Add('select * from etiket where ntno='+QuotedStr(edit1.Text));
  adoquery1.Open;

  if FileExists(way2+adoquery1.fieldbyname('resim').AsString+'.bmp') then
  begin
    image1.Picture.LoadFromFile(way2+adoquery1.fieldbyname('resim').asstring+'.bmp');
    (frReport2.FindObject('Picture1') as TfrPictureview).Picture.Assign(image1.Picture);
  end
  else image1.Picture := Nil;
end;
Resim
Resim ....Resim
AliRiza
Üye
Mesajlar: 172
Kayıt: 24 Kas 2004 10:57
Konum: İstanbul/Avcılar
İletişim:

Teşekkür

Mesaj gönderen AliRiza »

Ya Muharrem hocam yardımın için sağol.
Yanlız kodu dediğiniz gibide denedim.yine aynı problem devam ediyor.
image1.picture:=nil olmuyor...
Yani eğer resim varsa aranılan üründe doğru resimler geliyor..
Resim yoksa eğer önceden hiç arama yaptırmadıysak yine image'a resim yüklemediysek resim yoksa gelmiyor.Ama bir arama yaptık ürünün resmi var..Daha sonraki aramada ürünün resmi yok önceki aramadaki resmi alıyor..
Sizce neden olabilir..
Bilginin efendisi olmak için çalışmanın uşağı olmak şarttır...
BALZAC
Bana bir harf öğretenin kulu kölesi olurum..
HZ.ALİ
AliRiza
Üye
Mesajlar: 172
Kayıt: 24 Kas 2004 10:57
Konum: İstanbul/Avcılar
İletişim:

Problemin nedeni

Mesaj gönderen AliRiza »

Problemin nedenini buldum arkadaşlar..
İmage'den nil yaparken free reporttaki image'den den nil yapmak gerekiyor..
Free reportdanda nil yaptım.Belki bir arkadaşa lazım olur..
(frReport2.FindObject('Picture1') as TfrPictureview).Picture:=Nil;
Bilginin efendisi olmak için çalışmanın uşağı olmak şarttır...
BALZAC
Bana bir harf öğretenin kulu kölesi olurum..
HZ.ALİ
aLonE CoDeR
Kıdemli Üye
Mesajlar: 1223
Kayıt: 26 Nis 2005 04:08

Mesaj gönderen aLonE CoDeR »

Kullandığınız yöntemin stabil bir çözüm olmadığını düşünüyorum.Olay biraz daha dallandığında bu kodlama sistemi yüzünden çok zaman kaybı yaşayabilirsiniz..
Kolay gelsin.
Cevapla