JungCoder Гость
|
Добавлено: Пт Дек 24 2004 11:02 Заголовок сообщения: Builder двоичные файлы |
|
|
Помогите разобраться.
Пишу на C++ Builder.
На форме два эдита, две кнопки и мемо.
При нажатии на первую кнопку данные сохраняются в двоичный файл.
Данные представляю собой структуру из двух полей. Первое поле инт , а второе АнсиСтринг.
При повторном нажатии на кнопку1 данные записываются в конец файла.
При нажатии кнопки2 в мемо должны выводится данные из файла, причём только АнсиСтринг.
Вообщем данные записываются нормально.
А при нажатии кнопки2 проект виснет.
Плз... подскажите в чём ошибка!
Ниже приведен код:
//---------------------------------------------------------------------------
#include <vcl.h>
#include <stdio.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
struct Str
{
int Num;
AnsiString Name;
};
FILE *F;
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
struct Str St;
St.Num=StrToInt(Edit1->Text);
St.Name=Edit2->Text;
if ((F=fopen("c:\\StructFile\\Struc.dat","ab"))==NULL)
{
ShowMessage("Файл не удаётся создать!");
}
else
{
fseek(F,0L,2);
fwrite(&St,sizeof(Str),1,F);
fclose(F);
ShowMessage("Файл записан!");
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
struct Str St2;
if ((F=fopen("c:\\StructFile\\Struc.dat","rb"))==NULL)
{
ShowMessage("Файл не существует!");
}
else
{
Memo1->Clear();
while (ftell(F) != SEEK_END)
{
fread(&St2,sizeof(Str),1,F);
Memo1->Lines->Add(St2.Name);
}
fclose(F);
}
} |
|