Tüm Platformlar için Hızlı Uygulama Geliştirme --->    Kitabımız...      Delphi

Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Resim Silme
#1
procedure Tdrawmaindemo1frm.SpeedButton1Click(Sender: TObject);
var
 sfile: string;
 fs: TFileStream;
begin
 TDialogService.InputQuery('Dosya Kaydetme İşlemi', ['Dosya Adı'],
   ['Deneme.jpg'],
   procedure(const AResult: TModalResult; const AValues: array of string)
   begin
     case AResult of
       mrOK:
         begin
           if (AValues[0].Trim <> '') then
           begin
             sfile := System.IOUtils.TPath.Combine
               (System.IOUtils.TPath.GetDocumentsPath(), AValues[0]);
             fs := TFileStream.Create(sfile, fmCreate);
             try
               fdrawbox.SaveToJPEGStream(fs);
             finally
               fs.DisposeOf;
             end;
           end;
         end;
     end;
   end);
end;

KODUYLA RESMİ KAYDETME İŞLEMİ YAPMIŞTIK , 
Listviewde belirtilen resmi silmek için aşağıdaki kodu kullanıyorum fakat olmuyor nerde yanlış acaba 
MessageDlg('Kaydedilen Resim silinsin mi?', System.UITypes.TMsgDlgType.mtInformation,
  [
    System.UITypes.TMsgDlgBtn.mbYes,
    System.UITypes.TMsgDlgBtn.mbNo

  ], 0,
    procedure(const AResult: System.UITypes.TModalResult)
    begin
      case AResult of
        mrYES:
        begin
          if fileexists(System.IOUtils.TPath.GetSharedPicturesPath ) then
            deletefile(System.IOUtils.TPath.GetSharedPicturesPath )  ;
            showmessage('Dosyaları yenileyin');
        end;
        mrNo:
          ShowMessage('Dosya silinmedi.');
      end;
    end);
Cevapla
#2
Merhaba,
Fileexists fonksiyonu ile yalnızca bir dosyanın varlığını kontrol edebilirsiniz.
Siz fileexists parametresine, dosya adı ve yolu yerine bir dizin yapısı (System.IOUtils.TPath.GetSharedPicturesPath) göndermişsiniz.
Deletefile fonksiyonu da fileexist'te olduğu gibi bir dosya yolu ve adı parametresi ister.
Bundan dolayı beklediğiniz dosya kontolü ve silme işlemi gerçekleşmiyor.
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#3
(20-01-2018, Saat: 09:41)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhaba,
Fileexists fonksiyonu ile yalnızca bir dosyanın varlığını kontrol edebilirsiniz.
Siz fileexists parametresine, dosya adı ve yolu yerine bir dizin yapısı  (System.IOUtils.TPath.GetSharedPicturesPath) göndermişsiniz.
Deletefile fonksiyonu da fileexist'te olduğu gibi bir dosya yolu ve adı parametresi ister.
Bundan dolayı beklediğiniz dosya kontolü ve silme işlemi gerçekleşmiyor.
Var
Sfile:string;
Begin 

MessageDlg('Kaydedilen Resim silinsin mi?', System.UITypes.TMsgDlgType.mtInformation,
[
   System.UITypes.TMsgDlgBtn.mbYes,
   System.UITypes.TMsgDlgBtn.mbNo

 ], 0,
  procedure(const AResult: System.UITypes.TModalResult)
  begin
    case AResult of
      mrYES:
      begin
        if fileexists(System.IOUtils.TPath.GetSharedPicturesPath, sfile ) then
          deletefile(System.IOUtils.TPath.GetSharedPicturesPath, sfile)  ;
          showmessage('Dosyaları yenileyin');
      end;
      mrNo:
        ShowMessage('Dosya silinmedi.');
    end;
  end);
 
Şeklinde mi olması lazım hocam
Cevapla
#4
Merhaba,
Aşağıdaki gibi kullanmanız gerekiyor.
  sfile := TPath.Combine(TPath.GetDocumentsPath(), 'OrnekDosya.png');
  case AResult of
   mrYES:
     begin
       if fileexists(sfile) then
         deletefile(sfile);
       showmessage('Dosyaları yenileyin');
     end;
   mrNo:
     showmessage('Dosya silinmedi.');
 end;
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#5
(20-01-2018, Saat: 11:55)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlMerhaba,
Aşağıdaki gibi kullanmanız gerekiyor.
  sfile := TPath.Combine(TPath.GetDocumentsPath(), 'OrnekDosya.png');
  case AResult of
   mrYES:
     begin
       if fileexists(sfile) then
         deletefile(sfile);
       showmessage('Dosyaları yenileyin');
     end;
   mrNo:
     showmessage('Dosya silinmedi.');
 end;

