Programmazione.it v6.4
Ciao, per farti riconoscere devi fare il login. Non ti sei ancora iscritto? Che aspetti, registrati adesso!
Info Pubblicità Collabora Autori Sottoscrizioni Preferiti Bozze Scheda personale Privacy Archivio Libri Corsi per principianti Forum
Greenpeace
Forum :: Programmazione.it :: C++ :: [C++] generazione evento +salvataggio su file
Scritto da Elena Domina a.k.a. elenu il 31-01-2012 ore 10:52
Ciao! Ho scritto le seguenti funzione in Visual C++ che mi permette di salvare alcuni dati su un file txt dopo aver generato l'evento click:
  1. private: System::Void Button1_CheckedChanged(System::Object^  sender, System::EventArgs^  e) { 
  2. if (Button1->Checked == true)
  3. {String ^strDestinationFile ="input.txt";
  4. TextWriter ^tw = gcnew StreamWriter(strDestinationFile); 			 tw->WriteLine("Selected Sources"); 
  5. tw->WriteLine(Button1->Text); 
  6. tw->WriteLine("rn"); 
  7. tw->WriteLine(Notes->Text); 	
  8. tw->Close(); }   
  9. else { } 
  10. }
  11. private: System::Void Button2_CheckedChanged(System::Object^  sender, System::EventArgs^  e) { 
  12. if (Button2->Checked == true) {
  13. String ^strDestinationFile = "input.txt";   
  14. TextWriter ^tt = gcnew StreamWriter(strDestinationFile); 	               tt->WriteLine("Selected Sources");
  15. tt->WriteLine(Button2->Text); 
  16. tt->WriteLine("rn"); 
  17. tt->WriteLine(Noteslabel->Text); 
  18. tt->Close(); } 
  19. else {} 
  20. }
I problemi sono: non voglio salvare i dati utilizzando un nome specifico del file(input) ma voglio passare solo il puntatore a oggetto (in questo caso ^e); questo perché successivamente posso salvarli con qualsiasi nome in modo arbitrario. Come posso fare?
Poi: voglio aggiungere altri eventi (button 3, button4), ma utlizzando WriteLine() mi cancella quello che ho salvato precedentemente. Cosa uso?
Grazie tanteee!!!
Precedente: Apertura nuova finestra broswer
Successiva: [C+=] copiare file in + files
Intervento di Fabrizio Alonzi a.k.a. fabral09 del 01-02-2012 ore 11:48, Sora (FR)
Cavaliere
Cavaliere

(103 interventi)
Iscritto il 24-06-2004
Puoi dichiarare l'oggetto StreamWriter a livello di classe e poi inizializzarlo all'interno del costruttore della classe.
A quel punto puoi utilizzarlo all'interno dei tuoi eventi ma devi ricordarti di fargli eseguire il Flush e il Close all'interno di qualche evento. Può essere ad esempio l'evento di chiusura della form.
Per quanto riguarda il fatto che ti viene sovrascritto il contenuto del file ad ogni WriteLine ti basta aggiungere all'inizializzazione dell'oggetto StreamWriter il valore true per il parametro append. In quel modo dovrebbe accodarti il testo alla fine dello stream.

Esempio:
StreamWriter writer = new StreamWriter( pathDelFile, true );

Spero di averti aiutato ...

Ciao
Intervento di Fabrizio Alonzi a.k.a. fabral09 del 01-02-2012 ore 11:54, Sora (FR)
Cavaliere
Cavaliere

(103 interventi)
Iscritto il 24-06-2004
Scusa ti ho postato la sintassi C#. Nel tuo caso è

StreamWriter ^writer = gcnew StreamWriter(pathDelFile, true);
Intervento di Elena Domina a.k.a. elenu del 01-02-2012 ore 15:50, Torino (TO)
Plebeo
Plebeo
(19 interventi)
Iscritto il 04-10-2011
fabral09 ha scritto:
Scusa ti ho postato la sintassi C#. Nel tuo caso è

StreamWriter ^writer = gcnew StreamWriter(pathDelFile, true);



Non ho capito molto bene come fare il primo punto.
Mi puoi scrivere un esempio all'interno del mio codice.
Grazie!!!
Intervento di Fabrizio Alonzi a.k.a. fabral09 del 02-02-2012 ore 08:50, Sora (FR)
Cavaliere
Cavaliere

(103 interventi)
Iscritto il 24-06-2004
Allora, vedo che nel tuo codice usi crei l'oggetto
TextWriter ^tw all'interno di ogni evento. Invece di fare così
ti conviene dichiararlo a livello di classe (che suppongo nel tuo caso sia una classe derivata da Form). A quel punto l'inizializzazione
(ovvero tw = gcnew StreamWriter(strDestinationFile);) gliela fai fare all'interno del costruttore della classe che ospitano i 2 eventi dei pulsanti.
Dovrebbe esserci un metodo del tipo:

public:

MiaForm::MiaForm()
{
}

dove MiaForm è il nome della classe della form in cui hai inserito i pulsanti. Alla fine dovresti avere una cosa tipo:

public:

TextWriter ^tw;
String ^strDestinationFile;

MiaForm::MiaForm()
{
strDestinationFile = "input.txt";
tw = gcnew StreamWriter(strDestinationFile);
}


Purtroppo quì sul pc aziendale nn ho Visual C++ installato ma se vuoi inviami una mail a fabral09@libero.it e sabato appena posso cerco di inviarti un codice C++/CLI di esempio.
Intervento di Elena Domina a.k.a. elenu del 02-02-2012 ore 18:14, Torino (TO)
Plebeo
Plebeo
(19 interventi)
Iscritto il 04-10-2011
fabral09 ha scritto:
Allora, vedo che nel tuo codice usi crei l'oggetto
TextWriter ^tw all'interno di ogni evento. Invece di fare così
ti conviene dichiararlo a livello di classe (che suppongo nel tuo caso sia una classe derivata da Form). A quel punto l'inizializzazione
(ovvero tw = gcnew StreamWriter(strDestinationFile);) gliela fai fare all'interno del costruttore della classe che ospitano i 2 eventi dei pulsanti.
Dovrebbe esserci un metodo del tipo:

public:

MiaForm::MiaForm()
{
}

dove MiaForm è il nome della classe della form in cui hai inserito i pulsanti. Alla fine dovresti avere una cosa tipo:

public:

TextWriter ^tw;
String ^strDestinationFile;

MiaForm::MiaForm()
{
strDestinationFile = "input.txt";
tw = gcnew StreamWriter(strDestinationFile);
}


Purtroppo quì sul pc aziendale nn ho Visual C++ installato ma se vuoi inviami una mail a fabral09@libero.it e sabato appena posso cerco di inviarti un codice C++/CLI di esempio.



Grazie tanteee!!! Ti manderó un email.!
Copyright Programmazione.it™ 1999-2013. Alcuni diritti riservati. Testata giornalistica iscritta col n. 569 presso il Tribunale di Milano in data 14/10/2002. Pagina generata in 0.287 secondi.