C++Builder 程序员博客
22 Aug
已知进程句柄,想统计进程的内存和CPU使用情况
试试
Heap32First这个函数,
Heap32Last…
这个和枚举系统进程那两个函数用法差不多
我先试试,非常感谢!
顶
http://www.2ccc.com/article.asp?articleid=4150
这个是别人彷任务管理器做的.你可以看一下…
8 Aug
问题1:
在插入新数据时,如果数据表中原来有和相同的数据,就用一个对话框提示,信息的数据重复!
问题2:
在信息查询时,如果没有满足查询条件的记录,就有一个对话框提示,没有查到相应信息!
问题3:
在信息查询时,如果有5条满足条件的记录,就用一个对话框提示,满足条件的信息有5条!
SQL2000数据库。假设数据表的名称为工号表,字段为:工号。
每个问题20分。麻烦各位帮忙!谢谢!!
问题1用1楼的方式效率比较低,可靠性差,其增加了代码的复杂度,应该是对不可重复的数据字段建立唯一索引,直接执行插入sql语句,遇到重复记录时会报错,程序直接拦截错误并判断错误类型,如果是记录重复则显式
问题2/3其实是一回事,就是检查返回结果的记录数,如果是只检查满足条件的记录数(不要记录的数据),可以用select count(*) from 工号表 where 工号=?
楼上的兄弟,以你的看法以下的代码有什么错误?麻烦你帮我修改一下!!谢谢!!
void __fastcall TForm2::Button1Click(TObject *Sender)
{
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
//ADOQuery1->SQL->Add("insert into 员工信息表 () values ()");
ADOQuery1->SQL->Add("insert into 员工信息表 (民族,性别,部门,办公室,学历,政治面貌,职位,职称,婚姻,开户银行,姓名,工号,年龄,籍贯,住宅电话,手机,办公室电话,家庭住址,身份证号,毕业学校,银行卡号,奖金,工资) values (:minzu,:xingbie,:bumen,:bangongshi,:xueli,:zhengzhimianmao,:zhiwei,:zhicheng,:hunyin,:kaihuyinhang,:xingming,:gonghao,:nianling,:jiguan,:zhuzhai,:shouji,:bangongshidianhua,:jiatingzhuzhi,:shenfenzhenghao,:biyexuexiao,:yinhangkahao,:jiangjin,:gongzi)");
ADOQuery1->Parameters->ParamByName("xingming")->Value=Edit1->Text;
ADOQuery1->Parameters->ParamByName("gonghao")->Value=Edit2->Text;
ADOQuery1->Parameters->ParamByName("nianling")->Value=Edit3->Text;
ADOQuery1->Parameters->ParamByName("jiguan")->Value=Edit5->Text;
ADOQuery1->Parameters->ParamByName("zhuzhai")->Value=Edit6->Text;
ADOQuery1->Parameters->ParamByName("shouji")->Value=Edit7->Text;
ADOQuery1->Parameters->ParamByName("bangongshidianhua")->Value=Edit8->Text;
ADOQuery1->Parameters->ParamByName("jiatingzhuzhi")->Value=Edit9->Text;
ADOQuery1->Parameters->ParamByName("shenfenzhenghao")->Value=Edit10->Text;
ADOQuery1->Parameters->ParamByName("biyexuexiao")->Value=Edit11->Text;
ADOQuery1->Parameters->ParamByName("yinhangkahao")->Value=Edit12->Text;
ADOQuery1->Parameters->ParamByName("minzu")->Value=ComboBox1->Text;
ADOQuery1->Parameters->ParamByName("xingbie")->Value=ComboBox2->Text;
ADOQuery1->Parameters->ParamByName("bumen")->Value=ComboBox3->Text;
ADOQuery1->Parameters->ParamByName("bangongshi")->Value=ComboBox4->Text;
ADOQuery1->Parameters->ParamByName("xueli")->Value=ComboBox5->Text;
ADOQuery1->Parameters->ParamByName("zhengzhimianmao")->Value=ComboBox6->Text;
ADOQuery1->Parameters->ParamByName("zhiwei")->Value=ComboBox7->Text;
ADOQuery1->Parameters->ParamByName("zhicheng")->Value=ComboBox8->Text;
ADOQuery1->Parameters->ParamByName("hunyin")->Value=ComboBox9->Text;
ADOQuery1->Parameters->ParamByName("kaihuyinhang")->Value=ComboBox10->Text;
ADOQuery1->Parameters->ParamByName("jiangjin")->Value=Edit4->Text;
ADOQuery1->Parameters->ParamByName("gongzi")->Value=Edit13->Text;
ADOQuery1->ExecSQL();
if(ADOQuery1->RecordCount>0)
{
Application->MessageBoxA("信息已经存在","提示");
}
//if(ADOQuery1->RecordCount>0)
//{
// MessageBox(0,"已经存在!","提示",MB_OK);
//}
Application->MessageBoxA("信息添加成功!","提示");
//ShowMessage("信息添加成功!");
//ADOQuery1->Open();
}
这个代码调试没有错误,但是一用来操作,就提示错误!
什么时候沦落到改错的地步了,哎!
Inser和select能一样吗?既然你已经插入了,记录肯定有了,你还查个屁。
楼上的兄弟,我把我的意思重新说一下吧!
我是想,在插入前做检验,如果重复了,就提示信息已存在。如果不重复,就执行插入,并提示插入成功!
不是早已经告诉你了吗????????????????????????????
void __fastcall TForm2::Button1Click(TObject *Sender) { ADOQuery->Close(); ADOQuery->SQL->Clear() ; ADOQuery->SQL->Add("select 工号 from 工号表 where 工号 = :gonghao"); ADOQuery->Parameters->ParamByName("gonghao")->Value = Edit1->Text;//Edit中的数据为要录入或查询的 ADOQuery->Open() ; if(ADOQuery->RecordCount==0) { MessageBox(0,"不存在!","提示",MB_OK); ADOQuery1-> Close(); return; } ADOQuery1-> Close(); ADOQuery1-> SQL-> Clear(); //ADOQuery1-> SQL-> Add("insert into 员工信息表 () values ()"); ADOQuery1-> SQL-> Add("insert into 员工信息表 (民族,性别,部门,办公室,学历,政治面貌,职位,职称,婚姻,开户银行,姓名,工号,年龄,籍贯,住宅电话,手机,办公室电话,家庭住址,身份证号,毕业学校,银行卡号,奖金,工资) values (:minzu,:xingbie,:bumen,:bangongshi,:xueli,:zhengzhimianmao,:zhiwei,:zhicheng,:hunyin,:kaihuyinhang,:xingming,:gonghao,:nianling,:jiguan,:zhuzhai,:shouji,:bangongshidianhua,:jiatingzhuzhi,:shenfenzhenghao,:biyexuexiao,:yinhangkahao,:jiangjin,:gongzi)"); ADOQuery1-> Parameters-> ParamByName("xingming")-> Value=Edit1-> Text; ADOQuery1-> Parameters-> ParamByName("gonghao")-> Value=Edit2-> Text; ADOQuery1-> Parameters-> ParamByName("nianling")-> Value=Edit3-> Text; ADOQuery1-> Parameters-> ParamByName("jiguan")-> Value=Edit5-> Text; ADOQuery1-> Parameters-> ParamByName("zhuzhai")-> Value=Edit6-> Text; ADOQuery1-> Parameters-> ParamByName("shouji")-> Value=Edit7-> Text; ADOQuery1-> Parameters-> ParamByName("bangongshidianhua")-> Value=Edit8-> Text; ADOQuery1-> Parameters-> ParamByName("jiatingzhuzhi")-> Value=Edit9-> Text; ADOQuery1-> Parameters-> ParamByName("shenfenzhenghao")-> Value=Edit10-> Text; ADOQuery1-> Parameters-> ParamByName("biyexuexiao")-> Value=Edit11-> Text; ADOQuery1-> Parameters-> ParamByName("yinhangkahao")-> Value=Edit12-> Text; ADOQuery1-> Parameters-> ParamByName("minzu")-> Value=ComboBox1-> Text; ADOQuery1-> Parameters-> ParamByName("xingbie")-> Value=ComboBox2-> Text; ADOQuery1-> Parameters-> ParamByName("bumen")-> Value=ComboBox3-> Text; ADOQuery1-> Parameters-> ParamByName("bangongshi")-> Value=ComboBox4-> Text; ADOQuery1-> Parameters-> ParamByName("xueli")-> Value=ComboBox5-> Text; ADOQuery1-> Parameters-> ParamByName("zhengzhimianmao")->Value=ComboBox6->Text; ADOQuery1-> Parameters-> ParamByName("zhiwei")-> Value=ComboBox7-> Text; ADOQuery1-> Parameters-> ParamByName("zhicheng")-> Value=ComboBox8-> Text; ADOQuery1-> Parameters-> ParamByName("hunyin")-> Value=ComboBox9-> Text; ADOQuery1-> Parameters-> ParamByName("kaihuyinhang")-> Value=ComboBox10-> Text; ADOQuery1-> Parameters-> ParamByName("jiangjin")-> Value=Edit4-> Text; ADOQuery1-> Parameters-> ParamByName("gongzi")-> Value=Edit13-> Text; ADOQuery1-> ExecSQL(); }
注意顺序!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
在任何时候ADOQuery1->ExecSQL();都应该放在try……catch语句中,并且在catch语句中检查可能出现的错误,其中包括非重复索引冲突,但由于不同的数据库,甚至不同的数据库引擎可能报错的错误号不一样,所以自己要调试一下才晓得
6楼的兄弟,我说的是如果,记录已经存在那么提示,记录已经存在,不是让它检索提示不存在!!
要俺老命
if(ADOQuery->RecordCount>0)
{
MessageBox(0,"存在!","提示",MB_OK);
ADOQuery1-> Close();
return;
}
RecordCount仅仅用于查询结果返回的记录数,不能作为ExecSQL影响的记录数,ExecSQL本身就有返回值
算了,还是再看看资料后再编程吧,如果在学习过程中这个样子尚且让人恼火,如果是在工作中,可以预见这个项目是多么的糟糕
呵呵,直接DBGr控件吧
上面答案已经很明确了,问题一的解决方法有两个,1是先查询一下,看要插入的数据是不是存在,存在的话就提示,不存在的话就插入。2是插入的时候用try catch 来捕捉错误,如果是主键重复就提示错误。
问题二、三就就直接判断查询的结果记录数就行了,根据返回的记录数来做相应提示。
该回复于2008-07-10 02:40:17被版主删除
3 Jul
招聘C++人才
工作内容:
搜索引擎相关程序开发与维护
职责要求:
1 精通C/C++程序设计,对C++有深入的了解,用C++开发过比较大型的项目。
2 熟悉搜索引擎的基本原理,对基于互联网信息处理技术有过研究。
3 熟悉SQLServer数据库编程、TCP/IP网络编程
4 喜欢钻研,对算法感兴趣;头脑灵活、清醒,有较强的领悟能力。
工作地点:北京五道口
工作形式:兼职 /全职
有意者请发邮件到:sunjiao@iichiba.com 对搜索引擎不熟者不要
顶 一 下
27 May
两个DAT文件,1.DAT和2.DAT ,我要把1.DAT文件中的十行信息,保存到2.DAT中,但是要求1中的信息保存到2中时,1的第一行信息改为10,第二行信息改为15,第三行信息改为5,以此类推.请高手指点
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TStringList *a=new TStringList();
TStringList *b=new TStringList();
a->LoadFromFile("D:\\1.DAT");
b->LoadFromFile("D:\\2.DAT");
int Lines= b->Count+a->Count-1;
b->Strings[0]=Lines;
for(int i=0;i <a->Count;i++){
b->Add(a->Strings[i]);
}
b->SaveToFile("D:\\2.DAT");
}
不明白
用insert方法。
我现在1.DAT文件中有10行信息,比如第一行是123,第二行中是345,等等,现在要求复制到2.DAT中,但是第一行的123要改成1,第外行中345要改成5,就是这样.谢谢
我是个菜鸟,能请高手写的详细点么?
问题已经解决
现在又有新的难题了,麻烦高手过来解决下
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TStringList *a=new TStringList();
TStringList *b=new TStringList();
a->LoadFromFile("D:\\1.DAT");
b->LoadFromFile("D:\\2.DAT");
int Lines= b->Count+a->Count-1;
b->Strings[0]=Lines;
for(int i=0;i <10;i++){
a->Strings[0]="20 20";
a->Strings[1]="20 20";
a->Strings[2]=12;
a->Strings[3]=13;
a->Strings[4]=10;
a->Strings[5]=35;
a->Strings[6]=27;
a->Strings[7]=28;
a->Strings[8]=29;
a->Strings[9]=22;
b->Add(a->Strings[i]);
}
b->SaveToFile("D:\\2.DAT");
}
现在2.DAT中已经有数字进去,但是,我现在要判断1.DAT中的信息,如果1中第一行和第三行写的是..,那么这几行就不显示到2中,其他的显示,谢谢
用SaveToFile方法的话,可以先将不准备显示的行删除,然后再保存。
我是个菜鸟,高手能写下代码么?
谢谢了
for(int i=0;i <10;i++){
if (a->Strings[0]="–"){
a->Strings[0]=00;}
{
else
a->Strings[0]="20";}
我想通过上面的if来判断,不知道代码应该怎么写,上面写的错的.
***************************************************************************
思想决定行动,行动决定习惯,习惯决定命运.
程序员在深圳QQ群,交流产生思想碰撞.
部份专业群:
程序员在深圳c++群15195967
程序员在深圳英语学习群:23864353
程序员在深圳c++Ⅱ17409451
程序员在深圳嵌入式开发群37489763
程序员在深圳移动开发群31501597
程序员在深圳创业群33653422
部份高级程序员群:
高级群I:17538442
高级群II:7120862
部份初、中级程序员群:
第三群:2650485
第五群:29537639
第四群:28702746
第六群:10590618
第七群:10543585
第八群:12006492
第九群:19063074
第十群:2883885
第十一群:25460595
第十二群:9663807
深圳程序员QQ群联盟成立三年多,拥有三十个以上的QQ群,人数超二千多人,大量经验丰富的老手,成员从业于大公司(如微软、IBM,SUN,华为)、来自国内著名高校和研究院成员,和有丰富实践经验的高级程序员、系统分析员(包括参加过上亿元的项目的架构师),有很热爱技术的成员(包括自己写操作系统),还有少数女程序员。推荐:深程高级群I:17538442 深程高级群II:7120862 (深程高级群不欢迎新手,如果在深圳,月薪6K以下的别加入) c++:15195967 mobile:31501597嵌入式:37489763
——————————————————————————————————————————
群内交流解决问题的方法,一般难以直接得到答案,问题的解决还是要靠自己。(授之以渔与授之以鱼的关系)。
*****************************************************************************
楼主为什么不嵌入汇编?
使用汇编语言完成你的工作,应该是课后作业范畴吧
需求不明,写的也是一塌糊涂
if (a->Strings[0]="–"){
a->Strings[0]="";}
{
else
a->Strings[0]="20";}
a->Strings[1]="20 20";
a->Strings[2]="12";
a->Strings[3]="13";
a->Strings[4]="10";
a->Strings[5]="35";
a->Strings[6]="27";
a->Strings[7]="28"
a->Strings[8]="29"
a->Strings[9]="22";
for(int i=0;i <10;i++){
b->Add(a->Strings[i]);
}
请高手指点!
for(int i=0;i <10;i++){
if (a->Strings[0]="–"){
delete a->Strings[0];}
{
else
a->Strings[0]="20";}
请问,能不能就是把这行删除?delete 不会用,麻烦高手指教
Digital-video and waveform-audio devices recognize this command. delete用的不对,
for(int i=0;i <10;i++){
if (a->Strings[0]="–"){
a->RemoveAt(a->Find(a->Strings[i]),a->Find(a->Strings[0]));}
{
else
a->Strings[0]="20";}
楼上的高手,在编译的过程中提示如下:RemoveAt is not a member Tstringlist
如何消除这个错误???
急!
RemoveAt is not a member of Tstringlist
等待高手!!!!!!!!!!!
16 May
对ComboBox里的信息转化成char,请大家帮下忙,
要是我在ComboBox组件里设了3个值,1,2,3 ,并假设设了一个char 类型的buffer,如何将选中的值转化成char 型赋予buffer,
如果可以给个例子,最好将如何选中ComboBox组件里的数据也写下,谢谢大家!
用标准C的:strcpy(buffer,ComboBox1->Text.c_str());
void __fastcall TForm1::ComboBox1Change(TObject *Sender)
{
char buffer = this->ComboBox1->Text[1];
}
顶一下。
16 May
VC的mfc开发的话,可以定义一个CString str;还有定义一个要显示的ID参数,
然后通过以下语句str.Format("搜索到,ID号为%02d",ID);
AfxMessageBox(str);
我想问下如果是BC的话,模仿上面应该怎么做出提示窗口啊,谢谢!
void __fastcall TForm1::Button1Click(TObject *Sender) { AnsiString str; int ID=100; str="搜索到,ID号为"+IntToStr(ID); ShowMessage(str); } //—————————————————————————
还有请教一下,如何将Edit控件获得的信息转化成char类型
我定义了一个char类型的数组,想将EDIT获得的信息赋予char类型的数组,请教下如何是好!
void __fastcall TForm1::Button2Click(TObject *Sender) { char str[5]; strcpy(str,Edit1->Text.c_str()); } //—————————————————————————
char str[100]; strcpy(str,Edit1->Text.c_str());
Application->MessageBox(….);
char *str = new char[Edit1->Text.Length()+1];
strcpy(str,Edit1->Text.c_str());
delete []str;