如何在Delphi 5中实现埃拉托斯特尼筛法并将结果写入Edit控件?
解决Delphi 5中埃拉托斯特尼筛法结果输出到Edit控件的问题
我来帮你调整代码,把质数结果输出到Edit控件里,而不是控制台。关键修改有两处,我会给你讲清楚:
关键修改点
- 先清空Edit内容:每次点击按钮计算前,先清空Edit控件的现有内容,避免多次计算的结果堆叠在一起。
- 拼接质数到Edit:遍历数组时,把每个值为
true的索引(也就是质数)转换成字符串,添加到Edit的文本中,还可以加上空格分隔,让结果更易读。
修改后的完整代码
var Form1: TForm1; iValue, iCode: Integer; index, anzahlgaeste: Integer; gaeste: array of string; zahl:array[1..1000] of boolean; i,j,grenze:integer; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); begin if n.text = '' then begin error.text := 'Feld ist leer'; n.SetFocus; end else begin val(n.text, iValue, iCode); if iCode = 0 then begin if StrToInt(n.text) < 2 then begin error.text := 'Zahl ist kleiner als zwei'; n.SetFocus; end else begin error.text := 'Erfolgreich'; grenze:=1000; fillchar(zahl,sizeof(zahl),true); i:=2; //erste Streichzahl repeat j:=i+i; repeat zahl[j]:=false; j:=j+i; //nächste zu streichende Zahl until j>grenze; inc(i); while zahl[i]=false do inc(i); until i>sqrt(grenze); // --- 下面是修改的核心代码 --- result.Clear; // 先清空Edit控件 for i:=2 to grenze do begin if zahl[i] then begin // 把质数转成字符串,添加到Edit,用空格分隔 result.Text := result.Text + IntToStr(i) + ' '; end; end; // --- 修改结束 --- end; end else begin error.text := 'Keine (natürliche) Zahl'; n.SetFocus; end end; end; end.
额外说明
如果你的Edit控件不是叫result,记得把代码里的result换成你实际的控件名称。另外,要是质数太多导致Edit显示不全,可以把Edit的ScrollBars属性设为ssVertical,这样就能滚动查看所有结果啦。
内容的提问来源于stack exchange,提问作者Keyinator
相关产品推荐
相关产品推荐

