Перейти к содержанию
Fire Monkey от А до Я
  • 0

Android преобразование OleVariant в bool


antarey

Вопрос

Подскажите как в билдере для андроида правильно преобразовать OleVariant в bool?

if(dynamic_cast<TCheckBox*>(FMXObj))       ((TCheckBox*)FMXObj)->IsChecked= bool(nodNew->GetAttribute("data"));

на вин платформе все нормально, а на андроиде 

[bccaarm Error] SaveStateIni.cpp(97): ambiguous conversion for functional-style cast from 'System::OleVariant' to 'bool'
 
Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Вот

SaveStateIni.h

// ---------------------------------------------------------------------------


#ifndef SaveStateIniH
#define SaveStateIniH
// ---------------------------------------------------------------------------


#include <FMX.Forms.hpp>
#include <System.Classes.hpp>
#include <System.SysUtils.hpp>


#include <System.IOUtils.hpp>
#include <Xml.XMLIntf.hpp>
#include <Xml.XMLDoc.hpp>


#include <FMX.Calendar.hpp>
#include <FMX.NumberBox.hpp>
#include <FMX.SpinBox.hpp>
#include <FMX.ComboEdit.hpp>
#include <FMX.ComboTrackBar.hpp>


#include <sysvari.h>


// ---------------------------------------------------------------------------
class TSavaStateIni {
public:
void SaveFormState(TForm *forma);
void LoadFormState(TForm *forma);


};


#endif

SaveStateIni.cpp

// ---------------------------------------------------------------------------


#include <fmx.h>
#pragma hdrstop
#include "SaveStateIni.h"
// ---------------------------------------------------------------------------
#pragma package(smart_init)
const System::String SavePath = System::Ioutils::TPath::Combine
(System::Ioutils::TPath::GetDocumentsPath(),
System::Ioutils::TPath::GetFileNameWithoutExtension(ParamStr(0)) + ".xml");
TFmxObject *FMXObj;


void TSavaStateIni::SaveFormState(TForm *forma) {
TXMLDocument *XMLDocument = new TXMLDocument(Application);
XMLDocument->Active = true;
XMLDocument->Encoding = "UTF-8";
XMLDocument->Options = XMLDocument->Options << doNodeAutoIndent;
_di_IXMLNode parentNode, formaNode;
if (FileExists(SavePath)) {
XMLDocument->LoadFromFile(SavePath);
parentNode = XMLDocument->DocumentElement;
}
else {
parentNode = XMLDocument->AddChild("xml");
}


if (XMLDocument->DocumentElement->ChildNodes->FindNode(forma->Name))
formaNode = XMLDocument->DocumentElement->ChildNodes->FindNode
(forma->Name);
else
formaNode = parentNode->AddChild(forma->Name);


try {
for (int i = 0; i < forma->ComponentCount; i++) {
if (dynamic_cast<TFmxObject*>(forma->Components[i])) {
FMXObj = dynamic_cast<TFmxObject*>(forma->Components[i]);
_di_IXMLNode nodNew =
formaNode->ChildNodes->FindNode(FMXObj->Name);
if (!nodNew)
nodNew = formaNode->AddChild(FMXObj->Name);


if (dynamic_cast<TCheckBox*>(FMXObj))
nodNew->SetAttribute("data",
((TCheckBox*)FMXObj)->IsChecked);
if (dynamic_cast<TRadioButton*>(FMXObj))
nodNew->SetAttribute("data",
((TRadioButton*)FMXObj)->IsChecked);
if (dynamic_cast<TSwitch*>(FMXObj))
nodNew->SetAttribute("data", ((TSwitch*)FMXObj)->IsChecked);
if (dynamic_cast<TComboBox*>(FMXObj))
nodNew->SetAttribute("data",
((TComboBox*)FMXObj)->ItemIndex);
if (dynamic_cast<TMemo*>(FMXObj))
nodNew->SetAttribute("data", ((TMemo*)FMXObj)->Lines->Text);
if (dynamic_cast<TEdit*>(FMXObj))
nodNew->SetAttribute("data", ((TEdit*)FMXObj)->Text);
if (dynamic_cast<TCalendar*>(FMXObj))
nodNew->SetAttribute("data", ((TCalendar*)FMXObj)->Date);
if (dynamic_cast<TDateEdit*>(FMXObj))
nodNew->SetAttribute("data", ((TDateEdit*)FMXObj)->Date);
if (dynamic_cast<TTimeEdit*>(FMXObj))
nodNew->SetAttribute("data", ((TTimeEdit*)FMXObj)->Time);
if (dynamic_cast<TNumberBox*>(FMXObj))
nodNew->SetAttribute("data", ((TNumberBox*)FMXObj)->Value);
if (dynamic_cast<TSpinBox*>(FMXObj))
nodNew->SetAttribute("data", ((TSpinBox*)FMXObj)->Value);
if (dynamic_cast<TComboEdit*>(FMXObj)) {
nodNew->SetAttribute("data", ((TComboEdit*)FMXObj)->Text);
nodNew->SetAttribute("list",
((TComboEdit*)FMXObj)->Items->Text);
}
if (dynamic_cast<TComboTrackBar*>(FMXObj))
nodNew->SetAttribute("data",
((TComboTrackBar*)FMXObj)->Value);
if (dynamic_cast<TTrackBar*>(FMXObj))
nodNew->SetAttribute("data", ((TTrackBar*)FMXObj)->Value);
}
}
XMLDocument->SaveToFile(SavePath);
}
__finally {
XMLDocument->Free();
}
}