Teşekkürler hocam listviewden seçileni sileceğimiz için ornekdosya.png yerine listview1 seçilen textini yazdırmamız gerekiyor değil mi?
Cevapla
#6
Merhaba,
Aşağıdaki gibi yapabilirsiniz.
 
 case AResult of
   mrYES:
     begin
      if ListView1.ItemIndex > -1 then
        begin
          sfile := TPath.Combine(TPath.GetDocumentsPath(), ListView1.Items[ListView1.Selected.Index].Text); //ListView Text'inde dosya adı olduğunu varsayıyorum.
           if fileexists(sfile) then
          begin
             deletefile(sfile);
             ListView1.Items.Delete(ListView1.Selected.Index);
             showmessage('Dosyaları yenileyin');
          end 
           else
            showmessage('Dosya bulunamadı');
        end 
          else
           showmessage('Listeden bir kayıt seçmelisiniz');
      end;
   mrNo:
     showmessage('Dosya silme işlemi iptal edildi');
 end;
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#7
Hocam kodu şu şekilde düzenledim , 
var
sfile:string;
begin
MessageDlg('Kaydedilen Resim silinsin mi?', System.UITypes.TMsgDlgType.mtInformation,
 [
    System.UITypes.TMsgDlgBtn.mbYes,
    System.UITypes.TMsgDlgBtn.mbNo

  ], 0,
   procedure(const AResult: System.UITypes.TModalResult)
   begin
     case AResult of
      mrYES:
    begin
     if ListView1.ItemIndex > -1 then
       begin
         //sfile := TPath.Combine(TPath.GetDocumentsPath(), ListView1.Items[ListView1.Selected.Index].Text); //ListView Text'inde dosya adı olduğunu varsayıyorum.
      sfile:= System.IOUtils.TPath.Combine(System.IOUtils.TPath.GetSharedPicturesPath() ,Listview1.Items[Listview1.Selected].Text);
       if fileexists(sfile) then
         begin
            deletefile(sfile);
            ListView1.Items.Delete(ListView1.Selected.Index);
            showmessage('Dosyaları yenileyin');
         end
          else
           showmessage('Dosya bulunamadı');
       end
         else
          showmessage('Listeden bir kayıt seçmelisiniz');
     end;
     mrNo:
    showmessage('Dosya silme işlemi iptal edildi');
    end;
   end);
Aşağıdaki kodu kullanınca TPath does not contain a member named 'Combine' at line ... ve TPath does not contain a member named 'GetDocumentsPath' at line  hatası veriyor
         sfile := TPath.Combine(TPath.GetDocumentsPath(), ListView1.Items[ListView1.Selected.Index].Text); //ListView Text'inde dosya adı olduğunu varsayıyorum.
Aşağıdaki kodda ise  resimdeki uyarıları veriyor
      sfile:= System.IOUtils.TPath.Combine(System.IOUtils.TPath.GetSharedPicturesPath() ,Listview1.Items[Listview1.Selected].Text);

Ads_z.png
Cevapla
#8
listitem ve integer değerleri olumsuz diyor. Yani bir listitem fonksiyonunu integer değermiş gibi almışsın. Herhalde listview.itemindexlerde bir sıkıntı olarabilir. öncelikle listview.itemindexin gerçekten integer mı yoksa başka birşey mi olduğunu kontrol edin. messagedlg için de bir uses kullanman gerekiyor anladığım kadarıyla.
Cevapla
#9
(23-01-2018, Saat: 01:11)hakanharbeli Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ollistitem ve integer değerleri olumsuz diyor. Yani bir listitem fonksiyonunu integer değermiş gibi almışsın. Herhalde listview.itemindexlerde bir sıkıntı olarabilir. öncelikle listview.itemindexin gerçekten integer mı yoksa başka birşey mi olduğunu kontrol edin. messagedlg için de bir uses kullanman gerekiyor anladığım kadarıyla.

FMX.DialogService ; mevcut hocam ayrıca cevap için teşekkürler +puan
Cevapla
#10
Merhaba,
Öncelikle aşağıdaki kodu boş bir projede test ederek, doğru çalıştığını görün.
Daha sonra mevcut projenizde yer alan diğer kod satırlarını bu kod satırları arasına yerleştirin ve kullanın. 
  TDialogService.MessageDialog('Kaydı silmek istediğinize emin misiniz?',
   TMsgDlgType.mtConfirmation, FMX.Dialogs.mbYesNo, TMsgDlgBtn.mbNo, 0,
   procedure(const AResult: TModalResult)
   begin
     case AResult of
       mrYes:
         begin
           try
             // Kayıt Silme kodlarınız
             ShowMessage('Kayıt silindi!');
           except
             ShowMessage('Bir hatadan dolayı silme işlemi iptal edildi!');
           end;
         end;
       mrNo:
         ShowMessage('Kayıt silme işlemi iptal edildi!');
     end;
   end);


Screenshot_2018-01-23-09-19-14.png
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  WebBrowser - Choose Buton - Resim Upload nehirnnn 0 69 21-01-2018, Saat: 15:23
Son Yorum: nehirnnn
  Resim click durumu Dostk 7 163 20-01-2018, Saat: 10:27
Son Yorum: Fesih ARSLAN
  Resim Listeleme Paranoyaq 13 346 02-01-2018, Saat: 21:25
Son Yorum: Paranoyaq
  Uygulama içine gömülü resim veri tabanı vb başkalarının erişimi hk. pro_imaj 4 196 08-09-2017, Saat: 11:18
Son Yorum: pro_imaj
  Mobil uygulamada Resim kalitesi hk. barutali 6 415 27-07-2017, Saat: 22:55
Son Yorum: barutali



Konuyu Okuyanlar: 1 Ziyaretçi