PDA

Tam Sürümünü Görmek İçin : dosyaları saklama


I2sync
29/01/2007, 12:37
c++ ve irrlicht oyun motoruyla oyun yapıyorum..
benim problemim yaptığım projeleri .jpeg, .3ds, .mp3 vb gibi yaptığım çalışmaları kimsenin kullanmaması ve çalmaması için bir bütün şifreli dosya içine yazdırmak ve okuyabilmem gerekiyor... hangi formatlarda dosyalar içine saklıyabiliriz vee internette bunun ilgili örnek bir çalışma felan varmı acaba biraz konuyu aydınlatırsanız sevinirim...


I2sync
03/02/2007, 15:01
bir arkadaşım cevap olarak bunu yazdı...

kendine ağit bir dosya formatı oluştur. Kullanacağın dosyaların listesini binary olarak dosyasının başına FAT gibi bir tablo şeklinde koy. Sonra dosyaları peşpeşe binary olarak aynı dosyaya göm. Daha sonra hangi dosyayı kullanacaksan FAT te bulunan bilgilerine göre dosyayı paketten okuyup hafızaya yerleştirip kullanabilirsin.

acaba bunun nasıl yapılacağı hakkında bir yazı yazabilirmi tam söylediği şey yapamıyorum mesala yeni bir dosya oluşturma..

bluekid
03/02/2007, 16:29
Bu konuda cevap yazmadan bir şey sormak istiyorum
hafızaya alınmış dosyaları hafızadan okuyup kullanabilecekmisin ?
eğer kullanamıyacaksan bu yol işini görmez.

cevaba gelirsek

Öncelikle bir başlık birimi oluşturacaksın mesela
struct {
char DosyaAdı[20];
long StartP;
long Length;
}HeaderData;

sonra ihtiyacına uygun miktarda bir dizi oluşturacaksın

struct HeaderData Header[20]; // 20 tane dosya girebilirsin
boş olarak işaretle mesela isimlerini sıfırla
bunu bir dosyaya yazdır.
Dosya hazır

Dosya eklerken

Veri Dosyasının sonuna git ve pozisyonu al - StartP -
Eklenecek dosyanın uzunluğunu al - Length -
Veri Dosyasının sonuna Eklenecek dosyayı yaz.
Başlığı Oku - Header -
ilk boş pozisyona
Eklediğin Dosya Adı
Eklediğin Dosya uzunluğu
Eklediğin Dosyanın yazmaya başladığın pozisyonu
bilgileri yaz
Başlığı Güncelle -Header -

Okumak istedinde

Başlığı oku
aradığın dosyanın kaydını bul - DosyaAdı -
Bu dosyanın Başlangıç Pozisyonundan - StartP -
dosyanın uzunluğul - Length - kadar veriyi oku

yesilvadi
03/02/2007, 16:56
bu yol dosya işlemlerinde yeterli bilgisi olmayan için oldukça ağır olabilir. bütün dosyaları alıp sıkıştırmadan tek dosya yapmak (tar sistemiydi galiba) tek baytlık hatalarda bile çok can sıkıcı olabilir.

(bilmiyorum böyle bir şey var mı ama )rar dosya sistemini de kullanabilirsin.
sıkıştırılıp şifrelenen rar dosyalarını şifreyi bilmeyen açamaz malum. programının içinde rar dosyalarını açan bir modül kullanırsın. bu modül kaynak dosyanı şifreyi bildiği için :) açar ve kullanır. tabi sen hem dosyanın uzantısını değiştirdiğin için, hem de karışık bir şifre koyduğun için kaynaklarını (kısmen) ulaşılmaz yapmış olursun. zaten %100 güvenlik diye bir şey yoktur.

daha net bir ifadeyle bir sıkıştırma formatı kullanmayı öğren projendeki bu modül bütün işini görür

I2sync
05/02/2007, 18:42
bir resim dosyasını buffera hafızaya nasıl alabiliriz... örneğin deneme.jpg
daha sonra yazdırmam gerekiyor...

acehreli
05/02/2007, 18:55
fopen'in arkadasi fread'i kullanabilirsin. Yazdirmak icin de fwrite...

Ali

bluekid
06/02/2007, 08:40
Bilmem farkındamısınız ben bi soru sormuştum

"hafızaya alınmış dosyaları hafızadan okuyup kullanabilecekmisin ? "

ve tekrar ediyorum

eğer hafızadan kullanamıyacaksan bu yazılanlar hiç bir işine yaramaz sen soruya cevap verki biz de cevabı ona göre söyleyelim

I2sync
06/02/2007, 21:50
diğer yöntem nedir bahsedebilirmisin.

bluekid
08/02/2007, 09:13
Dosyaları şifrele ve kullanacağın zaman şifresini açıp ve geçici bir dosyaya yaz. BU geçici dosya üzerinden işlemini yap işibiten geçici dosyayı sil