例外类'外部:SIGSEGV'

时间:2016-11-16 21:59:49

标签: lazarus freepascal

我在Lazarus中使用2个按钮制作简单的加密/解密程序,一个用于加密,一个用于解密。我还有两个备忘录(或两个备忘录)。 我测试了我的算法并且它有效,但是当我尝试在用户友好的应用程序中实现它时,我遇到了这个问题。

我有这个功能:

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'

     

在文件' unit1.pas'在第46行:y:= x [1];

我最近开始学习pascal并使用lazarus soo sry如果这个Q是愚蠢但我真的想知道我做错了什么。

1 个答案:

答案 0 :(得分:1)

对于该代码,该错误意味着x是一个空字符串。如果第一个字符无效,那么x除了空之外还有什么呢?