// ---------------------------------------------------------------------------
void TSavaStateIni::LoadFormState(TForm *forma) {
if (FileExists(SavePath)) {
TXMLDocument *XMLDocument = new TXMLDocument(Application);
try {
XMLDocument->Active = true;
XMLDocument->Encoding = "UTF-8";
XMLDocument->Options = XMLDocument->Options << doNodeAutoIndent;
XMLDocument->LoadFromFile(SavePath);
_di_IXMLNode formaNode =
XMLDocument->DocumentElement->ChildNodes->FindNode(forma->Name);


if (formaNode) {
for (int i = 0; i < forma->ComponentCount; i++) {
if (dynamic_cast<TFmxObject*>(forma->Components[i])) {
FMXObj =
dynamic_cast<TFmxObject*>(forma->Components[i]);
_di_IXMLNode nodNew =
formaNode->ChildNodes->FindNode(FMXObj->Name);
if (nodNew) {
if (dynamic_cast<TCheckBox*>(FMXObj))
((TCheckBox*)FMXObj)->IsChecked =
BOOL(nodNew->GetAttribute("data"));
if (dynamic_cast<TRadioButton*>(FMXObj))
((TRadioButton*)FMXObj)->IsChecked =
BOOL(nodNew->GetAttribute("data"));
if (dynamic_cast<TSwitch*>(FMXObj))
((TSwitch*)FMXObj)->IsChecked =
BOOL(nodNew->GetAttribute("data"));
if (dynamic_cast<TComboBox*>(FMXObj))
((TComboBox*)FMXObj)->ItemIndex =
nodNew->GetAttribute("data");
if (dynamic_cast<TMemo*>(FMXObj))
((TMemo*)FMXObj)->Lines->Text =
nodNew->GetAttribute("data");
if (dynamic_cast<TEdit*>(FMXObj))
((TEdit*)FMXObj)->Text =
nodNew->GetAttribute("data");
if (dynamic_cast<TCalendar*>(FMXObj))
((TCalendar*)FMXObj)->Date =
Date(nodNew->GetAttribute("data").AsType
(0x0007));
if (dynamic_cast<TDateEdit*>(FMXObj))
((TDateEdit*)FMXObj)->Date =
nodNew->GetAttribute("data");
if (dynamic_cast<TTimeEdit*>(FMXObj))
((TTimeEdit*)FMXObj)->Time =
nodNew->GetAttribute("data");
if (dynamic_cast<TNumberBox*>(FMXObj))
((TNumberBox*)FMXObj)->Value =
nodNew->GetAttribute("data");
if (dynamic_cast<TSpinBox*>(FMXObj))
((TSpinBox*)FMXObj)->Value =
nodNew->GetAttribute("data");
if (dynamic_cast<TComboEdit*>(FMXObj)) {
((TComboEdit*)FMXObj)->Text =
nodNew->GetAttribute("data");
((TComboEdit*)FMXObj)->Items->Text =
nodNew->GetAttribute("list");
}
if (dynamic_cast<TComboTrackBar*>(FMXObj))
((TComboTrackBar*)FMXObj)->Value =
nodNew->GetAttribute("data");
if (dynamic_cast<TTrackBar*>(FMXObj))
((TTrackBar*)FMXObj)->Value =
nodNew->GetAttribute("data");
}
}
}
}
}
__finally {
XMLDocument->Free();
}
}
}
// ---------------------------------------------------------------------------

_frmMain.cpp

// ---------------------------------------------------------------------------


#include <fmx.h>
#pragma hdrstop


#include "_frmMain.h"
#include "SaveStateIni.h"
// ---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.fmx"
TfrmMain *frmMain;
// ---------------------------------------------------------------------------


__fastcall TfrmMain::TfrmMain(TComponent* Owner) : TForm(Owner) {
}


// ---------------------------------------------------------------------------
void __fastcall TfrmMain::Button1Click(TObject *Sender) {
TSavaStateIni *st;
st->LoadFormState(frmMain);


}


// ---------------------------------------------------------------------------
void __fastcall TfrmMain::Button2Click(TObject *Sender) {
TSavaStateIni *st;
st->SaveFormState(frmMain);
}
// ---------------------------------------------------------------------------
Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...