problem z wczytywaniem danych

0

Chcę napisać dość prosty program który będzie pobierał liczby z jednego memo i po posortowaniu wyświetlał je w drugim. Niestety podczas pobierania danych z pierwszego memo wygląda tak jak by nie rozpoznawał liczb. po wpisaniu liczby dostaje komunikat:''is not a valid integer value. Gdy wpisze dowolny text na przykład xyz dostaje 'xyz'is not a valid integer value. Nie rozumiem czemu tak jest. Poniżej kod programu który stworzyłem. Proszę o pomoc.

unit sort2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  Tsort = class(TForm)
  
    Memo1: TMemo;
    sortuj: TButton;
    Memo2: TMemo;
    clear: TButton;
    procedure sortujClick(Sender: TObject);
    procedure clearClick(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  sort: Tsort;

implementation

{$R *.dfm}


procedure Tsort.sortujClick(Sender: TObject);
var
e,i,j,n,x,y,m,h,g: integer ;
tab:array of integer;
{f :string;}
begin
{try}
n:=Memo1.Lines.Count ;
SetLength(tab, n);


x:=0;
y:=0;
for m:=0 to n do
begin
tab[y]:= StrToInt  (  Memo1.Lines[x]);
y:=y+1;
x:=x+1;
end;

 for i:=0 to 3 do
   for j:=0 to 3 do
      if (tab[j]>tab[j+1]) then
      begin
         e := tab[j];
         tab[j] := tab[j+1];
         tab[j+1] := e;
     end;

h:=0  ;
for g:=0 to n do
begin
Memo2.Lines.Add(IntToStr (tab[h]));
h:=h+1;
end;
{except
 Memo1.Lines.Clear;
Memo1.Lines.Add('podaj liczby');
end;  }
  end;

procedure Tsort.clearClick(Sender: TObject);
begin
Memo1.Lines.Clear;
Memo2.Lines.Clear;
end;

end.
0

Najpierw to popraw i jeżeli do Memo1 wpisałeś tylko liczby to już powinno być dobrze.

for m:=0 to n do   ->   for m:=0 to n-1 do
for g:=0 to n do   ->   for g:=0 to n-1 do

Do sprawdzenia czy dany string jest liczbą służy funkcja Val.

0

dzięki za pomoc już działa

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