CArchive Nesnesi Oluşturmanın İki Yolu
Nesne oluşturmanın CArchive
iki yolu vardır:
Çerçeve Aracılığıyla Örtük Bir CArchive Nesnesi Oluşturma
En yaygın ve en kolay yol, çerçevenin Dosya menüsündeki Kaydet, Farklı Kaydet ve Aç komutları adına belgeniz için bir CArchive
nesne oluşturmasına izin vermektir.
Uygulamanızın kullanıcısı Dosya menüsünden Farklı Kaydet komutunu çalıştırdığında çerçevenin ne yaptığı aşağıdadır:
Farklı Kaydet iletişim kutusunu sunar ve kullanıcıdan dosya adını alır.
Kullanıcı tarafından nesne olarak
CFile
adlandırılan dosyayı açar.Bu
CFile
nesneyi işaret eden birCArchive
nesne oluşturur. Çerçeve, nesnesini oluştururkenCArchive
modu "yükleme" (okuma, seri durumdan çıkarma) yerine "depolama" (yazma, serileştirme) olarak ayarlar.Serialize
Türetilmiş sınıfınızdaCDocument
tanımlanan işlevi çağırır ve nesneye bir başvuru iletirCArchive
.
Belgenizin Serialize
işlevi daha sonra kısa süre sonra açıklandığı gibi nesneye CArchive
veri yazar. çerçeve işlevinizden Serialize
döndükten sonra nesneyi ve sonra CFile
nesneyi yok ederCArchive
.
Bu nedenle, çerçevenin CArchive
belgeniz için nesne oluşturmasına izin verirseniz, tek yapmanız gereken belgenin Serialize
arşive ve arşivden yazıp okuyan işlevini uygulamaktır. Ayrıca, belgenin Serialize
işlevinin doğrudan veya dolaylı olarak seri hale getirmesi için türetilmiş nesneler CObject
için de uygulamanız Serialize
gerekir.
Açık CArchive Nesnesi Oluşturma
Çerçeve aracılığıyla bir belgeyi seri hale getirmenin yanı sıra, nesneye CArchive
ihtiyaç duyabileceğiniz başka durumlar da vardır. Örneğin, bir CSharedFile
nesneyle temsil edilen Pano'ya ve Panodan verileri seri hale getirmek isteyebilirsiniz. Öte yandan, çerçeve tarafından sunulandan farklı bir dosyayı kaydetmek için bir kullanıcı arabirimi kullanmak da isteyebilirsiniz. Bu durumda, açıkça bir CArchive
nesne oluşturabilirsiniz. Bunu, aşağıdaki yordamı kullanarak çerçevenin yaptığı gibi yaparsınız.
Açıkça CArchive nesnesi oluşturmak için
nesnesi
CFile
veya öğesindenCFile
türetilmiş bir nesne oluşturma.CFile
Aşağıdaki örnekte gösterildiği gibi nesnesini içinCArchive
oluşturucuya geçirin:CFile theFile; theFile.Open(_T("CArchive__Test.txt"), CFile::modeCreate | CFile::modeWrite); CArchive archive(&theFile, CArchive::store);
Oluşturucunun ikinci bağımsız değişkeni, arşivin dosyaya
CArchive
veri depolamak veya dosyadan veri yüklemek için kullanılıp kullanılmayacağını belirten numaralandırılmış bir değerdir. BirSerialize
nesnenin işlevi, arşiv nesnesi için işlevini çağırarakIsStoring
bu durumu denetler.
Nesneye veya nesneden CArchive
veri depolamayı veya yüklemeyi bitirdiğinizde kapatın. CArchive
(ve CFile
) nesneleri arşivi (ve dosyasını) otomatik olarak kapatsa da, hatalardan kurtarmayı kolaylaştırdığından bunu açıkça yapmak iyi bir uygulamadır. Hata işleme hakkında daha fazla bilgi için Özel Durumlar: Özel Durumları Yakalama ve Silme makalesine bakın.
CArchive nesnesini kapatmak için
Aşağıdaki örnekte nesnenin nasıl kapatılmaya devam olduğu gösterilmektedir
CArchive
:archive.Close(); theFile.Close();