Aracılığıyla paylaş


MFC'de Seri Hale Getirme

Bu makalede, nesnelerin programınızın çalıştırmaları arasında kalıcı olmasını sağlamak için Microsoft Foundation Sınıf Kitaplığı'nda (MFC) sağlanan serileştirme mekanizması açıklanmaktadır.

Serileştirme, disk dosyası gibi kalıcı bir depolama ortamına nesne yazma veya okuma işlemidir. Serileştirme, bir programın yürütülmesi sırasında veya sonrasında yapılandırılmış verilerin (C++ sınıfları veya yapıları gibi) durumunun korunmasının istendiği durumlar için idealdir. MFC tarafından sağlanan serileştirme nesnelerinin kullanılması, bunun standart ve tutarlı bir şekilde gerçekleşmesini sağlar ve kullanıcının dosya işlemlerini el ile gerçekleştirme gereksinimini giderir.

MFC, sınıfında CObjectserileştirme için yerleşik destek sağlar. Bu nedenle, 'den CObject türetilen tüm sınıflar'ın serileştirme protokolünden CObjectyararlanabilir.

Serileştirmenin temel fikri, bir nesnenin genellikle üye değişkenlerinin değeriyle belirtilen geçerli durumunu kalıcı depolamaya yazabilmesi gerektiğidir. Daha sonra, nesnenin durumunu depolama alanından okuyarak veya seri durumdan çıkararak nesne yeniden oluşturulabilir. Serileştirme, nesne işaretçilerinin tüm ayrıntılarını ve bir nesneyi seri hale getirdiğinizde kullanılan nesnelere döngüsel başvuruları işler. Önemli bir nokta, nesnenin kendi durumunu okumaktan ve yazmaktan sorumlu olmasıdır. Bu nedenle, bir sınıfın serileştirilebilir olması için temel serileştirme işlemlerini uygulaması gerekir. Makale serileştirme grubunda gösterildiği gibi, bu işlevselliği bir sınıfa eklemek kolaydır.

MFC, serileştirilecek nesne ile depolama ortamı arasında aracı olarak sınıfının bir nesnesini CArchive kullanır. Bu nesne her zaman dosya CFile adı ve istenen işlemin okuma veya yazma işlemi olup olmadığı dahil olmak üzere serileştirme için gerekli bilgileri aldığı bir nesneyle ilişkilendirilir. Serileştirme işlemi gerçekleştiren nesne, depolama ortamı doğasına bakılmaksızın nesnesini kullanabilir CArchive .

Nesne CArchive , yazma ve okuma işlemlerini gerçekleştirmek için aşırı yüklenmiş ekleme (<<) ve ayıklama (>>) işleçleri kullanır. Daha fazla bilgi için Serileştirme: Bir Nesneyi Seri hale getirme makalesindeki CObjects'i Arşiv aracılığıyla Depolama ve Yükleme makalesine bakın.

Dekont

sınıfını CArchive yalnızca biçimlendirilmiş metinler için olan genel amaçlı iostream sınıfları ile karıştırmayın. CArchive sınıfı ikili biçimli serileştirilmiş nesneler içindir.

İsterseniz, MFC serileştirmesini atlayarak kalıcı veri depolama için kendi mekanizmanızı oluşturabilirsiniz. Kullanıcının komutunda serileştirmeyi başlatan sınıf üyesi işlevlerini geçersiz kılmanız gerekir. ID_FILE_OPEN, ID_FILE_SAVE ve ID_FILE_SAVE_AS standart komutlarının Teknik Not 22'deki tartışmalara bakın.

Aşağıdaki makaleler seri hale getirme için gereken iki ana görevi kapsar:

Serileştirme: Serileştirme ve Veritabanı Giriş/Çıkışı makalesi, serileştirmenin veritabanı uygulamalarında uygun bir giriş/çıkış tekniği olduğunu açıklar.

Ayrıca bkz.

Kavramlar
Genel MFC Konuları
CArchive Sınıfı
CObject Sınıfı
CDocument Sınıfı
CFile Sınıfı