Ich habe ein Problem hier. In meiner Hauptanwendung Header-Datei habe ich diese Definitionen:Mit CArchive :: GetObjectSchema gibt falschen Wert
#define SOUNDROTA_VERSION_171801 171801 // 17.1.8 Beta 1
#define SOUNDROTA_VERSION_CURRENT 171801 // 17.1.8 Beta 1
In meiner Anwendung Ich habe eine CObject
abgeleitete Klasse, die diese an der Spitze hat:
IMPLEMENT_SERIAL(CChristianLifeMinistryEntry, CObject, VERSIONABLE_SCHEMA | SOUNDROTA_VERSION_CURRENT)
Dinge immer gut funktioniert haben, wenn das Schema mit Wert bis jetzt. Ich gebe zu, dass zuvor die Werte, die ich verwendete, kleiner waren, wie 1707
für 17.0.7, aber ich habe versucht, auch für Beta-Versionen und damit größere Zahlen zu berücksichtigen.
void CChristianLifeMinistryEntry::Serialize(CArchive& ar)
{
CObject::Serialize(ar);
if (ar.IsStoring())
{ // saving code
else
{ // loading code
UINT uSchema = ar.GetObjectSchema();
if (uSchema >= SOUNDROTA_VERSION_171801)
{
AfxMessageBox(_T("Booh"));
}
else
{
}
}
}
Mein Problem ist, wenn ich eine Datendatei speichern und dann wieder öffnen, die uSchema
hat einen Wert von .
Warum? GetObjectSchema
gibt eine UNIT
zurück, warum bekomme ich nicht das Schema, das ich angegeben habe?
aktualisieren
Wenn ich einen Wert von 1718
verwenden dann gibt es diesen Wert.
Gibt es niemanden, der dabei helfen kann? Im Moment musste ich die Unterstützung für alte Dateiformate einstellen und meinen eigenen Versionierungsmechanismus verwenden, über den ich nicht glücklich bin. –