Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Ошибка при работе с файлами

11K
18 апреля 2008 года
zuze
84 / / 07.03.2008
У меня такая проблема когда этот код работает без сторок которые относятся к записи информации в файл программа работает, а добавляешь код для вывода в файл программа не работает, сразу выскакивает ошибка.

Помогите пожалуйста поправить.

Ошибка такая

Выскакивает окно Debugger Exception Notification в этом окне написано
Project factorial.exe raised exception EAccessViolation with message 'Access violation at address 00490109. Read of address 00000000'. Process stopped. Use step or Run continue.

Вот без этих строк всё нормально работает

Код:
#include <fstream.h>
ofstream fout;
fout.open("tests.txt");
fout << "Вводимое значение от 0 до 65535:";
fout << numfactorial;
fout << "Значение факториала вычеслинное рекурсивным алгоритмом";
fout << Edit2->Text.c_str();
fout << "Вводимое значение от 0 до 65535:";
fout << numfactorial;
fout << "Значение факториала вычеслинное рекурсивным алгоритмом";
fout << Edit3->Text.c_str();


Сам код

Код:
//------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
#include "factorial.h"
#include <fstream.h>
//------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
unsigned short numfactorial;
Factorial Factorial1;
ofstream fout;
//------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
  fout.open("tests.txt");
}
//------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    numfactorial = StrToInt(Edit1->Text);
    fout << "Вводимое значение от 0 до 65535:";
    fout << numfactorial;
    if (Factorial1.recfactorial(numfactorial) != 0)
    {
       Edit2->Text =  IntToStr(Factorial1.recfactorial(numfactorial));
       fout << "Значение факториала вычеслинное рекурсивным алгоритмом";
       fout << Edit2->Text.c_str();
    }
    else
       MessageBox(0, "Факториал с помощью рекурсивного алгоритма не может быть вычеслен!","Сообщение", MB_OK);
}
//------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
    numfactorial = StrToInt(Edit1->Text);
    fout << "Вводимое значение от 0 до 65535:";
    fout << numfactorial;
    if (Factorial1.factorial(numfactorial) != 0)
    {
       Edit3->Text = IntToStr(Factorial1.factorial(numfactorial));
       fout << "Значение факториала вычеслинное рекурсивным алгоритмом";
       fout << Edit3->Text.c_str();
    }
    else
       MessageBox(0, "Факториал с помощью не рекурсивного алгоритма не может быть вычеслен!","Сообщение", MB_OK);
}
//------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
    if (!Edit1->Text.IsEmpty())
       Edit1->Clear();
    if (!Edit2->Text.IsEmpty())
       Edit2->Clear();
    if (!Edit3->Text.IsEmpty())
       Edit3->Clear();
    Edit1->ReadOnly = false;
    fout.close();
}
//------------------------------------------------------------------------
void __fastcall TForm1::Edit1Change(TObject *Sender)
{
  if (Edit1->Text.IsEmpty())
     return;
  int i;
  if (TryStrToInt(Edit1->Text, i))
  {
     if (i > -1)
     {
        if (i > 65535)
        {
           MessageBox(0, "Вы ввели значение больше чем 65535!","Сообщение", MB_OK);
           Edit1->Clear();
        }
        AnsiString mynull = Edit1->Text;
        if (mynull[1] == '0')
           Edit1->ReadOnly = true;
     }
     else
     {
         MessageBox(0, "Вы ввели отрицательное число!","Сообщение", MB_OK);
         Edit1->Clear();
     }
  }
  else
  {
      MessageBox(0, "Введенный текст не является числом!","Сообщение", MB_OK);
      Edit1->Clear();
  }
}
//------------------------------------------------------------------------
11
18 апреля 2008 года
oxotnik333
2.9K / / 03.08.2007
сам файл tests.txt имеется в наличии?

 
Код:
ofstream stm;
  stm.open("123",0x04);
  stm<<"svsdvdfvdfv";
  stm.close();

вот так работает
11K
18 апреля 2008 года
zuze
84 / / 07.03.2008
Сам файл в наличии не имеется.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог