delphi代码错误了。

王朝知道·作者佚名  2012-10-17
窄屏简体版  字體: |||超大  
 
分類: 電腦/網絡 >> 程序設計 >> 其他編程語言
 
問題描述:

哪位高手帮我看看,下面到底错在哪里.感谢/

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这样的名称,这很容易让人迷惑,不利于阅读代码,尤其是进行团队开发时,这个问题是极其致命的。

小贴士:① 若网友所发内容与教科书相悖,请以教科书为准;② 若网友所发内容与科学常识、官方权威机构相悖,请以后者为准;③ 若网友所发内容不正确或者违背公序良俗,右下举报/纠错。
 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航