delphi代码错误了。
哪位高手帮我看看,下面到底错在哪里.感谢/
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Edit1: TEdit;
Memo1: TMemo;
Memo2: TMemo;
open: TOpenDialog;
save: TSaveDialog;
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
if open.Execute then
edit1.Text := open.FileName;
memo1.Lines.LoadFromFile(open.FileName);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
close;
end;
procedure TForm1.Button2Click(Sender: TObject);
function RrRrRrRr(const teaabb: string): string;
var
i, j: Integer;
begin
Result := '';
j := Length(teaabb) div 2;
for i:=1 to j do
Result := Result + teaabb[i] + teaabb[i+j];
if Length(teaabb) mod 2 > 0 then
Result := Result + teaabb[j*2+1];
end;
function PreProcess(const S: string): string;
var
i: Integer;
begin
Result := '';
i := 1;
while i<=Length(S) do
begin
if S[i] = '\' then
begin
case S[i+1] of
'n':
Result := Result + #13;
'r':
Result := Result + #10;
't':
Result := Result + #9;
else
Result := Result + S[i+1];
end;
Inc(i);
end else
Result := Result + S[i];
Inc(i);
end;
end;
end.
参考答案:procedure TForm1.Button1Click(Sender: TObject);
begin
if open.Execute then
//Begin
edit1.Text := open.FileName;
memo1.Lines.LoadFromFile(open.FileName);
//End; 添加Begin/End,否则如果点击打开对话框的“取消”按钮,memo1一样会试图打开文件。
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
close;
end;
procedure TForm1.Button2Click(Sender: TObject);
function RrRrRrRr(const teaabb: string): string; //我不是很明白这一句的意思,如果您想写一个函数,应该把它单独提取出来。
var
i, j: Integer;
begin
Result := '';
j := Length(teaabb) div 2;
for i:=1 to j do
//begin
Result := Result + teaabb[i] + teaabb[i+j];
if Length(teaabb) mod 2 > 0 then
Result := Result + teaabb[j*2+1];
//end; 我不是很明白您这个函数的作用。
end;
function PreProcess(const S: string): string;
var
i: Integer;
begin
Result := '';
i := 1;
while i<=Length(S) do
begin
if S[i] = '\' then
begin
case S[i+1] of
'n':
Result := Result + #13;
'r':
Result := Result + #10;
't':
Result := Result + #9;
else
Result := Result + S[i+1];
end;
Inc(i);
end
else
//begin
Result := Result + S[i];
Inc(i);
//end; 理由根上面的一样,不加begin和end的话如果遇到\符号Inc(i)语句会执行2次。
end;
end;
end.
另外,看代码您似乎是想用这个程序来解释C语言代码,我认为您可以考虑调用C++的编译器ml进行编译,再将运行结果显示出来,效果会比较好。
还有,请您在写代码的时候注意缩进格式,尽量不要出现end else这样的代码,对函数的命名也应该有一定的意义,尽量不要使用RrRrRrRr这样的名称,这很容易让人迷惑,不利于阅读代码,尤其是进行团队开发时,这个问题是极其致命的。