Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 4 075

/ вопрос открыт /

Здравствуйте!
Уважаемые эксперты, помогите пожалуйста! Мне нужно вводить в Edit целые числа через пробел, соответственно в первом Мemo выводятся четные элементы, во втором - нечетные. проблема в том, что я могу вводить ряд чисел без пробелов, только тогда программа работает. как сделать, чтобы можно было ввести числа через пробелы ? возможно есть какая - нибудь функция ?

К вопросу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки вопроса)

Приложение:
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7. Dialogs,unit2, StdCtrls;
  8. const n=15;
  9. type
  10. TForm1 = class(TForm)
  11. Edit1: TEdit;
  12. Memo1: TMemo;
  13. Memo2: TMemo;
  14. Button1: TButton;
  15. Label1: TLabel;
  16. Label2: TLabel;
  17. Label4: TLabel;
  18. Button3: TButton;
  19. procedure Button1Click(Sender: TObject);
  20. { procedure Button2Click(Sender: TObject);}
  21. procedure Button3Click(Sender: TObject);
  22. procedure FormCreate(Sender: TObject);
  23.  
  24. private
  25. { Private declarations }
  26. public
  27. { Public declarations }
  28. end;
  29.  
  30. var
  31. Form1: TForm1;
  32. q1,q2:TQueue;
  33.  
  34. implementation
  35.  
  36. {$R *.dfm}
  37.  
  38.  
  39.  
  40. procedure TForm1.Button1Click(Sender: TObject);
  41. Var
  42. i,r:Integer;
  43. s:String;
  44. begin
  45. s:=Edit1.Text;
  46. for i:=1 to length(s) do
  47. begin
  48. r:=strtoint(copy(s,i,1)) mod 2;
  49. if r=0 then
  50. memo1.Lines.Add(copy(s,i,1))
  51. else
  52. memo2.Lines.Add(copy(s,i,1));
  53. end;
  54. end;
  55.  
  56.  
  57. procedure TForm1.Button3Click(Sender: TObject);
  58. begin
  59. q1.Free;
  60. q2.Free;
  61. form1.Close;
  62. end;
  63.  
  64. procedure TForm1.FormCreate(Sender: TObject);
  65. begin
  66. q1:=TQueue.Create;
  67. q2:=TQueue.Create;
  68. end;
  69.  
  70. end.
  71.  
  72. unit Unit2;
  73. interface
  74. uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  75. Dialogs, StdCtrls;
  76. type
  77.  
  78. link=^node;
  79. node=record
  80.  
  81.  
  82. end;
  83. TQueue=class
  84. private
  85.  
  86.  
  87. public
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94. end;
  95. implementation
  96. constructor TQueue.create;
  97. begin
  98. endQ:=nil;
  99. begQ:=nil;
  100. end;
  101. function TQueue.qempty;
  102. begin
  103. result:=begQ=nil;
  104. end;
  105. procedure TQueue.qAdd;
  106. var help:link;
  107. begin
  108. new(help);
  109. help^.inf:=elem;
  110. help^.next:=nil;
  111. if qempty then
  112. begin
  113. endQ:=help;
  114. begQ:=help;
  115. end
  116. else
  117. begin
  118. endQ^.next:=help;
  119. endQ:=help;
  120. end;
  121. end;
  122.  
  123. procedure TQueue.qDel;
  124. var help:link;
  125. begin
  126. help:=begQ;
  127. if not qempty then
  128. begin
  129. begQ:=begQ^.next;
  130. dispose(help);
  131. end
  132.  
  133. if begQ=nil then endQ:=nil;
  134. end;
  135.  
  136. procedure TQueue.view;
  137. var cur:link;
  138. begin
  139. m.Lines.Clear;
  140. cur:=begQ;
  141. while cur<>nil do
  142. begin
  143. m.Lines.add(inttostr(cur^.inf));
  144. cur:=cur^.next;
  145. end;
  146. end;
  147. end.
  148.  


Nostalgia Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задала: Nostalgia (статус: Посетитель)
Вопрос отправлен: 22 апреля 2010, 00:10
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: webkent

Здравствуйте, Nostalgia!
Вот написал процедуру - Edit1.OnChange она проверяет весь текст Едита и выдирает только числа из него, помещая их в разные мемо, в зависимости от четности.

Приложение:
  1. procedure TForm1.Edit1Change(Sender: TObject);
  2. var
  3. i, j: word;
  4. begin
  5.  
  6. Memo1.Clear;
  7. Memo2.Clear;
  8.  
  9. if Length(Edit1.Text)>0 then
  10. for i := 1 to Length(Edit1.Text) do
  11. begin
  12. for j := 0 to 9 do
  13. if Edit1.Text[i] = IntToStr(j) then
  14. begin
  15. if j mod 2 = 0 then
  16. Memo1.Lines.Add(IntToStr(j))
  17. else
  18. Memo2.Lines.Add(IntToStr(j))
  19. end;
  20. end;
  21. end;


Ответ отправил: webkent (статус: 2-ой класс)
Время отправки: 22 апреля 2010, 08:05
Оценка за ответ: 5


Мини-форум вопроса

Всего сообщений: 4; последнее сообщение — 23 апреля 2010, 20:49; участников в обсуждении: 2.

22 апреля 2010, 10:34: Вопрос перемещён из тематического раздела Delphi » Общие вопросы по программированию в раздел Delphi » Алгоритмы, преобразования модератором Ерёмин А.А.

Nostalgia

Nostalgia (статус: Посетитель), 22 апреля 2010, 21:50 [#1]:

а как бы сделать, чтобы можно было вводить не просто цыфры, а числа ?
webkent

webkent (статус: 2-ой класс), 23 апреля 2010, 07:49 [#2]:

не понял, какие конкретно числа выводить?
webkent

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

Nostalgia (статус: Посетитель), 23 апреля 2010, 20:49 [#4]:

я имею введу, чтобы можно было вводить числа через пробел.. допустим три числа: 12 23 48 . соответственно 12 и 48 помещались бы в Мемо1, а 23 -во второе... вот как так бы сделать ? это возможно ?

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:50
Выполнено за 0.03 сек.