-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
這就是我在答案中告訴你的。 –