Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > файлы


Автор: MrDmitry 16.10.2009, 11:43
парни помогите, нужно записать данные в файл а затем дурнуть эти данные и вставить в поля edit
запись делаю так

Код

FILE *file;
 char* file_name = "user.dat";
 AnsiString login = loginEdit->Text;
 AnsiString pass = passEdit->Text;
 AnsiString str;

 str = "user:" + loginEdit->Text + "\nlogin:" + passEdit->Text;

 file = fopen( file_name, "w" );
 fputs( str.c_str(), file );
 fclose( file );


а вот с загруской проблемы

пока делаю так

Код

AnsiString string, login, pass;
Memo1->Lines->LoadFromFile("user.dat");
string = Memo1->Lines->Text;


memo1 скрытое поле

данные передаются в строку string
дальше планирую с начало найти и присвоить переменно login строки начиная с позиции после user:
затем перейти на другую строку и сделать тоже самое с pass

но т.к в c++ не очень шарю не знаю как это сделать ((
или может есть какой то вариант по проще??? помогите плз

Автор: Alca 16.10.2009, 12:03
Что-то я теряюсь...  smile

Добавлено через 2 минуты и 37 секунд
http://www.cplusplus.com/reference/iostream/ifstream/open/

Автор: mrbrooks 16.10.2009, 12:13
MrDmitry, Злобная смесь.

Код

#include <memory>
void __fastcall TMainForm::BtnSaveClick(TObject *Sender)
{
     std::auto_ptr<TStringList>list(new TStringList);
     list->Add("user: "+ loginEdit->Text);
     list->Add("password: " + passEdit->Text);
     list->SaveToFile("user.dat");
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::BtnLoadClick(TObject *Sender)
{
     std::auto_ptr<TStringList>list(new TStringList);
     list->LoadFromFile("user.dat"); 
     String user = list->Strings[0];
         String pass = list->Strings[1];
}
//---------------------------------------------------------------------------



Автор: MrDmitry 16.10.2009, 12:14
Цитата(Alca @ 16.10.2009,  12:03)
Что-то я теряюсь...  smile

Добавлено @ 12:06
http://www.cplusplus.com/reference/iostream/ifstream/open/

в смысле теряешся? 
что именно не понятно?

Код

FILE *file;
 char* file_name = "user.dat";
 AnsiString login = loginEdit->Text; 
 AnsiString pass = passEdit->Text;
 AnsiString str;
 str = "user:" + loginEdit->Text + "\nlogin:" + passEdit->Text; //формирую строку из логина и пароля
 file = fopen( file_name, "w" ); //открываю файл для записи
 fputs( str.c_str(), file ); //записываю ранне сформированную строку в файл
 fclose( file ); // закрываю файл


Добавлено через 7 минут и 25 секунд
Цитата(mrbrooks @ 16.10.2009,  12:13)
MrDmitry, Злобная смесь.

Код

#include <memory>
void __fastcall TMainForm::BtnSaveClick(TObject *Sender)
{
     std::auto_ptr<TStringList>list(new TStringList);
     list->Add("user: "+ loginEdit->Text);
     list->Add("password: " + passEdit->Text);
     list->SaveToFile("user.dat");
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::BtnLoadClick(TObject *Sender)
{
     std::auto_ptr<TStringList>list(new TStringList);
     list->LoadFromFile("user.dat"); 
     String user = list->Strings[0];
         String pass = list->Strings[1];
}
//---------------------------------------------------------------------------

спасибо ваш вариант гораздо лучшем чем мой со строками smile

Автор: mrbrooks 16.10.2009, 12:52
MrDmitry, вот вариант работы с двоичным файлом. Делал в CG 2009 с учетом Юникода. Хоть какая то защита. По хорошему - стоило бы применить шифрование.

Код

#include <memory>
//---------------------------------------------------------------------------
void __fastcall TMainForm::BtnSaveClick(TObject *Sender)
{
     std::auto_ptr<TStringList>list(new TStringList);
         list->Add("user: "+ loginEdit->Text);
         list->Add("password: " + passEdit->Text);
     std::auto_ptr<TFileStream>file(new TFileStream("user.dat",fmCreate));
     file->Write(list->Text.c_str(),list->Text.Length()*2);
}
//---------------------------------------------------------------------------

void __fastcall TMainForm::BtnLoadClick(TObject *Sender)
{
     std::auto_ptr<TFileStream>file(new TFileStream("user.dat",fmOpenRead));
     wchar_t *buf = new wchar_t[file->Size];
     file->Read(buf,file->Size);
     std::auto_ptr<TStringList>list(new TStringList);
     list->Text = String(buf);
         String user = list->Strings[0];
         String pass = list->Strings[1];
}
//---------------------------------------------------------------------------

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)