-2
我在Lazarus中使用2个按钮进行简单的加密/解密程序,一个用于加密,一个用于解密。我也有两个备忘录盒(或两个备忘录)。 我测试了我的算法,它的工作原理,但是当我尝试在用户友好的应用程序中实现它时,我得到了这个问题。异常类'外部:SIGSEGV'
我有这样的功能:
function enc(x:string):string;
var
y:string;
p,q:integer;
m:char;
begin
y:=x[1];
for p:=2 to Length(x)do
begin
q:=p-1;
if chr(ord(x[p]))=' ' then
m:='!'
else if ord(x[p])>ord(x[q]) then
m:=Succ(chr(ord(x[p])))
else
m:=Pred(chr(ord(x[p])));
Y:=y+m ;
end;
enc:=y;
end;
和一个过程来调用这个函数
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Text:=enc(Memo2.Text);
end;
我编译的程序和它的工作,但是当我试图进入一些文本和加密文本我有此错误
异常类'外部:SIGSEGV'
在第46行的文件'unit1.pas'中:y:= x [1];
我最近开始学习pascal并使用lazarus soo sry,如果这个Q是愚蠢的,但我真的想知道我做错了什么。
我真的意识到问题所在。 – anakata
procedure TForm1.Button1Click(Sender:TObject); begin Memo1.Text:= enc(Memo2.Text); 结束; 那段od代码让我的程序停止了couse我正在将文本输入到备忘录1中,但是随着该代码我被键入memo2,所以我只是取代了memo1和memo2,现在everythink很好运行 – anakata
这就是我在答案中告诉你的。 –