我爱builder

C++Builder 程序员博客

    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里面啊

C/C++ code
AnsiString s="1"; //字符串 char r=StrToInt(s); //这里r其实是0×01 ShowMessage((int)r);//这样看就是1了,其实这里创建了1个临时对象(AnsiString类对象)

C/C++ code
//你要的到底是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};
这个样就不行,不明白那里不对

C/C++ code
// 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++ code
// 把 c换成 c+48 或c+0×30

  • Filed under: C++ Builder
  • 在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)型?

    引用 2 楼 Erotoer 的回复:

      MS不能定义Memo1这个东东,四不四缺什么文件?
      OK之后是不是把a直接赋值给string(或char)型就可以了?还是要再怎么转成string(或char)型?

    Memo1是TMemo,是一个界面控件,用来显示多行文本的。这里只是演示一下效果。
    你也可以这样AnsiString str = a[0];

    如果想转换成std::string

    std::string str(a[0].c_str());

      你无敌了!

  • Filed under: C++ Builder
  • 代码如下:
    AnsiString t = "程序";
    unsigned char *p = t.c_str();
    此时p[0]和p[1]存放的是“程”字机内码。
    现在的问题是:
    如果如何将p[0]和p[1]再转成AnsiString类型并赋值给t,使t的值为‘程’字?

    汉字的机内码不是>=0×80吗?如果转成char类型的,数据岂不是丢失?

    不过,yumikoo 的方法是可行的,谢谢!

  • Filed under: C++ Builder
  • C/C++ code
    AnsiString sql1 =(AnsiString)"select top "+StrToInt(LabeledEdit1->Text)+" * from \ 英语分级单词表 where 分级="+ComboBox1->Text+" order By newid()";

    原SQl语句类似

    SQL code
    select top 5 * from 英语分级单词表 where 分级=一级 order By newid()

    LabeledEdit1 我想把输入的TEXT转化为整形  应该怎么写呢?

    额 找到问题了 是前面写判断的时候弄错了 还是谢谢了
    偶太粗心了…

  • Filed under: C++ Builder
  • 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) //直接作比較就可,何必化成字符串再比較呢。

    C/C++ code
    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 …. 值沒改,什麼意義呀。

  • Filed under: C++ Builder
  • [char]char*A[i]

    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被版主删除

  • Filed under: C++ Builder
  • [char]char*A[i]

    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被版主删除

  • Filed under: C++ Builder
  • [char]char*A[i]

    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被版主删除

  • Filed under: C++ Builder
  • [char]char*A[i]

    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被版主删除

  • Filed under: C++ Builder
  • [char]char*A[i]

    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被版主删除

  • Filed under: C++ Builder
  • 类别

    最新

    标签

    链接


    存档