Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Info Coronavirus/Vaccinare vs Fake News

Trafo microunde

Tethering Telefon -Xbox series S ...

Boxa Portabila - buget ~1.500 RON
 Sisteme second hand

Laser circular basculant cu glisare

Permis suspendat - intrebare

Care a fost primul film din istor...
 Inlocuire bloc pedalier

Sa-i actionez in judecata?

Google Stadia se Închide

Sorin Cimpeanu și-a dat demi...
 Mailer Daemon-am fost blocat?

Port popular?

A murit Alexandru Arsinel.

Identificare boala vita de vie du...
 

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: 29,110
  • Î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: 39,720
  • Î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: 39,720
  • Î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: 39,720
  • Î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: 39,720
  • Î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: 39,720
  • Î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: 39,720
  • Î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: 39,720
  • Î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

Neurochirurgie minim invazivă Neurochirurgie minim invazivă

"Primum non nocere" este ideea ce a deschis drumul medicinei spre minim invaziv.

Avansul tehnologic extraordinar din ultimele decenii a permis dezvoltarea tuturor domeniilor medicinei. Microscopul operator, neuronavigația, tehnicile anestezice avansate permit intervenții chirurgicale tot mai precise, tot mai sigure. Neurochirurgia minim invazivă, sau prin "gaura cheii", oferă pacienților posibilitatea de a se opera cu riscuri minime, fie ele neurologice, infecțioase, medicale sau estetice.

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