全部家产求高手帮忙关于edit.text问题 ( 积分: 300 )

  • 主题发起人 主题发起人 babalamari
  • 开始时间 开始时间
B

babalamari

Unregistered / Unconfirmed
GUEST, unregistred user!
问题:edit1.text中有字母和数字
button_click时将edit1.text中的字母和数字按规定排列后在edit2.text中显示?
规定:Aa=Cc,Bb=Dd,....Zz=Bb 1=3,2=4...0=2.

请高手帮忙给个代码!
 
也不太明白你说的意思;
仅猜测,
procedure TForm1.Button1Click(Sender: TObject);
begin
edit2.text:= MyFun(edit1.text);
end;
关键是MyFun函数的算法实现,
是这意思吗?
 
差不多吧,就是说如果在edit1.text里输入了abc123的话转换到edit2.text中应当是cde345
 
你用ASCII就可以实现,每一个ASCII字符对应一个数据,你要的字符在edit1KeyPress事件中
读出Key的值
eidt2.text:=Trim(eidt2.text)+(Key的值+2);当然你也可以不要不能显示的字符,这就去判断一下.时间晚了,不能在说了....88
 
function myfun(sourceStr:String):String;
Var
I:Integer;
ResultStr:String;
Begin
ResultStr:='';
For I:=1 to length(Sourcestr) do
ResultStr:=ResultStr+chr(Ord(SourceStr)+2);
Result:=ResultStr;
end;
 
函數轉換或其他方法
 
楼上。MyFun 正解
 
楼主所说的:
Aa=Cc,Bb=Dd,....Zz=Bb 1=3,2=4...0=2
是不是Xx=Zz,Yy=Aa,Zz=Bb,0=2,8=1,9=0?
如果是的话,用下面的函数
function myfun(sourceStr:String):String;
Var
I:Integer;
ResultStr:String;
Begin
ResultStr:='';
If Length(SourceStr)>0 Then
Begin
for I:=1 to Length(SourceStr) do
Begin
case Sourcestr of
'0'..'7','a'..'x': ResultStr:=ResultStr1+chr(Ord(ResultStr)+2);
'A'..'X': ResultStr:=ResultStr+chr(Ord(ResultStr)+2);
'Y'..'Z','y'..'z':ResultStr:=ResultStr+chr(Ord(ResultStr)-24);
'8'..'9': myStr1:=ResultStr+chr(Ord(ResultStr)-7);
end;
end;
Result:=ResultStr;
end;
调用方式:在button_click事件中或在exit事件中
edit2.text:=myFun(edit1.text);
 
呵呵,知道"业务"了,实现就是个小问题了,
关键要看出数据变化的规律,"归纳,猜想,证明";
正如楼上几位说的,是ascII码加2,对于像y,Y,z,Z这些大的,加2后再减去26即可,对于8,9这些加2后再减10即可.这就是关键的算法,楼上已实现了.

我想提个不同的实现方法,查找法.
用一个stringList1加载初始数据,a,...z;A,...Z;0,...9;
用另一个stringList2加载目标数据,c,...b,C,...B;2,...1;
function MyFun(from: string): string;
var
i,pos: integer;
begin
for i:= 0 to length(from)-1 do
pos:= stringList1.indexOf(from);
if pos <> -1 then
result:= result+stringList2.string[pos];
end;
我这种方法,使用范围相对大点,还可以实现对应关系没有一定规律的,比如特殊字符的转换,
如日文到中文的转换;当然了,这只是个思路,方法;如果数据量大,那就不要用stringList了,
可以考虑专门建立个表了,利用数据库的强大功能来实现我们的目的.
 
简单的加密,还是写注册机类的东西?
 
我来帮顶的.不过我提个思路也不知对不?
从edit1转到edit2其实很有规律的哟.可以通过数组方面将edit1中值存,转换后再写入到edit2中
 
这个很简单,我都帮你做好了,你就给分吧:
unit Unit1;

interface

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

type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
procedure Edit1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
edit2.Text:=edit2.Text+chr(key+2);

end;

end.
 
真无聊。。。
 
只要将函数CHR或OLD加2转换就可以实现了。
 
这个问题很简单啊?就是ASCII码加上3就可以了!很简单的
 
对初学者应该予以鼓励。不过我们更应该鼓励新人多向JAVA发展。
 
后退
顶部