Blob Alana Birden Fazla Resim Eklemek
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
- ahmet_sinav
- Üye
- Mesajlar: 263
- Kayıt: 17 Nis 2004 07:44
- Konum: İzmir Yeşilyurt Ulu Cami
- İletişim:
Blob Alana Birden Fazla Resim Eklemek
İyi çalışmalar;
1 - Bir blob alana birden fazla resim nasıl ekleyebilirm?
2 - Eklediğim resimleri ayrı ayrı blob alandan nasıl okutup gösterebilirim?
3 - Gösterdiğim resimlerden herhangibirini nasıl silebilerim?
Delphi 7.0 MsSql;
Saygılar;
1 - Bir blob alana birden fazla resim nasıl ekleyebilirm?
2 - Eklediğim resimleri ayrı ayrı blob alandan nasıl okutup gösterebilirim?
3 - Gösterdiğim resimlerden herhangibirini nasıl silebilerim?
Delphi 7.0 MsSql;
Saygılar;
cevap kendi kendine epey bir eziyet ederek
Blob alana istediğin gibi veri girebilirsin dosya gibi düşün
pekii bir dosyaya uzunluğu değişken olan veriler nasıl girerim bu verileri tekrar nasıl okur ve nasıl silebilirim ?
1) kolay yol
Eklenecek veri sayısını sabitlerim ve dosyanın başında bir dizi olarak tutarım
Resim adı Uzunluğu Başlangıç Pozisyonu
------------------------------------------------------
a.bmp 3000 0X23346
...
..
2) Bakınız Linked List yapısı
Veri adı
Uzunluğu
Veri
Bir sonraki veri pozisyonu

Blob alana istediğin gibi veri girebilirsin dosya gibi düşün
pekii bir dosyaya uzunluğu değişken olan veriler nasıl girerim bu verileri tekrar nasıl okur ve nasıl silebilirim ?
1) kolay yol


Resim adı Uzunluğu Başlangıç Pozisyonu
------------------------------------------------------
a.bmp 3000 0X23346
...
..
2) Bakınız Linked List yapısı
Veri adı
Uzunluğu
Veri
Bir sonraki veri pozisyonu
- ahmet_sinav
- Üye
- Mesajlar: 263
- Kayıt: 17 Nis 2004 07:44
- Konum: İzmir Yeşilyurt Ulu Cami
- İletişim:
İyi çalışmalar;
Blob alanda girilen verilerin başlangıç ve bitiş pozisyonunu ayrı bir tabloda tutarak bu işin üstesinden gelebilirim zanlımca. Blob alandan okuma işlemi şu şekilde oluyor.
Stream'den okuma yaparken seek fonksiyonu ile okumak istediğim dosyanın dosya başlangıcına gidebilirim. Fakat strem'e atılmış olan dosya başlangıç ve bitiş değerlerini nasıl alabilirim?
Saygılar;
Blob alanda girilen verilerin başlangıç ve bitiş pozisyonunu ayrı bir tabloda tutarak bu işin üstesinden gelebilirim zanlımca. Blob alandan okuma işlemi şu şekilde oluyor.
Kod: Tümünü seç
TBlobField(blobfieldismi).SaveToStream(strm);
strm.Seek(0,soFromBeginning);
Saygılar;
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
- ahmet_sinav
- Üye
- Mesajlar: 263
- Kayıt: 17 Nis 2004 07:44
- Konum: İzmir Yeşilyurt Ulu Cami
- İletişim:
Selam;
Evet ilk düşündüğüm yöntem dediğiniz gibiydi. Fakat ilgili tabloya çok sık veri girişi yapılacağından bunu blob alanda tutmanın daha makul olacağını düşüdüm optimizasyon açısından. Strem'e atılmış olan dosya başlangıç ve bitiş değerlerini alma olayını aşabilirsem olay bitecek aslında ama henüz bulamadım.
Saygılar;
Evet ilk düşündüğüm yöntem dediğiniz gibiydi. Fakat ilgili tabloya çok sık veri girişi yapılacağından bunu blob alanda tutmanın daha makul olacağını düşüdüm optimizasyon açısından. Strem'e atılmış olan dosya başlangıç ve bitiş değerlerini alma olayını aşabilirsem olay bitecek aslında ama henüz bulamadım.
Saygılar;
O zaman kendinizi için bir Header tasarlayın... Şöyle ki,
Protokol şunun benzeri olsun.
1. byte kaç tane dosya olduğu "0..255" değer alabilir.
--------------
2,3,4,5. byte(lar) "4byte" uzunluğundadır "dWord" olarak ilk resim dosyasının uzunluk değeri
6. byte'dan itibaren resim dosyası
--------------
"6 + dWord" değeri yani "6 + ilk resim dosyası uzunluğu" sonraki offset (x) olsun.
x, x+1, x+2, x+3 byte(lar) "dWord" olarak sıradaki dosya uzunluğu olsun.
takip edenler ise diğer dosya.
bu işlem dosya sayısı kadar gitsin.
- Geri okurken de ters işlem yapar blok blok direkt okutursunuz...
// EKLEME //
@bk'nın önerisinin benzeri olmuş. Başlığın bir başını bir sonunu okursam böyle oluyor...
Protokol şunun benzeri olsun.
1. byte kaç tane dosya olduğu "0..255" değer alabilir.
--------------
2,3,4,5. byte(lar) "4byte" uzunluğundadır "dWord" olarak ilk resim dosyasının uzunluk değeri
6. byte'dan itibaren resim dosyası
--------------
"6 + dWord" değeri yani "6 + ilk resim dosyası uzunluğu" sonraki offset (x) olsun.
x, x+1, x+2, x+3 byte(lar) "dWord" olarak sıradaki dosya uzunluğu olsun.
takip edenler ise diğer dosya.
bu işlem dosya sayısı kadar gitsin.
- Geri okurken de ters işlem yapar blok blok direkt okutursunuz...
// EKLEME //
@bk'nın önerisinin benzeri olmuş. Başlığın bir başını bir sonunu okursam böyle oluyor...

- ahmet_sinav
- Üye
- Mesajlar: 263
- Kayıt: 17 Nis 2004 07:44
- Konum: İzmir Yeşilyurt Ulu Cami
- İletişim: