1

Тема: допоможіть із Програмою

Створіть процедуру для обчислення кількості символів “&” та “ENTER”  у рядку, що вводиться у вікно редагування Edit з іменем, яке формується з першої букви вашого імені та цифр номера вашої залікової книжки. Повідомлення про кількості знайдених символів виведіть у вікно редагування Memo з іменем, яке формується з першої букви вашого прізвища та вашого порядкового номера за журналом. Прокоментуйте програмний код.

2

Re: допоможіть із Програмою

Давайте код і питайте, що саме незрозуміло. Прокоментуємо.

Подякували: Torbins1

3 Востаннє редагувалося Torbins (13.12.2015 17:16:09)

Re: допоможіть із Програмою

“ENTER” має код #13, якщо у цьому проблема.

4

Re: допоможіть із Програмою

Вже скидую код

5

Re: допоможіть із Програмою

implementation

{$R *.dfm}

procedure TForm1.btn1Click(Sender: TObject);
var
  s: string;
  x, i : Integer;
   y:string; // оголошуємо змінні

begin
  s:= S222.Text;    //присвоюю змінні
  x:= 0;
  y:= '';
  for i:=1 to  Length(s) do   //рахую в циклі значення
  begin
    case s i of
     '@': x := x +1 ;
     #13: y := y  ;
    end
  end;
  P22.Lines.Add (  IntToStr(x) + '- кількість собачок  '
   + (y)  + ' кількість ентерів  '); //вивожу значення
  end;
  end.

6

Re: допоможіть із Програмою

Програму запускає , тільки коли у вікні Edit , я натискаю на ЕНТЕР , мені повинно рахувати кількість разів що користувач ввів у вікні едіт після натискання кнопки .Чомусь мені не обраховує . Допоможіть

7

Re: допоможіть із Програмою

Додайте тег code навколо свого коду.
Умова трохи дивна. Символ нового рядку (#13) в TEdit ввести... ну не те, що неможливо, але складно, він на це не розрахований. Треба писати окремий обробник OnKeyPress.
Рядки

   case s i of
     #13: y := y  ;

мабуть, у вас трохи не так виглядали. Це при копіюванні збилося чи ви редагуєте код і не можете зупинитися?
І замість "чомусь не обраховує" напишіть конкретно, що відбувається. Якщо компілятор пише про помилку, яку ви не розумієте - наводьте текст помилки. Якщо виводить щось, чого ви не очікували - пишіть, що виводить і чого очікували. Ну і коментувати - то коментувати:

var // оголошуємо змінні
  s: string; //вхідний рядок,
  x, //кількість символів &
  i, //лічільник циклу
  y:integer;//кількість символів ENTER 

8

Re: допоможіть із Програмою

Написав код , так як Ви написали .

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    btn1: TButton;
    S222: TEdit;
    P22: TMemo;
    lbl1: TLabel;
    lbl2: TLabel;
    procedure btn1Click(Sender: TObject);
    procedure btn1KeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btn1Click(Sender: TObject);
var
  s: string;
  x, i, y: Integer; // оголошуємо змінні

begin
  s:= S222.Text;    //присвоюю змінні
  x:= 0;
  y:= 0;
  for i:=1 to  Length(s) do   //рахую в циклі значення
  begin
    case s (i) of
     '@': x := x +1 ;
     #13: y := y  ;
    end
  end;
  P22.Lines.Add (  IntToStr(x) + '- кількість собачок  '
   +  IntToStr(y)  + ' кількість ЕНТЕРІВ  '); //вивожу значення
  end;

  procedure TForm1.btn1KeyPress(Sender: TObject; var Key: Char);
  var
  s: string;
  x, i, y: Integer;
  begin
  s:= S222.Text;    //присвоюю змінні
  x:= 0;
  y:= 0;
begin
case s (i) of
#13: y := y  ;
end;
end;
end;
end.



Але проблема не вирішена . При натисканні на кнопку , у вікні Мемо , повинно обраховувати скільки разів користувач ввів @ або Ентерів , але обраховує тільки кількість введених у вікно число @.
Незнаю як правильно потрібно написати цей код =(

9

Re: допоможіть із Програмою

Хіба ж Єнтери у Едітах фіксуються?
Щодо інших символов та взагали, можу запропонувати наступне:

procedure TForm1.Button1Click(Sender: TObject);
begin
 ShowMessage(format('Введено єнтерів: %d введено собачек: %d',[
   Length(Edit1.Text)-Length(StringReplace(Edit1.Text,#13,'',[rfReplaceAll]))
  ,Length(Edit1.Text)-Length(StringReplace(Edit1.Text,'@','',[rfReplaceAll]))
 ]));
end; 

Але з клавішей Ентер тобі доведеться працювати у другому компоненті.

10

Re: допоможіть із Програмою

kokosha
Задача поставлена не зовсім коректно, бо в едіт ентери з клавіатури не ввести. У мемо без проблем, а у едіт не можна. Але можна це обмеження обійти. Додайте на форму кнопку і в її обробник натискання додайте такий код:

S222.Text := S222.Text + #13;

11

Re: допоможіть із Програмою

Не кнопку, а в обробник OnKeyPress. Щоправда, я не певен, що додавання #13 прокатить, там треба ще думати - може, якусь заміну використати.

12

Re: допоможіть із Програмою

Дякую за допомогу, зараз буду пробувати . Я не думав що на цьому сайті , так швидко і якісно будуть давати відповіді на конкретні питання . Але пересвідчився .
Головне що Українською - рідною =)

13

Re: допоможіть із Програмою

kokosha написав:

Створіть процедуру для обчислення кількості символів “&” та “ENTER”  у рядку, що вводиться у вікно редагування Edit з іменем, яке формується з першої букви вашого імені та цифр номера вашої залікової книжки. Повідомлення про кількості знайдених символів виведіть у вікно редагування Memo з іменем, яке формується з першої букви вашого прізвища та вашого порядкового номера за журналом. Прокоментуйте програмний код.

для обчислення кількості символів створити кнопку, двічі на неї натиснути. Там треба написати if, в якому перевіряти, якщо si=& (це через масив), то кількість символів & збільшується на 1-цю (спочатку ця кількість=0 і в принципі в програмі можна не присвоювати кількості цих символів значення нуль - програма сама присвоїть, а після цього буде додаватися 1 після кожного if, що задовольняє умову si=&)
p.s. Там де si, то і - в квадратних дужках