C++ porovnavacie operatory

Programovacie jazyky, rady, poradňa...
Kamik
Light Expert
Light Expert
Príspevky: 65
Registrovaný: 28 jan 2008, 16:30

C++ porovnavacie operatory

Príspevok od používateľa Kamik »

Zdravim vytvoril som tento alarm ale problem je ze v podmienke
if (textBox1->Text < DateTime::Now.ToLongTimeString()) mi to hlasi chybu
error C2676: binary '>' : 'System::String ^' does not define this operator or a conversion to a type acceptable to the predefined operator
vedel by mi niekto poradit co treba spravit ?

Kód: Vybrať všetko

#pragma once

namespace Alarmclock {

	using namespace System;
	using namespace System::ComponentModel;
	using namespace System::Collections;
	using namespace System::Windows::Forms;
	using namespace System::Data;
	using namespace System::Drawing;

	/// <summary>
	/// Summary for Form1
	/// </summary>
	public ref class Form1 : public System::Windows::Forms::Form
	{
	public:
		Form1(void)
		{
			InitializeComponent();
			//
			//TODO: Add the constructor code here
			//
		}

	protected:
		/// <summary>
		/// Clean up any resources being used.
		/// </summary>
		~Form1()
		{
			if (components)
			{
				delete components;
			}
		}
	private: System::Windows::Forms::Button^  button1;
	protected: 
	private: System::Windows::Forms::Button^  button2;
	private: System::Windows::Forms::Timer^  timer1;
	private: System::Windows::Forms::Timer^  timer2;
	private: System::Windows::Forms::Timer^  timer3;
	private: System::Windows::Forms::Label^  label1;
	private: System::Windows::Forms::TextBox^  textBox1;


	private: System::ComponentModel::IContainer^  components;

	private:
		/// <summary>
		/// Required designer variable.
		/// </summary>


#pragma region Windows Form Designer generated code
		/// <summary>
		/// Required method for Designer support - do not modify
		/// the contents of this method with the code editor.
		/// </summary>
		void InitializeComponent(void)
		{
			this->components = (gcnew System::ComponentModel::Container());
			this->button1 = (gcnew System::Windows::Forms::Button());
			this->button2 = (gcnew System::Windows::Forms::Button());
			this->timer1 = (gcnew System::Windows::Forms::Timer(this->components));
			this->timer2 = (gcnew System::Windows::Forms::Timer(this->components));
			this->timer3 = (gcnew System::Windows::Forms::Timer(this->components));
			this->label1 = (gcnew System::Windows::Forms::Label());
			this->textBox1 = (gcnew System::Windows::Forms::TextBox());
			this->SuspendLayout();
			// 
			// button1
			// 
			this->button1->Location = System::Drawing::Point(25, 31);
			this->button1->Name = L"button1";
			this->button1->Size = System::Drawing::Size(104, 23);
			this->button1->TabIndex = 0;
			this->button1->Text = L"Nastavit Alarm";
			this->button1->UseVisualStyleBackColor = true;
			this->button1->Click += gcnew System::EventHandler(this, &Form1::button1_Click);
			// 
			// button2
			// 
			this->button2->Location = System::Drawing::Point(161, 31);
			this->button2->Name = L"button2";
			this->button2->Size = System::Drawing::Size(125, 23);
			this->button2->TabIndex = 1;
			this->button2->Text = L"Zastavit Alarm";
			this->button2->UseVisualStyleBackColor = true;
			this->button2->Click += gcnew System::EventHandler(this, &Form1::button2_Click);
			// 
			// timer1
			// 
			this->timer1->Tick += gcnew System::EventHandler(this, &Form1::timer1_Tick);
			// 
			// timer2
			// 
			this->timer2->Tick += gcnew System::EventHandler(this, &Form1::timer2_Tick);
			// 
			// timer3
			// 
			this->timer3->Interval = 500;
			this->timer3->Tick += gcnew System::EventHandler(this, &Form1::timer3_Tick);
			// 
			// label1
			// 
			this->label1->AutoSize = true;
			this->label1->Location = System::Drawing::Point(34, 91);
			this->label1->Name = L"label1";
			this->label1->Size = System::Drawing::Size(35, 13);
			this->label1->TabIndex = 2;
			this->label1->Text = L"label1";
			// 
			// textBox1
			// 
			this->textBox1->Location = System::Drawing::Point(102, 91);
			this->textBox1->Name = L"textBox1";
			this->textBox1->Size = System::Drawing::Size(100, 20);
			this->textBox1->TabIndex = 3;
			// 
			// Form1
			// 
			this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
			this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
			this->ClientSize = System::Drawing::Size(298, 136);
			this->Controls->Add(this->textBox1);
			this->Controls->Add(this->label1);
			this->Controls->Add(this->button2);
			this->Controls->Add(this->button1);
			this->Name = L"Form1";
			this->Text = L"Form1";
			this->Load += gcnew System::EventHandler(this, &Form1::Form1_Load);
			this->ResumeLayout(false);
			this->PerformLayout();

		}
#pragma endregion
	private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) 
			 {
				 timer1->Enabled = true;
			 }
			
private: System::Void timer1_Tick(System::Object^  sender, System::EventArgs^  e) 
		 {
          label1->Text = DateTime::Now.ToLongTimeString();//aktualny cas
		 }
private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) 
		 {
			 timer2->Enabled = true;
		 }
