antarey Опубликовано 21 октября, 2014 Поделиться Опубликовано 21 октября, 2014 Подскажите как в билдере для андроида правильно преобразовать 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 estra Опубликовано 21 октября, 2014 Поделиться Опубликовано 21 октября, 2014 На Delphi так: procedure TMainForm.CornerButton1Click(Sender: TObject); var b: OleVariant; begin b := False; ShowMessage( VarAsType( b, varBoolean ) ); end; на билдер, надеюсь, сами переведете. Цитата Ссылка на комментарий
0 antarey Опубликовано 21 октября, 2014 Автор Поделиться Опубликовано 21 октября, 2014 estra [bccaarm Error] SaveStateIni.cpp(97): cannot cast 'System::OleVariant' to its protected base class 'System::Variant' sysvari.h(2920): declared protected here Цитата Ссылка на комментарий
0 estra Опубликовано 21 октября, 2014 Поделиться Опубликовано 21 октября, 2014 Тогда не знаю, билдером не пользуюсь. Может разработчики чего подскажут... Цитата Ссылка на комментарий
0 antarey Опубликовано 21 октября, 2014 Автор Поделиться Опубликовано 21 октября, 2014 Да что-то они последнее время молчат Цитата Ссылка на комментарий
0 antarey Опубликовано 21 октября, 2014 Автор Поделиться Опубликовано 21 октября, 2014 Та же фигня и с [bccaarm Error] SaveStateIni.cpp(102): no viable conversion from 'System::OleVariant' to 'System::TDate' [bccaarm Error] SaveStateIni.cpp(103): no viable conversion from 'System::OleVariant' to 'System::TTime' Цитата Ссылка на комментарий
0 VladimirS Опубликовано 22 октября, 2014 Поделиться Опубликовано 22 октября, 2014 А что в исходниках? Цитата Ссылка на комментарий
0 antarey Опубликовано 22 октября, 2014 Автор Поделиться Опубликовано 22 октября, 2014 Вот 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); } // --------------------------------------------------------------------------- Цитата Ссылка на комментарий
Вопрос
antarey
Подскажите как в билдере для андроида правильно преобразовать OleVariant в bool?
на вин платформе все нормально, а на андроиде
Ссылка на комментарий
7 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.