C++Builder 程序员博客
19 Nov
AnsiString str=ComboBox3->Text;
char chr=StrToInt(str);
char buff[10]={'#','0','1',chr,0×0d};
我现在的疑问就是怎么把combox的值写到buff的chr位置上,捣鼓了一上午了,
那个buff里面要求是char型的,我怎么转化也不好用,气坏了
AnsiString str=ComboBox3->Text;
为什么我现在的AnsiString str=ComboBox3->Text;中的值为1,然后char chr=StrToInt(str); chr的值就变成r了,真其了怪了,我是通过ShowMessage()来看的,望大侠帮忙啊,我闷死了
jxw你说的是转为了char*,不是char啊,那样不能写进buff里面啊
AnsiString s="1"; //字符串 char r=StrToInt(s); //这里r其实是0×01 ShowMessage((int)r);//这样看就是1了,其实这里创建了1个临时对象(AnsiString类对象)
//你要的到底是char 还是char * //是char *就如上, //要得到char //直接用 char c= StrToInt(ComboBox1->Text); //注意这里有可能溢出,
jxw,我想要的是char,可以加我qq么,499140279,我想详细请教一下,谢了,我觉得偶很伟大啊
char buff[10]={'#','0','1','1',0×0d};
Comm1->WriteCommData(buff,5);这个样就是对的
其实我是想发这样一个码的,但第4位我想通过一个combox值传过来,但那样不行
char c= StrToInt(ComboBox3->Text);
char buff[10]={'#','0','1',c,0×0d};
这个样就不行,不明白那里不对
// char buff[10]={’#',’0′,’1′,c,0×0d}; char c= StrToInt(ComboBox3->Text); buff[3]=c ;//可以这样赋值的,这样第4个元素,也就是buf[3]就是它了 // 你可以加入我们群 4670 3864 一起学习,俺也菜鸟1个呢,汗
char c= StrToInt(ComboBox4->Text);
char buff[10];
buff[0]='#';
buff[1]='0';
buff[2]='1';
buff[3]=c;
buff[4]=0×0d;
Comm1->WriteCommData(buff,5);这样还是不行啊,但一把buff[3]='1',就可以了,齐了怪了,怎么回事啊
还需要设置什么地方么
// 把 c换成 c+48 或c+0×30
在CBC6下Call webservice时怎样将char(或string)型转换为TStringDynArray?
server端函数及参数定义如下:
virtual AnsiString Complete(const AnsiString Line,const ArrayOfString Data)=0;
如我定义char(或string)数据Data_temp,怎样转换为TStringDynArray型(及上面const ArrayOfString Data)?
天灵灵,地灵灵,yuanreid先生快现身…
MS不能定义Memo1这个东东,四不四缺什么文件?
OK之后是不是把a直接赋值给string(或char)型就可以了?还是要再怎么转成string(或char)型?
Memo1是TMemo,是一个界面控件,用来显示多行文本的。这里只是演示一下效果。
你也可以这样AnsiString str = a[0];
如果想转换成std::string
std::string str(a[0].c_str());
你无敌了!
10 Oct
代码如下:
AnsiString t = "程序";
unsigned char *p = t.c_str();
此时p[0]和p[1]存放的是“程”字机内码。
现在的问题是:
如果如何将p[0]和p[1]再转成AnsiString类型并赋值给t,使t的值为‘程’字?
汉字的机内码不是>=0×80吗?如果转成char类型的,数据岂不是丢失?
不过,yumikoo 的方法是可行的,谢谢!
27 Aug
AnsiString sql1 =(AnsiString)"select top "+StrToInt(LabeledEdit1->Text)+" * from \ 英语分级单词表 where 分级=‘"+ComboBox1->Text+"‘ order By newid()";
原SQl语句类似
select top 5 * from 英语分级单词表 where 分级=‘一级 ‘ order By newid()
LabeledEdit1 我想把输入的TEXT转化为整形 应该怎么写呢?
额 找到问题了 是前面写判断的时候弄错了 还是谢谢了
偶太粗心了…
13 Jul
char ss7Temp[3]={0};
char ss7Temp1[3]={0};
ifstream inf;
inf.open("20080201100830.dat"); //二进制文件,文件第一字节为aa
inf.read((char*)&ss7Temp,1);
sprintf(ss7Temp1,"%02x ", (*((char*)&ss7Temp))&0xff);
RichEdit1->Lines->Add(ss7Temp1); //RichEdit1显示为aa
int ret=strcmp(ss7Temp1,"aa");
if(ret==0)
RichEdit1->Lines->Add("right");
else
RichEdit1->Lines->Add(ret); //RichEdit1显示为32
运行以后RichEdit1的结果为:
aa
32
如何可以让strcmp(ss7Temp1,"aa");相等?
有什么办法让{'a','a'}和"aa"相等吗?
不相等吧,,有个结束符的
sprintf(ss7Temp1,"%02x ", (*((char*)&ss7Temp))&0xff);
這裡 ,"%02x ", 02x後多了一個空格(ASC碼:32),導致 strcmp 比較時不等而返回 32 .
如果只比較兩個字符,可用 strncmp ;
這個例子可以直接用二進制比較的呀,
inf.read((char*)&ss7Temp,1); //二进制文件,文件第一字节为aa
if(ss7Temp[0] == 0xaa) //直接作比較就可,何必化成字符串再比較呢。
char ss7Temp[3]={0}; char ss7Temp1[3]={0}; char * pTemp = "aa"; ss7Temp[0] = ‘a‘; ss7Temp[1] = ‘a‘; if(strcmp(ss7Temp, pTemp) == 0) { printf("相等"); } else { printf("不相等"); }
我这边的结果是相等.
inf.read((char*)&ss7Temp,1); //二进制文件,文件第一字节为aa
if(ss7Temp[0] == 0xaa) //直接作比較就可,何必化成字符串再比較呢。
比较二进制,可是这个条件不是想等的
另外,
inf.read((char*)&ss7Temp,1);
sprintf(ss7Temp1,"%02x ", (*((char*)&ss7Temp))&0xff);
没必要进行类型的转换,
inf.read(ss7Temp,1);
sprintf(ss7Temp1,"%02x ", ss7Temp[0]&0xff);
这样更容易读.
if(ss7Temp[0] & oxff == 0xaa)
//把要比較的內容整理出來,明確就行了。轉換實在是多此一舉。
& oxff 按位與 0xff …. 值沒改,什麼意義呀。
13 Jul
void __fastcall TForm1::FormCreate(TObject *Sender)
{
char*A[i];
ADOQuery->SQL->Text="select Tno from sa";
ADOQuery->Open();
int cnt=ADOQuery->RecordCount;
for(int i=0;i <cnt;i++)
{A[i]=ADO->Fields->Fields[0]->AsString.c_str();
ADO->Next();
}
ADO->Close();
}
为什么数组储存的是同一个数?
A[i]=ADO->Fields->Fields[i]->AsString.c_str(); //0改i
char*A[i];
这个i从哪里来的?
为什么这么写?不觉得很别扭么?
2L 正解了。。
你给A[i]全是赋的同一个值,,他能不同么。。。
void __fastcall TForm1::FormCreate(TObject *Sender)
{
char*A[30];
ADOQuery->SQL->Text="select Tno from sa";
ADOQuery->Open();
int cnt=ADOQuery->RecordCount;
for(int i=0;i <cnt;i++) //循环ADOQuery->RecordCount次
{A[i]=ADO->Fields->Fields[0]->AsString.c_str();
ADO->Next(); //指针移动
}
ADO->Close();
}
该回复于2008-07-10 02:56:16被版主删除
13 Jul
void __fastcall TForm1::FormCreate(TObject *Sender)
{
char*A[i];
ADOQuery->SQL->Text="select Tno from sa";
ADOQuery->Open();
int cnt=ADOQuery->RecordCount;
for(int i=0;i <cnt;i++)
{A[i]=ADO->Fields->Fields[0]->AsString.c_str();
ADO->Next();
}
ADO->Close();
}
为什么数组储存的是同一个数?
A[i]=ADO->Fields->Fields[i]->AsString.c_str(); //0改i
char*A[i];
这个i从哪里来的?
为什么这么写?不觉得很别扭么?
2L 正解了。。
你给A[i]全是赋的同一个值,,他能不同么。。。
void __fastcall TForm1::FormCreate(TObject *Sender)
{
char*A[30];
ADOQuery->SQL->Text="select Tno from sa";
ADOQuery->Open();
int cnt=ADOQuery->RecordCount;
for(int i=0;i <cnt;i++) //循环ADOQuery->RecordCount次
{A[i]=ADO->Fields->Fields[0]->AsString.c_str();
ADO->Next(); //指针移动
}
ADO->Close();
}
该回复于2008-07-10 02:56:16被版主删除
13 Jul
void __fastcall TForm1::FormCreate(TObject *Sender)
{
char*A[i];
ADOQuery->SQL->Text="select Tno from sa";
ADOQuery->Open();
int cnt=ADOQuery->RecordCount;
for(int i=0;i <cnt;i++)
{A[i]=ADO->Fields->Fields[0]->AsString.c_str();
ADO->Next();
}
ADO->Close();
}
为什么数组储存的是同一个数?
A[i]=ADO->Fields->Fields[i]->AsString.c_str(); //0改i
char*A[i];
这个i从哪里来的?
为什么这么写?不觉得很别扭么?
2L 正解了。。
你给A[i]全是赋的同一个值,,他能不同么。。。
void __fastcall TForm1::FormCreate(TObject *Sender)
{
char*A[30];
ADOQuery->SQL->Text="select Tno from sa";
ADOQuery->Open();
int cnt=ADOQuery->RecordCount;
for(int i=0;i <cnt;i++) //循环ADOQuery->RecordCount次
{A[i]=ADO->Fields->Fields[0]->AsString.c_str();
ADO->Next(); //指针移动
}
ADO->Close();
}
该回复于2008-07-10 02:56:16被版主删除
13 Jul
void __fastcall TForm1::FormCreate(TObject *Sender)
{
char*A[i];
ADOQuery->SQL->Text="select Tno from sa";
ADOQuery->Open();
int cnt=ADOQuery->RecordCount;
for(int i=0;i <cnt;i++)
{A[i]=ADO->Fields->Fields[0]->AsString.c_str();
ADO->Next();
}
ADO->Close();
}
为什么数组储存的是同一个数?
A[i]=ADO->Fields->Fields[i]->AsString.c_str(); //0改i
char*A[i];
这个i从哪里来的?
为什么这么写?不觉得很别扭么?
2L 正解了。。
你给A[i]全是赋的同一个值,,他能不同么。。。
void __fastcall TForm1::FormCreate(TObject *Sender)
{
char*A[30];
ADOQuery->SQL->Text="select Tno from sa";
ADOQuery->Open();
int cnt=ADOQuery->RecordCount;
for(int i=0;i <cnt;i++) //循环ADOQuery->RecordCount次
{A[i]=ADO->Fields->Fields[0]->AsString.c_str();
ADO->Next(); //指针移动
}
ADO->Close();
}
该回复于2008-07-10 02:56:16被版主删除
13 Jul
void __fastcall TForm1::FormCreate(TObject *Sender)
{
char*A[i];
ADOQuery->SQL->Text="select Tno from sa";
ADOQuery->Open();
int cnt=ADOQuery->RecordCount;
for(int i=0;i <cnt;i++)
{A[i]=ADO->Fields->Fields[0]->AsString.c_str();
ADO->Next();
}
ADO->Close();
}
为什么数组储存的是同一个数?
A[i]=ADO->Fields->Fields[i]->AsString.c_str(); //0改i
char*A[i];
这个i从哪里来的?
为什么这么写?不觉得很别扭么?
2L 正解了。。
你给A[i]全是赋的同一个值,,他能不同么。。。
void __fastcall TForm1::FormCreate(TObject *Sender)
{
char*A[30];
ADOQuery->SQL->Text="select Tno from sa";
ADOQuery->Open();
int cnt=ADOQuery->RecordCount;
for(int i=0;i <cnt;i++) //循环ADOQuery->RecordCount次
{A[i]=ADO->Fields->Fields[0]->AsString.c_str();
ADO->Next(); //指针移动
}
ADO->Close();
}
该回复于2008-07-10 02:56:16被版主删除