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


Автор: m_averick 23.4.2007, 12:01
Люди, помогите кто чем может. Я лично ничего не понимаю. Вроде написал код верно, а происходит всякая фигня. Первый раз строки читпется, только с 0 в конце, а второй раз вместо записанной строки прсто читается 1.  :dash1 
Код

        AnsiString Text = "Thit text must be loaded to file";
        //AnsiString Text = "Abs defgkfjsdghkjfhgkjfsgfbgfjg";
        int Len = Text.Length();
        int iTempLength = sizeof(int);
        TFileStream * FileStream = new TFileStream("fa.dat",fmCreate);
        FileStream->Write(&Len,iTempLength);
        FileStream->Write(&Text,Len);
        FileStream->Free();


считывания использую
Код

        AnsiString Text = "";
        int Len = Text.Length();
        int iTempLength = sizeof(int);
        TFileStream * FileStream = new TFileStream("fa.dat",fmOpenRead);
        //FileStream->Seek(0,soFromBeginning);
        FileStream->ReadBuffer(&Len,iTempLength);
        FileStream->ReadBuffer(&Text,Len);
        Edit1->Text = Text;
        FileStream->Free();


ечсть и второй вариант с использованием TMemoryStream.
Код

AnsiString Text = "";
        int Len = Text.Length();
        int iTempLength = sizeof(int);
        TMemoryStream * MemStream = new TMemoryStream();
        MemStream->LoadFromFile("fa.dat");
        //MemStream->Seek(0,soFromBeginning);
        MemStream->Read(&Len,iTempLength);
        char * string = new char[Len];
        MemStream->Read(&Text,Len);
        Edit1->Text = Text;
        MemStream->Free();


чтение аналогично первому варианту
Код

AnsiString Text = "Thit text must be loaded to file";
        int Len = Text.Length();
        int iTempLength = sizeof(int);
        TMemoryStream * MemStream = new TMemoryStream();
        MemStream->Seek(0,soFromBeginning);
        MemStream->Write(&Len,iTempLength);
        MemStream->Write(&Text,Len);
        MemStream->SaveToFile("fa.dat");
        MemStream->Free();

Да, самое интересное. Прога прописана в автозагрузку, и там я использую стандартные ::CreateFile/ С ним все нормально, но при первой подгрузке, чтение из файла не происходит :( ниче не понял. Библиотеки что-ли не подгружаются...(относительно ::CreateFile). В общем, чспасите, утопаю!!!!!!!!

Автор: Bima 23.4.2007, 12:08
Дело скорее всего в "путях".
Поробуй прописать полный путь, или первоночально считывай имя папки, куда записываешь и откуда считываешь файл.

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