|
Вопрос # 4 075/ вопрос открыт / |
|
Здравствуйте!
Уважаемые эксперты, помогите пожалуйста! Мне нужно вводить в Edit целые числа через пробел, соответственно в первом Мemo выводятся четные элементы, во втором - нечетные. проблема в том, что я могу вводить ряд чисел без пробелов, только тогда программа работает. как сделать, чтобы можно было ввести числа через пробелы ? возможно есть какая - нибудь функция ?
К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса)
Приложение: Переключить в обычный режим- unit Unit1;
-
- interface
-
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs,unit2, StdCtrls;
- const n=15;
- type
- TForm1 = class(TForm)
- Edit1: TEdit;
- Memo1: TMemo;
- Memo2: TMemo;
- Button1: TButton;
- Label1: TLabel;
- Label2: TLabel;
- Label4: TLabel;
- Button3: TButton;
- procedure Button1Click(Sender: TObject);
- { procedure Button2Click(Sender: TObject);}
- procedure Button3Click(Sender: TObject);
- procedure FormCreate(Sender: TObject);
-
- private
- { Private declarations }
- public
- { Public declarations }
- end;
-
- var
- Form1: TForm1;
- q1,q2:TQueue;
-
- implementation
-
- {$R *.dfm}
-
-
-
- procedure TForm1.Button1Click(Sender: TObject);
- Var
- i,r:Integer;
- s:String;
- begin
- s:=Edit1.Text;
- for i:=1 to length(s) do
- begin
- r:=strtoint(copy(s,i,1)) mod 2;
- if r=0 then
- memo1.Lines.Add(copy(s,i,1))
- else
- memo2.Lines.Add(copy(s,i,1));
- end;
- end;
-
-
- procedure TForm1.Button3Click(Sender: TObject);
- begin
- q1.Free;
- q2.Free;
- form1.Close;
- end;
-
- procedure TForm1.FormCreate(Sender: TObject);
- begin
- q1:=TQueue.Create;
- q2:=TQueue.Create;
- end;
-
- end.
-
- unit Unit2;
- interface
- uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, StdCtrls;
- type
-
- link=^node;
- node=record
-
-
- end;
- TQueue=class
- private
-
-
- public
-
-
-
-
-
-
- end;
- implementation
- constructor TQueue.create;
- begin
- endQ:=nil;
- begQ:=nil;
- end;
- function TQueue.qempty;
- begin
- result:=begQ=nil;
- end;
- procedure TQueue.qAdd;
- var help:link;
- begin
- new(help);
- help^.inf:=elem;
- help^.next:=nil;
- if qempty then
- begin
- endQ:=help;
- begQ:=help;
- end
- else
- begin
- endQ^.next:=help;
- endQ:=help;
- end;
- end;
-
- procedure TQueue.qDel;
- var help:link;
- begin
- help:=begQ;
- if not qempty then
- begin
- begQ:=begQ^.next;
- dispose(help);
- end
-
- if begQ=nil then endQ:=nil;
- end;
-
- procedure TQueue.view;
- var cur:link;
- begin
- m.Lines.Clear;
- cur:=begQ;
- while cur<>nil do
- begin
- m.Lines.add(inttostr(cur^.inf));
- cur:=cur^.next;
- end;
- end;
- end.
-
 |
Вопрос задала: Nostalgia (статус: Посетитель)
Вопрос отправлен: 22 апреля 2010, 00:10
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: webkent
Здравствуйте, Nostalgia!
Вот написал процедуру - Edit1.OnChange она проверяет весь текст Едита и выдирает только числа из него, помещая их в разные мемо, в зависимости от четности.
Приложение: Переключить в обычный режим- procedure TForm1.Edit1Change(Sender: TObject);
- var
- i, j: word;
- begin
-
- Memo1.Clear;
- Memo2.Clear;
-
- if Length(Edit1.Text)>0 then
- for i := 1 to Length(Edit1.Text) do
- begin
- for j := 0 to 9 do
- if Edit1.Text[i] = IntToStr(j) then
- begin
- if j mod 2 = 0 then
- Memo1.Lines.Add(IntToStr(j))
- else
- Memo2.Lines.Add(IntToStr(j))
- end;
- end;
- end;
 |
Ответ отправил: webkent (статус: 2-ой класс)
Время отправки: 22 апреля 2010, 08:05
Оценка за ответ: 5
|
Мини-форум вопроса
Всего сообщений: 4; последнее сообщение — 23 апреля 2010, 20:49; участников в обсуждении: 2.
22 апреля 2010, 10:34: Вопрос перемещён из тематического раздела Delphi » Общие вопросы по программированию в раздел Delphi » Алгоритмы, преобразования модератором Ерёмин А.А.
|
Nostalgia (статус: Посетитель), 22 апреля 2010, 21:50 [#1]:
а как бы сделать, чтобы можно было вводить не просто цыфры, а числа ?
|
|
webkent (статус: 2-ой класс), 23 апреля 2010, 07:49 [#2]:
не понял, какие конкретно числа выводить?
|
|
webkent (статус: 2-ой класс), 23 апреля 2010, 07:53 [#3]:
Если имеешь в виду полностью число из Едита, то нужно вот так:
procedure TForm1.Edit1Change(Sender: TObject);
var
i, j: word;
s: string;
begin
s := '';
Memo1.Clear;
Memo2.Clear;
if Length(Edit1.Text) > 0 then
for i := 1 to Length(Edit1.Text) do
begin
for j := 0 to 9 do
if Edit1.Text[i] = IntToStr(j) then
begin
s := s + IntToStr(j);
end;
end;
if StrToInt(s) mod 2 = 0 then
Memo1.Lines.Add(s)
else
Memo2.Lines.Add(s)
end;
|
|
Nostalgia (статус: Посетитель), 23 апреля 2010, 20:49 [#4]:
я имею введу, чтобы можно было вводить числа через пробел.. допустим три числа: 12 23 48 . соответственно 12 и 48 помещались бы в Мемо1, а 23 -во второе... вот как так бы сделать ? это возможно ?
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|