procedure Tform1.encode();
var
i:integer;
j:integer;
begin
//url解密 (加密格式:将0-9转换为a-j) 解密时将a-j转换为0-9
SetLength( arrChar , length(urlConfig.text)) ;
for i:=0 to length(urlConfig.text)-1 do
begin
for j:=0 to 9 do
begin
if urlConfig.text[i]=num[j] then
begin
arrChar[i]:=chr(j);
break;
end;
end;
arrChar[i]:=urlConfig.text[i];
//showmessage(arrChar[i]);
end;
//res := Copy(PChar(@arrChar[0]), 1, Length(arrChar)); showmessage(pChar(@arrChar[0]));
end;
var
i:integer;
j:integer;
begin
//url解密 (加密格式:将0-9转换为a-j) 解密时将a-j转换为0-9
SetLength( arrChar , length(urlConfig.text)) ;
for i:=0 to length(urlConfig.text)-1 do
begin
for j:=0 to 9 do
begin
if urlConfig.text[i]=num[j] then
begin
arrChar[i]:=chr(j);
break;
end;
end;
arrChar[i]:=urlConfig.text[i];
//showmessage(arrChar[i]);
end;
//res := Copy(PChar(@arrChar[0]), 1, Length(arrChar)); showmessage(pChar(@arrChar[0]));
end;
chr(j) 就是 0..9 的ASCII码,并不是a..j
urlConfig:TStringlist;
num: array[0..9] of string = ('a','b','c','d','e','f','g','h','i','j');
arrChar: array of Char;
res:string;
urlConfig.text[0]并没有值,循环要从1开始到length(urlConfig.text)2.
循环体内的arrChar[i]:=chr(j);无用
后面这一句arrChar[i]:=urlConfig.text[i];都把内容改写了3.
实在不清楚你要实现什么
那一句是在外面的循环上
arrChar[i]:=urlConfig.text[i];
//现在加在上面就好了
for j:=0 to 9 do
begin
if urlConfig.text[i]=num[j] then
begin
arrChar[i]:=chr(j);
break;
end;
end;
就是如果字符串的值在数组里面有 是当前元素 就把值换成和它的下标 否则不变
现在还有个问题就是后面的结果 一直是空字符串