关于一个文件操作的问题(百分以上)

softman_2000 2002-05-10 06:13:06
我要实现这样一个程序:
就像数据库一样的操作:
比如说,我要把一些设备信息存起来,例如:设备编号,设备名称,设备购买人,设备价格,设备购买时间等信息。
这个程序要能够动态的添加字段,比如说,我要添加:设备使用时间,设备使用情况等。
还要有一半的数据库操作:
比如:插入新设备,修改设备信息,删除设备信息,怎么做呀,那位有原码,如果满意,可出重分,可高达五百分。最少一百分。
...全文
25 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
RodgerLiang 2002-05-10
  • 打赏
  • 举报
回复
You can try use the MFC template classes (CArray,CList,CTypedPtrList) and use CObject's serialize function.
tianlinyi 2002-05-10
  • 打赏
  • 举报
回复
struct POS
{
LONG start;
LONG end;
POS()
{
start=-1;
end=-1;
}
};
struct INFO
{
char url[100];
char localFile[50];
BOOL ifFinish;
BOOL MulThread;
long fileLen;
POS pos[4];
long lenFinish;
CTime lastModify;
INFO()
{
url[0]='\0';
localFile[0]='\0';
ifFinish=TRUE;
MulThread=TRUE;
fileLen=-1;
lenFinish=0;
}
};
tianlinyi 2002-05-10
  • 打赏
  • 举报
回复
struct POS
{
LONG start;
LONG end;
POS()
{
start=-1;
end=-1;
}
};
struct INFO
{
char url[100];
char localFile[50];
BOOL ifFinish;
BOOL MulThread;
long fileLen;
POS pos[4];
long lenFinish;
CTime lastModify;
INFO()
{
url[0]='\0';
localFile[0]='\0';
ifFinish=TRUE;
MulThread=TRUE;
fileLen=-1;
lenFinish=0;
}
};
tianlinyi 2002-05-10
  • 打赏
  • 举报
回复
void CHttpBotDlg::ReadInfo(BOOL isFinish)
{
m_tList.DeleteAllItems();
// ifFinishList=IsFinish;
CFile file;
if(!file.Open("d:\\HttpBot.txt", CFile::modeRead))
{
file.Open("d:\\HttpBot.txt",CFile::modeCreate);
file.Close();
return;
}
else
{
INFO *info = new INFO();
file.SeekToBegin();
int index;
while(file.Read(info,sizeof(INFO)) == sizeof(INFO))
{
if(info->ifFinish != isFinish)
continue;
ITEMINFO *item = new ITEMINFO();
if(isFinish == FALSE)
{
CFile f;
LONG size=0;
for(int i=0; i<4; i++)
{
CString name;
name.Format(".bot%d",i);
name = info->localFile+name;
if(f.Open(name, CFile::modeRead))
{
size+=f.GetLength();
f.Close();
}
}
item->downloadSize = size;

}
item->fileSize = info->fileLen;
// int ti = info->fileLen / 100;
item->downloadSize = info->lenFinish;
item->per = (item->downloadSize / item->fileSize) * 100;


CString temp = info->localFile;
int j = temp.ReverseFind('\\');
item->fileName = temp.Mid(j + 1);
item->savePath = temp.Left(j+1);
item->remoteUrl = info->url;
item->per = (info->lenFinish * 100) / info->fileLen;
if(isFinish)
item->state = TA_FINISH;
else
item->state = TA_STOP;
index = m_tList.InsertItem(item);
delete item;
item = NULL;
}
file.Close();
}
}
Richuen22 2002-05-10
  • 打赏
  • 举报
回复
最难的是那个动态的添加字段。
nktylm 2002-05-10
  • 打赏
  • 举报
回复
如果数据的字段是固定的可以采用固定结构的方法来进行读,写操作,定义一个结构,每次读取一个结构,修改完毕将此结构写回文件.
tianlinyi 2002-05-10
  • 打赏
  • 举报
回复
你用一个结构来保存这些字段
然后把整个字段一起写入文件
读文件的时候也是一次读这个结构大小的字段到buffer里面处理

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