Merhaba
Android de datasnap ile veri çekiyorum. Resim çekme zorunluluğum oluşu.
Clientdataset fieldbyname('RESIM').savetostream özlliği bulunmyor.
Clientdataset nesnesindeki resmi image nesnesine alamadım.
Tavsiyeniz var mı? İyi Çalışmalar.
Merhaba,
Blob alanı TBlobField tipine dönüştürmeye zorlayarak, yapabilirsiniz.
TBlobField(DatasetAdı.FieldByName('RESIM')).SaveToStream(StreamAdı);
(20-07-2019, Saat: 13:25)Fesih ARSLAN Adlı Kullanıcıdan Alıntı: [ -> ]Merhaba,
Blob alanı TBlobField tipine dönüştürmeye zorlayarak, yapabilirsiniz.
TBlobField(DatasetAdı.FieldByName('RESIM')).SaveToStream(StreamAdı);
Merhaba
Açıkcası yardımınız olmasa çözümü bulamazdım. Teşekkür ederim.
Şu anda hiçbir hata vermemesine rağmen listview de image göremiyorum.
aldığım image önce imagelist e alıp listview item a image index numarsı veriyorum.
list e text olarak liste yüklenirken imagler gelmiyor.
Listview item apperance>item özelliği imagelistitem olarak ayarlı ama imagelerı gösteremiyorum.
procedure Tfrmana.Grup_List_Doldur;
var
vItem:TListViewItem;
ms:TmemoryStream;
i:integer;
begin
i:=0;
ms:=TmemoryStream.Create;
try
try
datam.SQLConUrun.Connected:=true;
with DataM.cdsUrun do
begin
active:=false;
CommandText:='SELECT ID,ADI,RESIM FROM GRUP ORDER BY ADI';
Active:=true;
while not eof do
begin
vItem:=ListView1.Items.Add;
vItem.Text:=FieldByName('ADI').AsString;
r:=imgGrup.Source.Add ;
// ShowMessage('r:=imgGrup.Source.Add ;');
TBlobField(DataM.cdsUrun.FieldByName('RESIM')).SaveToStream(ms);
// ShowMessage('blobfield');
//FieldByName('RESIM').Assign(ms);
ms.Position:=0;
r.MultiResBitmap.LoadItemFromStream(ms,i+1);
// ShowMessage('r.MultiResBitmap.LoadFromStream(ms);');
vItem.ImageIndex:=i;
i:=i+1;
next;
end;
end;
except on E: Exception do
ShowMessage(e.Message);
end;
finally
ms.Free;
end;
end;
Merhaba,
ListViewItem'ın icon özelliğine stream'dan doğrudan bir veri atayabilirsiniz.
Örneğin,
vItem.Icon.LoadFromStream(ms);
Kodunuzun ilgili kısmı en sade şekilde aşağıdaki gibi olmalıdır.
while not eof do
begin
vItem := ListView1.Items.Add;
vItem.Text := FieldByName('ADI').AsString;
TBlobField(datam.cdsUrun.FieldByName('RESIM')).SaveToStream(ms);
vItem.Icon.LoadFromStream(ms);
next;
end;
Tesekkurler, paylasim icin , benimde mobilden cektigim resmi db ye kayit ettirmem gerekiyor, ayni sekilde yapabilirmiyim. Vede ustad, firedac ile dogrudan dbye baglanamiyorum androitten. hata verip duruyor. bunu illaki bir servis uzerindenmi yapmam gerekiyor.
(21-08-2020, Saat: 10:48)TheEAK Adlı Kullanıcıdan Alıntı: [ -> ]Tesekkurler, paylasim icin , benimde mobilden cektigim resmi db ye kayit ettirmem gerekiyor, ayni sekilde yapabilirmiyim. Vede ustad, firedac ile dogrudan dbye baglanamiyorum androitten. hata verip duruyor. bunu illaki bir servis uzerindenmi yapmam gerekiyor.
Rica ederim.
DB'ye doğrudan bağlanıyorsanız, aynı yöntemle (SaveToStream, LoadFromStream) TBlobField'ı set ederek resmi veri tabanına kaydedebilirsiniz.
Firedac bileşen setleri uzak bağlantı için yalnızca desktop uygulamalarına destek vermektedir. Yani bu bileşen seti ile Android ve iOS uygulamaları uzak veri tabanlarına bağlantı sağlayamazsınız. Fakat lokal (cihaz üzerindeki) SQLite ve IBLite veri tabanlarına bağlanabilirsiniz.
Tavsiye etmemekle birlikte, mobil uygulama ile doğrudan uzak db bağlantıları için
Devart Unidac bileşen setini kullanabilirsiniz.
Bu fonksiyon database'e kaydetmek için işini görecektir.
procedure SavetoFireDACBlob(cds : Tclientdataset; img : Timage; fie : string);
var
BlobStream: tStream;
Surf: TBitmapSurface;
begin
if Img <> nil then
begin
Surf := TBitmapSurface.Create;
Surf.Assign(img.Bitmap);
BlobStream := TMemoryStream.Create;
if not TBitmapCodecManager.SaveToStream(BlobStream, Surf, '.jpg') then
raise EBitmapSavingFailed.Create('No');
BlobStream.Position := 0;
cds.ParamByName(fie).LoadFromStream(BlobStream, ftBlob);
Surf.Free;
end;
end;
Kullanımı:
SavetoFireDACBlob(qutablo,image1,'tablodakiresimalanıadı');
@
Jakarta2,
Form editörümüz üzerinde kod biçimlendirme amacı ile kullandığımız 2 adet buton bulunmaktadır.
Delphi Logolu olan (
Delphi Kod Ekle) buton ile
Delphi kodu, Süslü Parantez simgeli buton (
Kod Biçimlendirme) ile de diğer dillere ait (
SQL'de dahil) kodlar eklenerek (aşağıdaki ekran görüntüsünde işaretlenmişir), kod biçimlendirme yapılmaktadır.
Bu kapsamda;
Doğru kod tag'larını kullanarak bize yardımcı olursanız memnun oluruz.
Aksi durumda
DelphiCan Forum Kurallarında belirtilen yaptırımlar uygulanacaktır.
İlgi ve anlayışınız için şimdiden teşekkür eder, iyi çalışmalar dileriz.
Önemli Not: Herhangi bir yerden kopyaladığınız metni, DelphiCan metin editörüne yapıştırmadan önce, metin editörünün araç çubuğunda bulunan "Kaynağı Görüntüle" butonuna tıklayın. Daha sonra kopyaladığınız metni yapıştırın. Böylece harici bir kaynaktan aldığınız metin biçimlendirmesi yok sayılacaktır.
Android uygulaması yapıyorum Resim ImageControl1'e resim yükleyebiliyorum onu mysql veritabanıma aktarmaya çalışıyorum bu kodu yazdım yalnız ftblob undeclared identifier hatası veriyor yanlış mı yazıyorum daha sade bir kod mevcut mudur ?
procedure TForm2.Button2Click(Sender: TObject);
var
BlobStream: tStream;
Surf: TBitmapSurface;
begin
if ImageControl1 <> nil then
begin
Surf := TBitmapSurface.Create;
Surf.Assign(ImageControl1.Bitmap);
BlobStream := TMemoryStream.Create;
if not TBitmapCodecManager.SaveToStream(BlobStream, Surf, '.jpg') then
raise EBitmapSavingFailed.Create('No');
BlobStream.Position := 0;
Form3.UniQuery1.ParamByName('pic').LoadFromStream(BlobStream,ftblob);
Form3.UniQuery1.ExecSQL;
Surf.Free;
end;
Form3.Show;
end;