Здравствуйте, проблема в следующем: У меня есть бинарный файл с тестами, я его считываю с файла в richtextbox, вся информация отображается в текстовом поле, там я редактирую любой слово, после чего записываю весь текст с формы в файл, и тут возникает ошибка. Вот скриншот:
Вот код:
if (T == false)
{
FILE *file;
S_Data data;
file = fopen("test.txt", "r");
richTextBox1->Clear();
fread(&data, sizeof(data), 1, file);//читання з файлу
richTextBox1->Text += marshal_as<String^>(data.question) + " " + marshal_as<String^>(data.answer1) + " " + marshal_as<String^>(data.answer2) + " " + marshal_as<String^>(data.answer3) + " " + marshal_as<String^>(data.answer4) + " " + marshal_as<String^>(data.answert);
fread(&data, sizeof(data), 1, file);
T = true;
button1->Text = "Зберегти";
while (!feof(file)) //поки не кінець файлу, виконуємо наступні дії
{
richTextBox1->Text += "\r\n";//переход на следующий ряд
richTextBox1->Text += marshal_as<String^>(data.question) + " " + marshal_as<String^>(data.answer1) + " " + marshal_as<String^>(data.answer2) + " " + marshal_as<String^>(data.answer3) + " " + marshal_as<String^>(data.answer4) + " " + marshal_as<String^>(data.answert);
fread(&data, sizeof(data), 1, file);
}
fclose(file);
}
else
{
T = false;
button1->Text = "Тестування";
FILE *file2;
S_Data data;
file2 = fopen("test.txt", "w");
for (int i = 0; i < richTextBox1->Lines->Length; i++)//цикл по всем рядам
{
if (richTextBox1->Lines[i]->ToString() != "")//якщо текстовое поле не пустое
{
char*head = (char*)(void*)Marshal::StringToHGlobalAnsi(richTextBox1->Lines[i]->ToString());
head = tok(data.question, head, ' ');
if (head == 0)
{
MessageBox::Show("не вистачає питання", "помилка");
return;
}
head = tok(data.answer1, head, ' ');
if (head == 0)
{
MessageBox::Show("не вистачає 1 відопвіді", "помилка");
return;
}
head = tok(data.answer2, head, ' ');
if (head == 0)
{
MessageBox::Show("не вистачає 2 відповіді", "помилка");
return;
}
head = tok(data.answer3, head, ' ');
if (head == 0)
{
MessageBox::Show("не вистачає 3 відопвіді", "помилка");
return;
}
head = tok(data.answer4, head, ' ');
if (head == 0)
{
MessageBox::Show("не вистачає 4 відопвіді", "помилка");
return;
}
head = tok(data.answert, head, ' ');
if (head == 0)
{
MessageBox::Show("не вистачає правильної відопвіді", "помилка");
return;
}
fwrite(&data, sizeof(data), 1, file2);//запис у файл
}
}
fclose(file2);
richTextBox1->Clear();
}
}
В чём ошибка?