Как получить текст для циклов в одну строку? - PullRequest
0 голосов
/ 29 апреля 2019

Я пытаюсь получить текст для циклов на одной строке, а не печатать на второй, третий, четвертый и т. Д.

procedure TFormQ1.Button1Click(Sender: TObject);
var
  a, b, c, I: integer;
begin

  a := SpinEdit1.Value;

  for I := 1 to a do
  begin

    if a mod I = 0 then
    begin

    memo1.Lines.Add(inttostr(I));

    end;
  end;
end;

Я ожидаю, что результат будет кратен числу, которое яввод на одной строке. сильный текст

1 Ответ

3 голосов
/ 29 апреля 2019

Само по себе имя Lines.Add() добавляет новую строку.Чтобы избежать этого, просто не используйте Lines.Add() на каждой итерации цикла.Есть несколько способов подойти к этому, чтобы поместить все в одну строку:

for I := 1 to a do begin 
  ...
  memo1.Text := memo1.Text + IntToStr(I);
  ...
end;
var
  ...
  s: string;
begin
  ...
  for I := 1 to a do begin 
    ...
    s := s + IntToStr(I);
    ...
  end;
  memo1.Text := s; // or memo1.Lines.Add(s);
  ...
end;
var
  ...
  Idx: integer;
begin
  ... 
  Idx := memo1.Lines.Add('');
  for I := 1 to a do begin 
    ...
    memo1.Lines[Idx] := memo1.Lines[Idx] + IntToStr(I);
    ...
  end;
  ...
end;
var
  ...
  len: integer;
begin
  ...
  for I := 1 to a do begin 
    ...
    {memo1.SelStart := memo1.GetTextLen;
    memo1.SelLength := 0;}
    len := memo1.GetTextLen;
    memo1.Perform(EM_SETSEL, len, len);
    memo1.SelText := IntToStr(I);
    ...
  end;
  ...
end;
...