erdogan_ozkaya yazdı:bir sürü kayıt olduğu için geri dönemem
Aslında geri dönmeniz gerekmiyor. Şöyle düşünün:
- Database tablosuna dosya eki alanını ekleyin. Zorunlu alan olmasın. (NOT NULL kullanmayın)
- Kayıt eden uygulamayı dosya ekini kaydedecek şekle getirin.
Yukarıda yaptıklarınız ile herhangi bir uyumsuzluk sorunu yaşamazsınız. Daha sonra küçük bir uygulama geliştirin. Bu uygulama tamamen eski kayıtların düzeltilmesine yönelik olacak
- Uygulama eski kayıtların tamamını ilk kayıttan son kayda kadar inceleyecek.
- Dosya eki alanı dolu olan kayıtlarda bir değişiklik olmayacak. Bu kayıtları değiştirmeden ilerleyecek.
- Dosya eki alanı boş olan kayıtlar için:
1- Database içindeki kayıtlı dosyayı bitmap olarak okumaya çalışsın. Başarılı olur ise database tablosu dosya eki alanına "bmp" kaydetsin ve sonraki kayda geçsin.
2- ilk yöntem başarısız olur ise bu defa jpeg olarak okumaya çalışsın. Başarılı olur ise dosya eki alanına "jpeg" kaydedip sonraki kayda geçsin.
3- her iki yöntem de başarısız olur ise bu defa png olarak okumaya çalışsın. Başarılı olur ise dosya eki alanına png kaydedip sonraki kayda geçsin.
4- Tüm yöntemler başarısız olur ise database içindeki dosyayı disk üzerinde bir dizin içine tablo eşsiz kayıt numarası ile (primary key alan değeri ile) kaydedip sonraki kayda geçsin.
İşlem tamamlandığı zaman formatı okunamayan resim dosyalarını dışarıdan bir uygulama ile ne formatta olduğunu anlamaya çalışın. Dosya eki güncelleme uygulamasını bu yeni resim türüne göre güncelleyip tekrar çalıştırın.
Bu işlemler sonunda database tablosun içindeki tüm kayıtlarınızda dosya eki alanı dolu olacak. Bu noktaya gelince resim dosyasını ekranda gösterme kodunu güncelleyedek dosya ekine göre ilgili bileşen ile DBGrid içinde gösterebilirsiniz.
Yukarıdakilere alternatif olarak sizin bahsettiğiniz dönüştürme (convert) işlemi ile ilgili;
Öncelikle kayıt kodunuzu güncelleyerek kayıt edilen dosya ne olursa olsun bitmap türüne çevirerek kaydetme yapabilirsiniz. Bununla ilgili şu anda aklıma gelen iki durum karşınıza çıkabilir:
1- Database boyutu ciddi derecede daha büyük olacaktır. Bitmap ortalama olarak jpeg dosyalara göre 10 ile 20 kat daha büyük olacaktır.
Kaynak:
http://www.differencebetween.net/techno ... p-and-jpg/
2- Jpeg -> bitmap dönüşümü işlemci süresi kullanacak ve kayıt işlemini yavaşlatacaktır.
Zaten database içinde olan mevcut kayıtların güncellenmesi işlemi için yukarıda bahsettiğim yönteme çok yakın bir yöntem izlemeniz gerekir. Sadece Bitmap olarak okunanlara işlem yapmadan diğer dosya formatlarını okuyarak bu defa bitmap halini kayıt güncellemesi şeklinde database içine kaydetmeniz gerekir. Bu işlem yukarıda önerilen işleme göre database sistemini daha fazla meşgul edecektir. Basit birkaç kelime kaydı ile birkaç MB (bitmap türüne çevirdiğinizde boyutu artacaktır dosyalarınızın) boyutundaki dosyaların database içine kaydedilmesi süre olarak aynı olmaz.