|
고수님들의 도움이 필요합니다.
코딩엔 잼뱅이라서 사소한 것에서 막히네요
DB에서 TDatabase랑 TTable을 이용해서 Text파일에 있는 데이터를
매분마다 읽어서 DB에 저장을 하려고 합니다.
근데 코딩엔 별 문제가 없는 것 같은데 EAccessViolation에러가 나네요
Borlndmm.dll파일이 문제가 있다고 하는데 무엇이 문제인지 못찾겠어요
처음 몇분간은 문제없이 저장이 되다가 시간이 좀 지나면 이런 에러메세지가 뜨네요..
도움의 손길이 간절합니다..
꼭 답변 부탁드리겠습니다.
참고로 코드를 올립니다.
void TForm1::Write_2_DB(void)
{
int FileHandle;
int FileLength;
int BytesRead;
char *pszBuffer;
int i, j, k, l, m, n;
char *token;
char seps[]=" ,\t\n";
double *data;
// ------------------------------------------------
// Open File and Reading File
// ------------------------------------------------
char const *Path ="D:\\sbr\\state_set.txt";
try
{
FileHandle = FileOpen(Path, fmOpenRead);
FileLength = FileSeek(FileHandle,0,2);
FileSeek(FileHandle,0,0);
pszBuffer = new char[FileLength+1];
BytesRead = FileRead(FileHandle, pszBuffer, FileLength);
FileClose(FileHandle);
}
catch(...)
{
Application->MessageBox("Can't open the file","File Error",IDOK);
}
// -------------------------------------------------
// Divided Data Storing
// -------------------------------------------------
token=strtok(pszBuffer, seps);
data=new double[51];
for (i=0;i<51;i++)//BytesRead
{
data[i]=atof(token);
token=strtok(NULL,seps);
if (token==NULL) break;
}
delete [] pszBuffer;
Table2->First();
Table2->Edit();
for (i=0;i<Table2->FieldCount;i++)
{
if (i<2)
{
Table2->Fields->Fields[i]->AsInteger=data[i];
}
else if (i==2)
{
Table2->Fields->Fields[i]->AsFloat=data[i];
}
else if (i>3)
{
Table2->Fields->Fields[i]->AsInteger=data[i];
}
}
Table2->Post();
}
//---------------------------------------------------------------------------
|