Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Incalzire casa fara gaz/lemne

Incalzire in pardoseala etapizata

Suprataxa card energie?!

Cum era nivelul de trai cam din a...
 probleme cu ochelarii

Impozite pe proprietati de anul v...

teava rezistenta panou apa calda

Acces in Curte din Drum National
 Sub mobila de bucatarie si sub fr...

Rezultat RMN

Numar circuite IPAT si prindere t...

Pareri brgimportchina.ro - teapa ...
 Lucruri inaintea vremurilor lor

Discuții despre TVR Sport HD.

Cost abonament clinica privata

Tremura toata, dar nu de la ro...
 

Cum pastrez/retin/memorez date?

- - - - -
  • Please log in to reply
16 replies to this topic

#1
rares_12

rares_12

    Junior Member

  • Grup: Members
  • Posts: 92
  • Înscris: 04.12.2007
Salutare!
De azi dimineata am inceput sa lucrez la un proiect in Visual C++ 2010 Express. Este prima mea incercare de a face un proiect de acest fel.
Programul face niste calcule simple asupra unor date de intrare ( sau cel putin asa ar trebui ). In C++ l-am facut si ruleaza foarte bine, insa cand vine vorba sa-l fac in visual, nu mai e asa simplu.
Tot ce vreau sa fac pentru inceput, este sa introduc, pe rand, intr-o casuta text un numar n de valori (n este precizat in prealabil intr-o casuta text separata), dupa care apasand enter dupa fiecare in parte, programul le preia. Vreau ca aceste numere sa fie retinute intr-un fisier text, de unde apoi ar putea fi citite si eventual prelucrate in continuare.
A doua varianta, care este aproape identica celei anterioare, ar fi ca in loc sa apas enter dupa fiecare introducere a unei valori, sa introduc direct toate valorile separate prin spatiu, dupa care apas un singur enter pentru fiecare. ( varianta aceasta fiind de preferat )

Din cate am vazut si am incercat, posibilitatea folosirii vectorilor nu exista...Ar fi fost foarte simplu. As fi memorat datele in vectorul de lungime de la 0 la n-1 folosindu-ma de instructiunea FOR dupa care as fi efectuat operatiile necesare. Dar dupa cum se vede Visual C++ nu se lasa asa usor.
Am citit undeva ca ar merge totusi folosirea unui vector declarat global in fisierul .cpp al Visual C++ si apoi declarat extern in fisierul Form.h, dar si varianta aceasta a esuat ( sau poate am gresit eu cu ceva, dar nu vad cu ce ).

As dori sa imi spuneti va rog doar ce metoda sa folosesc pentru a memora acele date pe care le introduc. Fie ca le introduc intr-un fisier text, fie ca le memorez intr-un vector.
Va multumesc anticipat! :)

#2
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,194
  • Înscris: 24.02.2007
Cum sa nu existe posibilitatea folosirii vectorilor? Mai inca o gramada de clase in plus din partea .NET pentru ei.

Edited by dani.user, 05 January 2012 - 21:26.


#3
rares_12

rares_12

    Junior Member

  • Grup: Members
  • Posts: 92
  • Înscris: 04.12.2007
Am cautat ore in sir astazi si nu prea am gasit nimic... Poate nu am stiut ce sa caut, poate nu am cautat bine, orice este posibil.

Care este sintaxa folosirii vectorilor de exemplu? ( intreb de ei pentru ca mi se pare cea mai simpla metoda ) La fel ca in C++ nu cred ca este...pentru ca am incercat.

#4
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,570
  • Înscris: 30.07.2003
Eu nu pricep ce legatura are  VC++ cu VB (unde ai postat) !
Iar C++ e acelasi indiferent cine a produs IDE-ul si compilatorul.

Edited by neagu_laurentiu, 05 January 2012 - 21:52.


#5
rares_12

rares_12

    Junior Member

  • Grup: Members
  • Posts: 92
  • Înscris: 04.12.2007
Stiu ca C++ e acelasi oriunde, eu am spus ca poate am omis eu ceva in a scrie corect codul.
In Visual Basic este posibila memorarea datelor in acest fel? Daca da, mi-ai putea spune te rog? As putea schimba compilatorul pentru a imi usura munca ( daca este mai usor sa lucrez in Visual Basic ).

