Итак, я создал XML-файл, который будет настраивать приложение, которое уже было создано.До сих пор он был жестко запрограммирован с помощью констант, которые представляли значения смещений во флэш-памяти.
enum {
MAIN_FLASH_OFFSET = 0x01000000,
LOADER_FLASH_OFFSET = 0x01e00000,
MICROCODE_FLASH_OFFSET = 0x00060400,
DRIVER_FLASH_OFFSET = 0x00100000,
OTHER_FLASH_OFFSET = 0x00500000
} ModuleOffsets;
Я изменил приложение для чтения из файла XML, чтобы настроить эти смещения динамически на основе графикикарточка, которую выбирает пользователь.
В один из моих заголовочных файлов я добавил следующее, чтобы заменить предыдущее enum :
int MAIN_FLASH_OFFSET;
int LOADER_FLASH_OFFSET;
int MICROCODE_FLASH_OFFSET;
int DRIVER_FLASH_OFFSET;
int OTHER_FLASH_OFFSET;
Вот моя проблема.Я использую TinyXML для разбора документа.Ниже приведена часть XML и мой код, в котором я хочу получить эти значения.Когда он пытается получить его, у него возникают проблемы, потому что GetText () возвращает строку, а значения (0x01000000 и т. Д.) Являются целыми числами (по крайней мере, я так думаю.
Так какточно я храню их? У меня действительно нет никакой подсказки, но я чувствую, что я близко.
XML (фактический файл имеет несколько карточек записи)
<EGCs xmlns="http://tempuri.org/XMLSchema.xsd">
<card type="EGC1">
<offsets>
<flashOffset>0x01000000</flashOffset>
<loaderFlashOffset>0x01e00000</loaderFlashOffset>
<microFlashOffset>0x00060400</microFlashOffset>
<driverFlashOffset>0x00100000</driverFlashOffset>
<otherFlashOffset>0x00500000</otherFlashOffset>
</offsets>
</card>
</EGCs>
код
COFPFileGeneratorDlg ofp;
TiXmlDocument doc("EGC_Cards.xml");
if(doc.LoadFile())
{
TiXmlHandle hDoc(&doc);
TiXmlElement *pRoot, *pParm;
pRoot = doc.FirstChildElement("EGCs");
if(pRoot)
{
pParm = pRoot->FirstChildElement("card");
while(pParm)
{
if(pParm && pParm->Attribute("type") == m_dConfigDlg.m_strEGCType)
{
ofp.MAIN_FLASH_OFFSET = pRoot
->FirstChildElement("card")
->FirstChildElement("flashOffset")
->GetText();
[...]
// close braces