各位大侠,救急啊!!!有关文件读入,在线等待。

linanruo 2003-08-05 10:17:38
我有一文本文件,其内容为若干条类似tran("南宫",1,120000,0.52,145.6,[coil(220,[6,1.46,-10],1)],[15.3,24.5,8.3],[493.9,145.1,101.3])的记录,如何读入数据库将 南宫 写入表 trans的name字段,1 写入 number字段...coil后的220写入hvoltage字段 6写入hb字段,应如何实现呀??我用的时c++builder6,望各位大侠给出比较详细的解释,先谢谢了!
...全文
18 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
linanruo 2003-08-21
  • 打赏
  • 举报
回复
各位大侠,不好意思 这几天网络不好 现在才来结帐,请包涵!!!
hy1080 2003-08-17
  • 打赏
  • 举报
回复
见意如此
假设你打文本装入Memo控件了

TStringList *ll=new TStringList();
Lines->DelimitedText=AnsiReplaceText(Memo->Lines->Strings[i]/*i为行数*/, "//", "[");//这个函数你参考一下我也没用过意思是从“[”处把一个String分成几部分周理再处理“,”的部分然后判断

delete ll;
linanruo 2003-08-10
  • 打赏
  • 举报
回复
我是看不太懂tiegerium() 写的这些,不过通过大侠们的回答我也学到不少东西,比较郁闷的是 我发现我的各条数据格式不整齐,看来我只有考虑周全用.pos加.substring通过判断来实现了
柯本 2003-08-09
  • 打赏
  • 举报
回复
数据分解的简单方法:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TSysCharSet m,n;
m<<','<<']'<<')';
n<<'t'<<'r'<<'a'<<'n'<<'('<<'['<<'c'<<'o'<<'i'<<'l';
TStringList *p= new TStringList;
ExtractStrings(m,n,"tran(\"南宫\",1,120000,0.52,145.6,[coil(220,[6,1.46,-10],1)],[15.3,24.5,8.3],[493.9,145.1,101.3])",p);
Memo1->Lines=p;
delete p;
}
linanruo 2003-08-09
  • 打赏
  • 举报
回复
谢谢tiegerium() 的答复,就是说要先把整条数据读进再分解 主要用.pos与.substring来实现,
那从文本读入的时候具体语句(包括头文件)怎么写?假设我是一行一条记录
真如实观 2003-08-09
  • 打赏
  • 举报
回复
*.h:
struct TMyStruct
{
int MyID;
AnsiString Name;
AnsiString Sex;
AnsiString city;
void MyStruct(TMyStruct* pParent);
};
*.cpp:
void MyStruct(TMyStruct* pParent)
{
MyID=p->Strings[0];
Name=p->Strings[1];
Sex=p->Strings[2];
city=p->Strings[3];
}
//---------------------------------------------------
MyStruct *pStruct=new MyStruct;
......
ADODataSet1->FieldByName("MyID")->Value=pStruct->MyID;
......
//不好意思,我东写西写。
xinghf 2003-08-09
  • 打赏
  • 举报
回复
如果内容个实现对固定,可将上述字段设为一个结构,直接将读取的数据流拷贝到结构中就可以按结构读区内容。
真如实观 2003-08-09
  • 打赏
  • 举报
回复
可以这样嘛:
ADODataSet1->FieldByName("Name")->Value=p->Strings[0];
ADODataSet1->FieldByName("sex")->Value=p->Strings[1];
ADODataSet1->FieldByName("city")->Value=p->Strings[2];
......
ADODataSet1->Post();
linanruo 2003-08-09
  • 打赏
  • 举报
回复
不管双引号了,这个方法确实很简单好用,那么我要向数据库中写入怎么写,写入语句应该加在哪里呀?Memo1->Lines=p;一下子几行就出来了,我应该怎么一行一个字段写?
柯本 2003-08-09
  • 打赏
  • 举报
回复
双引号也去掉可能只能另外判了
\"南宫\"是为编译器用的,从文件读入的串直接可用:


TSysCharSet m,n;
m<<','<<']'<<')';
n<<'t'<<'r'<<'a'<<'n'<<'('<<'['<<'c'<<'o'<<'i'<<'l';
TStringList *p= new TStringList;
TStrlingList *txtfile=new TStringList;
txtfile->LoadFromFile("你的文本.txt");
for(int i=0;i<txtfile->Count;i++)
{
ExtractStrings(m,n,txtfile->Strings[i],p);
Memo1->Lines=p;
}
delete p;
delete textfile;
linanruo 2003-08-09
  • 打赏
  • 举报
回复
keiy():你的方法我试过了,确实很好,谢谢!我想把双引号也去掉该怎么办,我加在m与n后都不行,这是为什么?如何从我文本中读入而且文本中是"南宫"不是\"南宫\",如何转换,麻烦详细解释一下,拜托了!!
真如实观 2003-08-08
  • 打赏
  • 举报
回复
错了,应该是:
好象是:
int i,j,k;
String str,substring1,substring2...;
str="tran("南宫",1,120000,0.52,145.6,[coil(220,[6,1.46,-10],1)],[15.3,24.5,8.3],[493.9,145.1,101.3])";
i=str.Pos("南宫");
j=str.Pos("1,");
k=Str.Length();
substring=str.SubSting(j+1,k);
ADODataSet1->FieldByName("number")->Value=substring;
......
真如实观 2003-08-08
  • 打赏
  • 举报
回复
错了,应该是:
好象是:
int i,j,k;
String str,substring1,substring2...;
str="tran("南宫",1,120000,0.52,145.6,[coil(220,[6,1.46,-10],1)],[15.3,24.5,8.3],[493.9,145.1,101.3])";
i=str.Pos("南宫");
j=str.Pos("1,");
k=Str.Length();
substring=str.SubSting(j+1,k);
ADODataSet1->FieldByName("number")->Value=substring;
......
真如实观 2003-08-08
  • 打赏
  • 举报
回复
好象是:
int i,j,k;
String str,substring1,substring2...;
str="tran("南宫",1,120000,0.52,145.6,[coil(220,[6,1.46,-10],1)],[15.3,24.5,8.3],[493.9,145.1,101.3])";
i=str.Pos("南宫");
j=str.Pos("1");
k=Str.Length();
substring=str.SubSting(j+1,k);
ADODataSet1->FieldByName("number")->Value=substring;
......
linanruo 2003-08-08
  • 打赏
  • 举报
回复
大侠,帮帮我吧!
linanruo 2003-08-06
  • 打赏
  • 举报
回复
hy1080(老神经病):谢谢你的答复,但是具体的分解语句我不太会,参照过一些资料,但也没写对,麻烦您写几条具体语句吧,拜托了!
hy1080 2003-08-05
  • 打赏
  • 举报
回复
上面说的意思是,你要先把文本数据
象数据格式那样给分出类来,
然后一条一条地写入数据库
比如你应先把
tran("南宫",1,120000,0.52,145.6,[coil(220,[6,1.46,-10],1)],[15.3,24.5,8.3],[493.9,145.1,101.3])
这条给分解成
南宫
1
120000
0.52
145.6
[coil(220,[6,1.46,-10],1)]
[15.3,24.5,8.3]
[493.9,145.1,101.3]
(我也不知你分的格式对不对,差不多吧)
然后一条一条地写入
winespirit 2003-08-05
  • 打赏
  • 举报
回复
先整条数据读入内存,再分析字符串,反正格式你也是知道的,写个函数就行了。
linanruo 2003-08-05
  • 打赏
  • 举报
回复
我很菜,希望这位大侠解释清楚一点,最好能给出具体语句的格式

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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