小菜弟弟继续问问题

hewei999 2006-08-09 08:30:47
下午发的帖子已经收到,小菜弟弟还有点问题要问


如果实现输入的符号转成特定的数字

比如我要以 5分制的方法输入 5- 、 4+ 如何将这些“数字+符号”转成数字?

5- 就是 100-10 = 90
4+ 就是 80 +5 = 85

从 1 到 5 每个数字代表20分, 每“+”一次 加5分, 每“-”一次 减10分

最后将前面输入的数个数据 进行一次累加,也就是说这个 从“数字+符号”到“数字”的转变要在 KeyPress里完成,不用枚举法有办法处理吗?

这个过程如何实现....希望各位大大仍然能够不吝赐教
...全文
164 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
BlueDeepOcean 2006-08-11
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/4937/4937911.xml?temp=.8744013
上面的链接已经给了。
hewei999 2006-08-11
  • 打赏
  • 举报
回复
还....还有问题....

如果我是两个 Edit 内输入数据,然后使用Button 点击后将 Edit 内的数据累加

那又怎么处理呢?

....发现自己有点鸡婆了....
BlueDeepOcean 2006-08-11
  • 打赏
  • 举报
回复
不需要。直接转。
hewei999 2006-08-11
  • 打赏
  • 举报
回复
请问 蓝色大大, 你上面那里的

Edit->Text = A1;

是什么意思啊?? 把A1的结果输出到 Edit2吗?

那Edit2 有什么需要修改的属性 或者 必要的代码吗?
BlueDeepOcean 2006-08-11
  • 打赏
  • 举报
回复
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
if (Key >= '1' && Key <= '5' || Key == '+' || Key == '-' || Key == VK_RETURN || Key == VK_BACK)
{
if (Key == VK_RETURN)
{
if (Edit1->Text.Length() == 2)
{
if (Edit1->Text.SubString(2,1) == "+")
A1 = (Edit1->Text.SubString(1,1).ToInt() * 4 + 1) * 5;
if (Edit1->Text.SubString(2,1) == "-")
A1 = (Edit1->Text.SubString(1,1).ToInt() * 2 - 1) * 10;
}
if (Edit1->Text.Length() == 1 && Key != '+' && Key != '-')
A1 = Edit1->Text.ToInt() * 20;

Edit2->Text = A1;
}
}
else
Key = 0;
}
hewei999 2006-08-10
  • 打赏
  • 举报
回复
还要再顶一下.....

不过还是要谢谢楼上的朋友....

小菜刚接触 CB 不喜欢看书,只喜欢实践,只好劳烦各位大大了
sl19831983 2006-08-10
  • 打赏
  • 举报
回复
你的A1是数值吧,如果要用showMessage(),最好这样:ShowMessage(IntToStr(A1));
还有你给Edit1->Text 赋值的时候也是
hewei999 2006-08-10
  • 打赏
  • 举报
回复
没人回复自己顶~~~
BlueDeepOcean 2006-08-10
  • 打赏
  • 举报
回复
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;

int A1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
if (Key >= '1' && Key <= '5' || Key == '+' || Key == '-' || Key == VK_RETURN || Key == VK_BACK)
{
if (Key == VK_RETURN && Edit1->Text.Length() == 2)
{
if (Edit1->Text.SubString(2,1) == "+")
A1 = (Edit1->Text.SubString(1,1).ToInt() * 4 + 1) * 5;
if (Edit1->Text.SubString(2,1) == "-")
A1 = (Edit1->Text.SubString(1,1).ToInt() * 2 - 1) * 10;

Edit2->Text = A1;
}
}
else
Key = 0;
}
//---------------------------------------------------------------------------
hewei999 2006-08-10
  • 打赏
  • 举报
回复
先感谢上面两位大侠的帮忙,但是小菜又有问题了

我直接对A1 进行

showmessage (A1)

返回值居然是0,不知道是哪里出了问题啊
另外 只有单值输入的时候语句是不是
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
if (Key >= '1' && Key <= '5' || Key == '+' || Key == '-' || Key == VK_RETURN || Key == VK_BACK)
{
if (Key == VK_RETURN && Edit1->Text.Length() == 2)
{
if (Edit1->Text.SubString(2,1) == "+")
A1 = (Edit1->Text.SubString(1,1).ToInt() * 4 + 1) * 5;
if (Edit1->Text.SubString(2,1) == "-")
A1 = (Edit1->Text.SubString(1,1).ToInt() * 2 - 1) * 10;
}
else
A1 += Edit1->Text.SubString(1,1).ToInt()*20;
}
else
Key = 0;
}

单值输入的时候就是直接将 1到5 进行乘20运算~~

继续希望各位大侠不吝赐教
jaffy 2006-08-09
  • 打赏
  • 举报
回复
有没有--或++的情况呢?

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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