Zapis AnsiString do pliku txt

0

Od niedawna przerzuciłem się z wxDeva C++ na darmowe C++ Builder 10.3 Community Edition. Mam jednak problem: stworzyłem plik txt w folderze z programem. Dodałem bibliotekę <fstream> i zastosowałem mechanizm zapisu do pliku oraz ustawiłem zamykanie pliku w momencie zamykania okna programu. Kompiluje i nie wyrzuca błędów. Program otwiera się normalnie wszystko działa. Po zamknięciu okna i otwarciu pliku txt nie widzę jednak wprowadzonych danych. Ktoś wie co może być nie tak?

Kod który według mnie sprawia problemy:

#include <fstream>
#include <iostream>
using namespace std;

void __fastcall TStart::FormShow(TObject *Sender)
{
name_file.open("User.txt" , ios::in | ios::out );
//...
}

void __fastcall TStart::Name_editKeyPress(TObject *Sender, System::WideChar &Key)

{

	if (Key==13)
	{
	AnsiString name=Start->Name_edit->Text;
	name_file<<name << endl;
	Start->Name_label->Visible=false;
	Start->Name_edit->Visible=false;
	}
}
void __fastcall TStart::FormClose(TObject *Sender, TCloseAction &Action)
{
name_file.close();
}
//---------------------------------------------------------------------------
2

A otworzył ci się ten plik?
co zwraca name_file.good()?

0
MarekR22 napisał(a):

A otworzył ci się ten plik?
co zwraca name_file.good()?
name_file.good() chyba zwraca wartość true bo pole Name_edit się otwiera i znika po naciśnięciu entera

1

Czym jest name_file? Czy otwierasz ten plik w ogóle w odpowiednim katalogu?

0

name_file to nazwa zmiennej globalnej typu fstream

otwieram ten plik w katalogu z skompilowanym programem

1

Dlaczego jest to zmienna globalna? Dlaczego fstream, a nie ofstream? Tak czy inaczej, sprawdź czy nie zapisuje w innym katalogu niż się spodziewałeś.

0

Sprawdziłem na dysku mam tylko jeden plik o takiej nazwie

Edit:
zastanawiam się czy z niepowodzeniem operacji zapisu mogą być związane te linie kodu:

do
{
getline(name_file, lines[i]);
i++;
}
while (i<10);

if(lines[0].size()==0)
{
	Start->Name_label->Visible=true;
	Start->Name_edit->Visible=true;
}
else
name=lines[0];
0

Dobrze, już się udało wystarczyło zadeklarować dwie zmienne - 1 ofstream 2-ifstream i się wszystko pięknie zapisuje

1 użytkowników online, w tym zalogowanych: 0, gości: 1