类型转化问题(50分)

  • 主题发起人 主题发起人 windwate
  • 开始时间 开始时间
W

windwate

Unregistered / Unconfirmed
GUEST, unregistred user!
如何将一个字符串转化当作同名的整形常量使用,
例如,我定义一个整形常量,
const aa=100,
bb=1000

然后我在一个edit中输入aa,能返回100,输入bb能返回1000
 
if Edit1.Text='aa' then result:=100
else if Edit1.Text='bb' then result:=1000;
晕!
 
bjdribllec:
先别晕,如果我定义1000个常量,是不是的要写1000 if???这种方法太烦了,有没有简单点的,不过还是感谢你的支持。
 
onExit中
if Edit1.text='aa' then Edit1.Text:=inttstr(100);
if Edit1.Text='bb' then Edit1.Text:=inttostr(1000);
 
函数strtoint(string s):integer;
 
1000个常量都定义出来了,那又何妨再写1000个if。
 
樓主的方法真費解!!!不知有什麼用??
 
搞不清楚为什么要那么做;
有什么用处,说出来大家一起讨论吗。
不过我可以告诉你,这只能在输入后,触发一个事件去判断,就像楼上
不然你要自己开发控件或是自己写一大堆的代码来实现了,没那个必要
 
unit Unit1;

interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ConvertEdit;
type
TForm1 = class(TForm)
ConvertEdit1: TConvertEdit;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation

{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
var
List: TStringList;
begin
List := TStringList.Create;
List.Add('aaa=111');
List.Add('bbb=222');
List.Add('ccc=333');
List.Add('ddd=444');
ConvertEdit1.ConstList := List;
List.Free;
end;
end.

unit ConvertEdit;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TConvertEdit = class(TEdit)
private
FConstList: TStrings;
procedure SetConstList(const Value: TStrings);
protected
procedure KeyPress(var Key: Char)
override;
public
constructor Create(AOWner: TComponent)
override;
destructor Destroy
override;
published
property ConstList: TStrings read FConstList write SetConstList;
end;

procedure Register;

implementation

procedure Register;
begin
RegisterComponents('WangWei', [TConvertEdit]);
end;

{ TConvertEdit }
constructor TConvertEdit.Create(AOWner: TComponent);
begin
inherited Create(AOWner);
FConstList := TStringList.Create;
end;

destructor TConvertEdit.Destroy;
begin
FConstList.Free;
inherited Destroy;
end;

procedure TConvertEdit.KeyPress(var Key: Char);
begin
inherited KeyPress(Key);
if key = #13 then
Text := ConstList.Values[Text]
end;
procedure TConvertEdit.SetConstList(const Value: TStrings);
begin
if Assigned(Value) then
FConstList.Assign(Value);
end;
end.
 
不大可能,因为 常量符号 是给编译器,编译时候识别的,他会建立一张表
里面有常量名(字符串) 和对应的常量 , 遇到常量符号 ,就把常量添进去。。
 
后退
顶部