Kopiowanie danych do Tmemo

0

Witam,
Mam następujący problem do rozwiązania kopiuje dane ze TMemo1 do TMemo2
W TMemo1 ma np:

1532
1520
152’
1530
15*

Jak zapewnić aby do TMemo 2 skopiowane zostały dane które są tylko liczba tzn nie zawierają jakich innych znaków specjalnych

0

sposobów mnóstwo, np prosta funkcja:

function TylkoCyfry(S: string): string;
var
  i: Byte;
begin
  i := 1;
  while i <= Length(S) do
    if S[i] in ['0'..'9'] then
      Inc(i)
    else
      Delete(S, i, 1);
  Result := S;
end;

zaleta taka, że łatwo możesz rozszerzyć znaki które chcesz skopiować

0

Mniejsze juz sie nie da

function JestemCyfra(const AString: string): Boolean;
begin
  Result := StrToIntDef(AString, 0 ) = StrToIntDef(AString, 1);
end;
0

Ja to rozumiem tak:

  for var i := 0 to memo1.Lines.Count - 1 do
    if TryStrToFloat(memo1.Lines[i], output) then
      Memo2.Lines.Add(memo1.Lines[i]);
0

Do sprawdzania czy da się przekonwertować ciąg znaków na liczbę całkowitą słyży funkcja TryStrToInt, która nie rzuca błędu, jeśli ciąg zawiera niedozwolone znaki. W tym przypadku minusem jest konieczność podania drugiego parametru, którego i tak nie będziemy wykorzystywać (no ale podać trzeba).

var
  Line: String;
  Dummy: Integer;
begin
  Memo2.Clear();
  Memo2.Lines.BeginUpdate();
  try
    for Line in Memo1.Lines do
      if TryStrToInt(Line, Dummy) then
        Memo2.Lines.Add(Line);
  finally
    Memo2.Lines.EndUpdate();
  end;
end;
0

Dzięki robrtz68 już dziala

1 użytkowników online, w tym zalogowanych: 0, gości: 1