private: System::Void timer2_Tick(System::Object^  sender, System::EventArgs^  e)
		 {
		    
				if (textBox1->Text < DateTime::Now.ToLongTimeString()) 
				{
				timer3->Enabled = true;
				}
			
			
		 }
private: System::Void timer3_Tick(System::Object^  sender, System::EventArgs^  e) 
		 {
			Console::Beep();
		 }
private: System::Void button2_Click(System::Object^  sender, System::EventArgs^  e) 
		 {
			timer3->Enabled = false;   
		 }
};
}
manager666
Star
Star
Používateľov profilový obrázok
Príspevky: 642
Registrovaný: 12 aug 2007, 13:29

Re: Visual Basic porovnavacie operatory

Príspevok od používateľa manager666 »

Po prve, toto je napisane v C++ a nie vo Visual Basicu. :shock:
Po druhe, kompilator ti jasne hovori, kde je chyba...nemas nadefinovane operatory pre porovnanie...Ich nadefinovanie tvoj problem vyriesi...pripadne si tie porovnavane cleny pretypuj na ciselny typ(alebo strukturu TimeSpan,atd) resp. ich pouzivaj, kde tieto operatory pre porovnanie definovane su... :wink:
Kamik
Light Expert
Light Expert
Príspevky: 65
Registrovaný: 28 jan 2008, 16:30

Re: Visual Basic porovnavacie operatory

Príspevok od používateľa Kamik »

manager666 napísal:Po prve, toto je napisane v C++ a nie vo Visual Basicu. :shock:
Po druhe, kompilator ti jasne hovori, kde je chyba...nemas nadefinovane operatory pre porovnanie...Ich nadefinovanie tvoj problem vyriesi...pripadne si tie porovnavane cleny pretypuj na ciselny typ(alebo strukturu TimeSpan,atd) resp. ich pouzivaj, kde tieto operatory pre porovnanie definovane su... :wink:
mohol by si mi prosim ta napisat ako tie cleny pretypujem
manager666
Star
Star
Používateľov profilový obrázok
Príspevky: 642
Registrovaný: 12 aug 2007, 13:29

Re: C++ porovnavacie operatory

Príspevok od používateľa manager666 »

ale samozrejme, ak ty mi napises, ako sa da zmylit programovaci jazyk, v ktorom programujes... :shock:
Kamik
Light Expert
Light Expert
Príspevky: 65
Registrovaný: 28 jan 2008, 16:30

Re: C++ porovnavacie operatory

Príspevok od používateľa Kamik »

manager666 napísal:ale samozrejme, ak ty mi napises, ako sa da zmylit programovaci jazyk, v ktorom programujes... :shock:
tak som uplny laik v programovaní :D asi preto

na to pretypovanie som už prišiel ale už mam iný problém

Kód: Vybrať všetko

double c = System::Convert::ToDouble(kanal1->Text);
double d = System::Convert::ToDouble(kanal2->Text);
double k = c;
a potrebujem dosiahnut aby som cez comboBox mohol menit hodnotu c za d
manager666
Star
Star
Používateľov profilový obrázok
Príspevky: 642
Registrovaný: 12 aug 2007, 13:29

Re: C++ porovnavacie operatory

Príspevok od používateľa manager666 »

Priradenie hodnoty premennej typu double zadanej pomocou comboboxu:

Kód: Vybrať všetko

private: System::Void comboBox1_TextChanged(System::Object^  sender, System::EventArgs^  e)
{
   double::TryParse(comboBox1->Text,premenna);
}
Ak ti staci dat uzivatelovi na vyber iba vopred definovane moznosti, tak cez:

Kód: Vybrať všetko

comboBox1->Items->Add(premenna.ToString());
popridavas polozky a obsluzis udalost SelectedIndexChanged+comboBoxu nastavis vlastnost DropDownStyle na hodnotu DropDownList.
Kamik
Light Expert
Light Expert
Príspevky: 65
Registrovaný: 28 jan 2008, 16:30

Re: C++ porovnavacie operatory

Príspevok od používateľa Kamik »

manager666 napísal:Priradenie hodnoty premennej typu double zadanej pomocou comboboxu:

Kód: Vybrať všetko

private: System::Void comboBox1_TextChanged(System::Object^  sender, System::EventArgs^  e)
{
   double::TryParse(comboBox1->Text,premenna);
}
Ak ti staci dat uzivatelovi na vyber iba vopred definovane moznosti, tak cez:

Kód: Vybrať všetko

comboBox1->Items->Add(premenna.ToStrig())
popridavas polozky a obsluzis udalost SelectedIndexChanged+comboBoxu nastavis vlastnost DropDownStyle na hodnotu DropDownList.

ďakujem pekne za odpoveď ale vyriešil som to už inak :)
Napísať odpoveď