#6
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,570
  • Înscris: 30.07.2003
Notiunea de vector e prezenta in ambele limbaje. Tu in care lucrezi ca nu inteleg din exprimarea ta ?

#7
rares_12

rares_12

    Junior Member

  • Grup: Members
  • Posts: 92
  • Înscris: 04.12.2007
Incerc sa lucrez in Visual C++ Express, dar sunt incepator.

#8
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,570
  • Înscris: 30.07.2003
Pai ai zis ca ai folosit vectori in C++ ! Ce tip de proiect faci in VS ?

#9
rares_12

rares_12

    Junior Member

  • Grup: Members
  • Posts: 92
  • Înscris: 04.12.2007
Proiectul este de tip Windows Forms Application. Am uitat sa mentionez, imi cer scuze.

#10
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,570
  • Înscris: 30.07.2003
Pai foloseste asa cum stii din C++.
Tu acolo ai un proiect .NET pentru limbajul C++/CLI. Framework-ul are clase dedicate pentru asa ceva, sunt niste template-uri pentru array dar acum nu-s acestea de tine (desi poti studia documentatia). Acest limbaj include pe "vechiul C++" care-l stii, asa ca scrie cum ai invatat, nu te impiedica nimeni si nimic.

Edited by neagu_laurentiu, 05 January 2012 - 22:23.


#11
rares_12

rares_12

    Junior Member

  • Grup: Members
  • Posts: 92
  • Înscris: 04.12.2007
Daca scriu exact asa cum stiu in C++, cand pur si simplu declar vectorul ( int v[10]; exact ca si in C++ ) imi da eroarea asta: error C4368: cannot define 'v' as a member of managed 'bla::Form1': mixed types are not supported. ( proiectul se numeste ''bla'' )
Este posibil sa fi facut declararea intr-un loc gresit? De obicei in C++ declararea se facea fie in main fie inafara lui pe post de variabila globala. Aici chiar nu imi dau seama unde as putea sa declar vectorul in asa fel incat sa mearga.

Edited by rares_12, 05 January 2012 - 22:29.


#12
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,570
  • Înscris: 30.07.2003
Cauta in proprietati la proiect sa ai /crl nu /clr:pure : http://msdn.microsof...y/k8d11d4s.aspx
Daca vrei C++/CLI (desi banuiesc nu stii ce vrei) atunci:
http://msdn.microsof.....28VS.80).aspx
http://www.cplusplus...um/windows/3279
http://www.codeproje...kcppcli.aspx#A5
http://www.codeproje...pcliarrays.aspx

Uite unde sa schimbi: http://www.tenouk.co...nsoleapp016.png

#13
rares_12

rares_12

    Junior Member

  • Grup: Members
  • Posts: 92
  • Înscris: 04.12.2007
Multumesc foarte mult pentru raspuns! Am modificat la proprietati si acum este /clr. Dar este aceeasi problema...cred ca am gresit cu ceva.
Am postat codul mai jos. Partile in bold sunt ce am adaugat eu la codul deja generat automat de compilator atunci cand am creat proiectul.
Din cate vad C++/CLI este foarte foarte complicat...chiar ca nu vreau asa ceva :) . Iti multumesc foarte mult pentru recomandare.

Form-ul contine 3 elemente: un label ( lblText ), un textbox ( txtBox ) si un buton ( btnApasa ).

Variabila a este o variabila ce ma ajuta sa iau continutul din textbox, sa il convertesc intr-un numar intreg, dupa care sa schimb textul label-ului cu acel numar ( labelul l-am pus orientativ, deoarece programul de abia il incepusem )
Tot ce ar trebui sa faca acest program ar fi sa citeasca numerele pe care eu le introduc in textbox, sa le salveze si sa le si scrie in label.

Erorile sunt:
error C3845: 'bla::Form1::i': only static data members can be initialized inside a ref class or value type
    error C4368: cannot define 'v' as a member of managed 'bla::Form1': mixed types are not supported


#pragma once

namespace bla {

	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::TextBox^  txtBox;
	protected: 
	private: System::Windows::Forms::Button^  bntApasa;

	private:
		/// <summary>
		/// Required designer variable.
		/// </summary>
		System::ComponentModel::Container ^components;

	
	private: System::Windows::Forms::Label^  lblText;


