Delphi 7控制台程序转可视化表单:爬虫自动填充变量需求
Delphi 7控制台程序转可视化表单(爬虫自动填充变量)
我有两段Delphi 7控制台程序代码,需要将它们改造为带可视化表单的程序,要求所有变量由爬虫自动填充,禁止硬编码。我尝试过从零构建表单、基于现有代码改造,但因Delphi 7知识储备不足,无法理解复杂的表单开发文档。
第一段控制台代码
program p1; {$APPTYPE CONSOLE} uses SysUtils, Math, Windows; var x, z: integer; var RES,s, sp, p, ps, y: real; begin SetConsoleCP(1251); SetConsoleOutputCP(1251); x := 1; y := 2.25; z := 3; ps := 1; for x := 1 to 7 do begin sp := 0; for z := 3 to 10 do begin s := Arctan(y / z + x / y) / power(abs(y - x - z), 1 / 3); sp := sp + s; //Writeln('Сумма ', sp:0:3); end; p := (power(2.3, 4 / x) * abs(y - x)) / (sqrt(sqr(x) + sqr(y) + 1.5)) + sp; ps := ps * p; //Writeln('Произведение ', ps:0:3); end; RES := ps; Writeln(RES:0:3); Readln; end.
第二段控制台代码
program p2; {$APPTYPE CONSOLE} uses SysUtils, Math, Windows; const H = 0.4; Xmin = -3; Xmax = 2.9; var x, y, W: real; begin SetConsoleCP(1251); SetConsoleOutputCP(1251); x := Xmin; while (x < Xmax) do begin if (x > 0.1) and (x < 2) then begin W := power(x, 1 / 3) + ln(x); y := ((ln(sqr(W) + W + 1)) * cos(4 * x)) / (exp(-2) + 2); end else if (x <= 0.1) then begin W := sqr(sin(x)) + 4 * x; y := ((ln(sqr(W) + W + 1)) * cos(4 * x)) / (exp(-2) + 2); end else begin W := 2.6 * sqr(x) - 3.7; y := ((ln(sqr(W) + W + 1)) * cos(4 * x)) / (exp(-2) + 2); end; x := x + H; Write('X= ', x:0:3); Write(' '); Writeln('Y= ', y:0:3); end; Readln; end.
改造步骤(针对Delphi 7新手)
通用准备步骤
- 打开Delphi 7,新建VCL Application(不要选Console Application),自动生成空白表单
Form1。 - 确保项目引用
Math单元(控制台代码用到数学函数,VCL项目默认未添加,需手动在uses中补充)。
第一段代码改造(程序p1)
表单控件布局
- 添加1个
TLabel,Caption设为「Y值(爬虫自动填充):」 - 添加1个
TEdit,命名为edtY,设置ReadOnly = True(防止用户修改,仅爬虫填充) - 添加1个
TButton,Caption设为「计算结果」,命名为btnCalculate - 添加1个
TMemo,命名为memoOutput,用于显示最终计算结果
代码实现
- 双击
Form1,在FormCreate事件中添加爬虫填充逻辑(示例,实际由爬虫工具/接口赋值):
procedure TForm1.FormCreate(Sender: TObject); begin // 爬虫自动填充Y值,示例值模拟实际爬虫赋值 edtY.Text := '2.25'; end;
- 双击
btnCalculate,在OnClick事件中移植控制台计算逻辑:
procedure TForm1.btnCalculateClick(Sender: TObject); var x, z: integer; RES, s, sp, p, ps, y: real; begin // 从控件读取爬虫填充的Y值 y := StrToFloat(edtY.Text); ps := 1; memoOutput.Clear; for x := 1 to 7 do begin sp := 0; for z := 3 to 10 do begin s := Arctan(y / z + x / y) / Power(Abs(y - x - z), 1 / 3); sp := sp + s; end; p := (Power(2.3, 4 / x) * Abs(y - x)) / (Sqrt(Sqr(x) + Sqr(y) + 1.5)) + sp; ps := ps * p; end; RES := ps; memoOutput.Lines.Add('计算结果:' + FloatToStrF(RES, ffFixed, 10, 3)); end;
第二段代码改造(程序p2)
表单控件布局
- 添加3个
TLabel,Caption分别设为「步长H:」、「X最小值:」、「X最大值:」 - 添加3个
TEdit,分别命名为edtH、edtXmin、edtXmax,设置ReadOnly = True - 添加1个
TButton,Caption设为「计算并显示结果」,命名为btnCalcAll - 添加1个
TMemo,命名为memoResults,用于显示每一组X、Y值
代码实现
- 在
FormCreate事件中添加爬虫填充逻辑:
procedure TForm1.FormCreate(Sender: TObject); begin // 爬虫自动填充参数,示例值模拟实际爬虫赋值 edtH.Text := '0.4'; edtXmin.Text := '-3'; edtXmax.Text := '2.9'; end;
- 双击
btnCalcAll,在OnClick事件中移植计算逻辑:
procedure TForm1.btnCalcAllClick(Sender: TObject); var x, y, W, H, Xmin, Xmax: real; begin // 读取爬虫填充的参数 H := StrToFloat(edtH.Text); Xmin := StrToFloat(edtXmin.Text); Xmax := StrToFloat(edtXmax.Text); x := Xmin; memoResults.Clear; while (x < Xmax) do begin if (x > 0.1) and (x < 2) then W := Power(x, 1 / 3) + Ln(x) else if (x <= 0.1) then W := Sqr(Sin(x)) + 4 * x else W := 2.6 * Sqr(x) - 3.7; y := ((Ln(Sqr(W) + W + 1)) * Cos(4 * x)) / (Exp(-2) + 2); x := x + H; memoResults.Lines.Add(Format('X= %.3f Y= %.3f', [x, y])); end; end;
爬虫填充变量的实现提示
爬虫可通过以下方式给Delphi控件赋值:
- 利用Windows API(如
SendMessage)向TEdit控件发送文本消息 - 若程序内部集成爬虫逻辑,直接在
FormCreate或初始化事件中调用爬虫接口获取值,赋值给控件的Text属性
内容的提问来源于stack exchange,提问作者Виктория Благодер
相关产品推荐
相关产品推荐

