|
|
| Tek bir exe ile dünya kadar dosya taşımak... |
Gürol Demir
Vergi Denetmeni
Resource Dosyası Nedir?
Kurma programlarında görmüşsünüzdür. Tek bir exe dosya ile bir sürü dosya taşınır. Başka bir ifade ile tek bir dosyanın içine yüzlerce dosya gömülüdür.
Bir dosya içine bir birinden bağımsız birden fazla dosya gömmenin ve daha sonra ihtiyaç olduğunda bu dosyaları oradan çıkartmanın standart haline gelmiş bir yöntemi vardır.
Eklenecek dosyalar önce bir dosyada toplanır. Bu ön toplama sonucunda oluşan dosyaya resource dosya denir. Resource dosya projeye eklenir. Proje derlenip çalıştırılabilir bir program (*.exe) oluşturulduğunda resource dosya içindeki dosyalar da artık .exe uzantılı programın içinde gömülü durmaktadır.
Bu yazımız ile resource dosyanın oluşturulması, projeye dahil edilmesi, proje ile exe yapıldıktan sonra, programın gittiği yerde exe içinde gömülü duran bu dosyaların kullanılması anlatılacaktır.
Konunun daha iyi anlaşılması için ayrıca örnek de verilecektir. Verilecek bu örnekte
"c:\belgelerim\dene.doc" ve "c:\windows\media\dene.wav" isimlerinde iki adet dosyanızın olduğu varsayılacaktır.
Resource Dosyası Nasıl Yapılır?
Visual Basic Sürüm 6.0'da
Eğer Visual Basic'in 6.0 versiyonunu kullanıyorsanız işiniz kolay. "Add-Ins/Add-In Manager" menüsünden "Resource Editor" seçeneği işaretleyin ve "Ok" buttonunu tıklayın. Sonra yine "Add-Ins" menüsünde açılacak olan "Resource Editor" menüsünü seçin çalışacak editör programı ile istedğiniz gibi bir resource dosyası oluşturun bu dosyaya isterseniz resim, isterseniz ikon, isterseniz text, isterseniz exe dosya ne isterseniz ekleyin ve kaydedin.
Örneğimizde sözü edilen "c:\belgelerim\dene.doc" ve "c:\windows\media\dene.wav" isimli iki adet dosyayı eklediğinizi ve bu dosyayı "dene.res" ismiyle kaydettiğinizi varsayalım.
Visual Basic Sürüm 5.0'de
Eğer Visual Basic'in 5.0 versiyonunu kullanıyorsanız visual basic'in kurulduğu yerde bulunan (genelde "C:\Program Files\DevStudio\VB\Wizards\" isimli klasörde) Rc.Exe ve Rcdll.Dll isimli dosyaları kullanacağız.
a) Bir text editör yardımıyla (windows not defteri olabilir);
1 DocDosya "c:\belgelerim\dene.doc"
2 WavDosya "c:\windows\media\dene.wav"
yazalım ve bu dosyayı "dene.txt" olarak "Rc.Exe" ile aynı dizine kaydedelim.
Ara açıklama:
Yukarda bulunan "1" ve "2" resource dosyaya gömülecek olan dosyaların index numarasıdır. Her veri tipi için bu numaradan sadece bir tane olabilir.
Yukarda bulunan "DocDosya" ve "WavDosya" resource dosyaya gömülecek olan dosyaların tipini belirler.
14 farklı tipde olabilir.
Bu tiplerin biri hariç hepsi aynı yöntemle kullanılır.
Sadece STRINGTABLE DISCARDABLE tipi başka bir formatta kullanılır.
Yani diğerleriyle birlikte format şu şekildedir:
Index Tipi Dosya Adı
1 CURSOR "Dene.Ico"
2 CURSOR "Baska.Ico"
n CURSOR "n.ico"
1 BITMAP "Dene.Bmp"
2 BITMAP "Başka.Bmp"
n BITMAP "n.Bmp"
STRINGTABLE DISCARDABLE
BEGIN
1 "Bu bir metin indexi 1"
2 "Bu da bir metin ancak indeksi 2"
END
Bu konuda daha geniş açıklamayı visual basic yardımında bulabilirsiniz.
b) "Rc.Exe" için bir kısayol oluşturalım ve bu kısayolun hedefine "RC.EXE" den sonra gelmek üzere bir boşluk bırakıp "Dene.Txt" yazalım. Böylece Rc.Exe'ye "Dene.Txt" isimli dosyamızı parametre olarak vermiş olduk. Kısayolu çalıştıralım. Eğer herşeyi düzgün yaptıysanız, aynı dizinde bu kez "Dene.Res" isimli bir dosya oluşmuş olmalıdır. İşte ".res" dosyamız budur.
Resource Dosyası Projeye Nasıl Eklenir?
Visual basic'in "Project/Add File" menüsünden oluşturduğunuz resource dosyanızı (örneğimizdeki adı "dene.res") projeye ekleyebilirsiniz.
Bu işlemden sonra "project" penceresinde "Related Document" içinde (*.res) dosyanız görülecektir.
Taşınan Dosyaları Sonra Nasıl Çıkartabiliriz?
Az önce "dene.res" isimli resource dosyasını eklediğimiz projenin örneğin Form_Load olayına aşağıdaki kodu yazın;
Private Sub Form_Load()
Dim Oku1 As String
'Doc dosya sökülüyor
Oku = StrConv(LoadResData(1, "DocDosya"), vbUnicode)
Open "c:\deneme.doc" For Binary As 1
Put 1, , Oku
Close 1
'Wav dosya sökülüyor
Oku = StrConv(LoadResData(2, "WavDosya"), vbUnicode)
Open "c:\deneme.wav" For Binary As 1
Put 1, , Oku
Close 1
End Sub
bu durumda projeyi çalıştırdığınızda "c:\deneme.doc" ve "c:\deneme.wav" isimli iki adet dosyanız olur ve bu dosyalar "dene.res" isimli dosyanın içine aldığımız "c:\belgelerim\dene.doc" ve "c:\windosw\media\dene.wav" isimli dosyaların bire bir aynısıdır.
Aynı yöntemle yüzlerce dosya taşınabileceğinizi belirtmemize gerek var mı? Dene.txt içersine ne kadar dosya isterseniz yazabilirsiniz.
Burada örneklediğimiz yöntem windowsun bütün dosya türleri için geçerlidir.
Ek olarak resim ve simge (ikon) dosyaları ile metinlerin gömülmesi ve sökülmesinde daha farklı yöntemlerin de söz konusu olduğunu belirtelim.
|
| :: Bu sayfaya 4.042 kere bakıldı :: | |