	[b]private: 
		int a,i=0,v[10];[/b]

#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->txtBox = (gcnew System::Windows::Forms::TextBox());
			this->bntApasa = (gcnew System::Windows::Forms::Button());
			this->lblText = (gcnew System::Windows::Forms::Label());
			this->SuspendLayout();
			// 
			// txtBox
			// 
			this->txtBox->Location = System::Drawing::Point(95, 99);
			this->txtBox->Name = L"txtBox";
			this->txtBox->Size = System::Drawing::Size(100, 20);
			this->txtBox->TabIndex = 0;
			// 
			// bntApasa
			// 
			this->bntApasa->Location = System::Drawing::Point(95, 157);
			this->bntApasa->Name = L"bntApasa";
			this->bntApasa->Size = System::Drawing::Size(75, 23);
			this->bntApasa->TabIndex = 1;
			this->bntApasa->Text = L"button1";
			this->bntApasa->UseVisualStyleBackColor = true;
			this->bntApasa->Click += gcnew System::EventHandler(this, &Form1::bntApasa_Click);
			// 
			// lblText
			// 
			this->lblText->AutoSize = true;
			this->lblText->Location = System::Drawing::Point(95, 32);
			this->lblText->Name = L"lblText";
			this->lblText->Size = System::Drawing::Size(90, 13);
			this->lblText->TabIndex = 2;
			this->lblText->Text = L"Nu A Fost Apasat";
			// 
			// Form1
			// 
			this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
			this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
			this->ClientSize = System::Drawing::Size(284, 262);
			this->Controls->Add(this->lblText);
			this->Controls->Add(this->bntApasa);
			this->Controls->Add(this->txtBox);
			this->Name = L"Form1";
			this->Text = L"Form1";
			this->ResumeLayout(false);
			this->PerformLayout();

		}
	

#pragma endregion
	
	[b]private: System::Void bntApasa_Click(System::Object^  sender, System::EventArgs^  e) {
				a=Convert::ToInt32(txtBox->Text);
				lblText->Text=Convert::ToString(a);
				v[i]=a;
				i++;
			 }[/b]
	};
}

Edited by rares_12, 05 January 2012 - 23:49.


#14
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,570
  • Înscris: 30.07.2003
Ori declari clase unmanaged pentru scopul tau sau declari global acele variabile, nu in acea clasa managed.
Mai ai si directiva #pragma unmanaged.
Altfel daca te incurci cu C++/CLI foloseste template-urile respective din exemple, aloci cu gcnew si toate nebunia (inventata de MS).
Pentru .NET s-a inventat C# sau VB.NET. C++/CLI e pentru cod mixt dar scris de cei cu experienta.

Edited by neagu_laurentiu, 06 January 2012 - 00:08.


#15
rares_12

rares_12

    Junior Member

  • Grup: Members
  • Posts: 92
  • Înscris: 04.12.2007
Deci int a,i=0,v[10]; le declar global si o sa mearga? E destul de greu pentru mine sa imi si dau seama care e zona de declarare a variabilelor globale in toata nebunia asta :wacko: ...
Am incercat sa inteleg macar putin toata chestia cu gcnew si restul...m-a cam facut sa fug de C++/CLI :).

Edited by rares_12, 06 January 2012 - 00:14.


#16
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,570
  • Înscris: 30.07.2003
Separa codul C++ de cel C++/CLI iar intre cele doua tehnologii doar faci apeluri.

#17
rares_12

rares_12

    Junior Member

  • Grup: Members
  • Posts: 92
  • Înscris: 04.12.2007
Deci ma folosesc de niste functii construide de mine pentru a face apeluri intre cele doua limbaje?

Anunturi

Second Opinion Second Opinion

Folosind serviciul second opinion ne puteți trimite RMN-uri, CT -uri, angiografii, fișiere .pdf, documente medicale.

Astfel vă vom putea da o opinie neurochirurgicală, fără ca aceasta să poată înlocui un consult de specialitate. Răspunsurile vor fi date prin e-mail în cel mai scurt timp posibil (de obicei în mai putin de 24 de ore, dar nu mai mult de 48 de ore). Second opinion – Neurohope este un serviciu gratuit.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate