Toon posts:

[C++/CLI] Opslaan bestand doet het niet *

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi

Sinds kort ben ik bezig met het maken van een klein programma in C++. Nu moet die een tekstje inlezen als het form laadt, en wegschrijven als er een wijziging aangebracht wordt aan de tekst (helemaal opnieuw het bestand schrijven eigenlijk)

Voor het uitlezen gebruik ik de code
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
    private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
                 std::ifstream myFile;
                 myFile.open("C:\file1.txt");
                 if(myFile.is_open()){
                     richTextBox1->Text = "";
                     while (!myFile.eof()){
                         richTextBox1->Text += myFile.get();
                     }
                 myFile.close();
                 }else{
                    richTextBox1->Text = "Type your text here.";
                 }
             }



En voor het opslaan gebruik ik de code
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
private: System::Void richTextBox1_TextChanged(System::Object^  sender, System::EventArgs^  e) {
             //create filestream
             std::ofstream newFile;

             //declare vars
             System::String^ data;
             int i;
             int ia;
             char *adata;

             //give the vars values
             data = richTextBox1->Text;
             i = 0;
             ia = Convert::ToChar(data->Length-1);
             newFile.open("C:\file1.txt", std::ios::trunc);
             if(newFile.is_open()){
                 while (i <= ia){
                    adata = (char*)Convert::ToChar(data->Substring(i,1));
                    newFile.write(adata,ia);
                    i++;
                 }
                 newFile.close();
             }else{
                richTextBox1->Text = "error!";
             }
         }


Weet iemand raad? Hiervoor had ik ook al geprobeerd zonder C:\ trouwens ;)
En de compiler geeft geen build errors
Overigens heb ik in de search ook al verschillende zoekacties gepoogd, zonder resultaat :(

[ Voor 7% gewijzigd door Verwijderd op 29-07-2006 16:00 ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 13-02 18:54

.oisyn

Moderator Devschuur®

Demotivational Speaker

Backslashes moet je escapen.
Deze taal heet C++/CLI overigens ;)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
Ok nu geeft hij geen errortext meer. Maar als ik het txt bestand controleer is er nog altijd geen enkele letter tekst ingevoegd. Enig idee hoe dat moet opgelost worden? :X

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 13-02 18:54

.oisyn

Moderator Devschuur®

Demotivational Speaker

Wat moet dit voorstellen?
ia = Convert::ToChar(data->Length-1);

Ook snap ik niet waarom je 'm naar een char* cast op regel 18. Misschien moet je nog eens goed kijken wat Convert::ToChar nou eigenlijk doet.

Wat je eigenlijk wilt is gewoon je string encoden naar een ascii byte array ( System::Text::Encoding::ASCII->GetBytes(string) ), zodat je die vervolgens weg kan schrijven. Vervolgens kun je met pin_ptr er een native char* krijgen dat mapt op die array.

[ Voor 99% gewijzigd door .oisyn op 29-07-2006 17:07 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
Ik cast 'm naar een char omdat die functie dat vraagt voor parameter 1. Je methode ga ik nu even uitproberen.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 13-02 18:54

.oisyn

Moderator Devschuur®

Demotivational Speaker

Je cast een char naar een char pointer. Dat gaat dus niet zomaar.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 10-12-2025
Yep. En je gebruikt eof() ook als een glazen bol. eof() vertelt alleen waarom de laatste operatie mislukte, niet of de volgende gaat lukken.

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


Verwijderd

Topicstarter
Ok het werkt nu weer. Bedankt :)
Pagina: 1