Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
1 / 1 / 1
Регистрация: 11.12.2013
Сообщений: 59
1

Как разделить программу на модули?

17.12.2014, 17:27. Показов 2971. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
procedure TForm1.Button1Click(Sender: TObject);
const
  //Множество разделителей.
  D = ['.', ',', ':', ';', '!', '?', '-', ' ', #9, #10, #13];
  //Русская буква "А" в заглавном и строчном видах.
  Da = ['А', 'а'];
  //Буква "Б" в заглавном и строчном видах.
  Db = ['Б', 'б'];
var
  S : String;
  i, Len, LenW, LenWMin, CntW, CntWB, CntWEq, CntA, CntA1 : Integer;
begin
  //Исходный текст берём из Мемо1.
  S := Memo1.Text;
 
  //Решение задачи.
  Len := Length(S);
  LenW := 0; //Длина очередного слова.
  LenWMin := Len; //Начальная длина самого короткого слова.
  CntW := 0; //Количество слов в тексте.
  CntWB := 0; //Количество слов, начинающихся с буквы "Б".
  CntWEq := 0; //Количество слов, начинающихся и заканчивающихся одним и тем же символом.
  CntA := 0; //Количество букв А в последнем слове.
  CntA1 := 0; //Количество букв А в очередном слове.
  for i := 1 to Len do begin
    //Пропускаем разделители.
    if S[i] in D then Continue;
    //Подсчёт длины очередного слова.
    Inc(LenW);
    //Подсчёт букв "А" в очередном слове.
    if S[i] in Da then Inc(CntA1);
    //Отслеживаем конец слова и выполняем ряд подсчётов.
    if (i = Len) or (S[i + 1] in D) then begin
      //Задача А.
      Inc(CntW);
      //Задача Б.
      CntA := CntA1;
      CntA1 := 0; //Обнуляем сведения о количестве букв "А" в очередном слове.
      //Задача В.
      if S[i - LenW + 1] in Db then Inc(CntWB);
      //Задача Г.
      if S[i - LenW + 1] = S[i] then Inc(CntWEq);
      //Задача Д.
      if LenW < LenWMin then LenWMin := LenW;
      //Обнуление сведений о длине очередного слова.
      LenW := 0;
    end;
  end;
 
  //Ответ.
  Memo2.Clear;
  Memo2.Lines.Add('А. Количество слов в тексте: ' + IntToStr(CntW));
  Memo2.Lines.Add('Б. Количество букв "А" и "а" в последнем слове: ' + IntToStr(CntA));
  Memo2.Lines.Add('В. Количество слов, начинающихся с букв "Б" или "б": ' + IntToStr(CntWB));
  Memo2.Lines.Add('Г. Количество слов в которых совпадает первый и последний символы: ' + IntToStr(CntWEq));
  Memo2.Lines.Add('Д. Длина самого короткого слова: ' + IntToStr(LenWMin));
end;
Добавлено через 22 минуты
например как отделить
Delphi
1
2
3
var
  S : String;
  i, Len, LenW, LenWMin, CntW, CntWB, CntWEq, CntA, CntA1 : Integer;
в другой юнит
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.12.2014, 17:27
Ответы с готовыми решениями:

Как разделить программу на модули в Dec C++
Как происходит деление на модули в С++? вот например в Delphi я создавал новый unit и в обоих...

Разделить программу на модули
Есть программа. Помогите ее разбить и часть запихать в модуль, что бы все работало, а то у меня не...

Как в Userform разделить модули
Добрый день, товарищи! Как в Userform разделить модули? Допустим у меня 15 текстбоксов, на...

Как разделить систему на модули
Добрый день! мне нужен совет, я пытаюсь создать систему с модулями как мне его сделать ? т.е....

11
843 / 738 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
17.12.2014, 19:37 2
Цитата Сообщение от pampirius Посмотреть сообщение
например как отделить в другой юнит
А где ты значения в переменные хочеш записать? Так же в другом юните?

Добавлено через 48 минут
Текст из созданного MyUnit
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
unit MyUnit;
 
interface
 
const
  r = 150;
  st = 'Строка из моего MyUnit и в ней константа r = ';
var
  S : String;
  i, Len, LenW, LenWMin, CntW, CntWB, CntWEq, CntA, CntA1 : Integer;
 
implementation
 
end.
Текст основного проекта:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, XPMan, MyUnit;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    XPManifest1: TXPManifest;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  Label1.Caption:= st + IntToStr(r);
end;
 
end.
Если в своем юните будеш процедуру писать, то в своей программе имя ее в коде укажи. Она тоже будет работать, если она конечно рабочая у тебя.
0
1 / 1 / 1
Регистрация: 11.12.2013
Сообщений: 59
17.12.2014, 23:24  [ТС] 3
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
unit Unit5;
 
interface
const
//Множество разделителей.
  D = ['.', ',', ':', ';', '!', '?', '-', ' ', #9, #10, #13];
  //Русская буква "А" в заглавном и строчном видах.
  Da = ['А', 'а'];
  //Буква "Б" в заглавном и строчном видах.
  Db = ['Б', 'б'];
implementation
 
end.
сделал вот так) ещё надо 2 модуля намостырить
0
пофигист широкого профиля
4733 / 3167 / 859
Регистрация: 15.07.2013
Сообщений: 18,252
18.12.2014, 01:44 4
NIKOLAYY, ну скажи зачем надо было вписывать MyUnit в секцию interface.uses?
Разве в секции interface упоминаются "имена" из того модуля?
Лень было добавить секцию uses в implementation?
1
1 / 1 / 1
Регистрация: 11.12.2013
Сообщений: 59
18.12.2014, 07:55  [ТС] 5
ну парни так что делать то? я так и не вдуплил если честно

Добавлено через 53 минуты
Вот сделал как то так , это первый юнит
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    Memo2: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 Uses Unit2;
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
var
  S : String;
  i, Len, LenW, LenWMin, CntW, CntWB, CntWEq, CntA, CntA1 : Integer;
 
 
begin
  //Èñõîäíûé òåêñò áåð¸ì èç Ìåìî1.
  S := Memo1.Text;
 
  //Ðåøåíèå çàäà÷è.
  Len := Length(S);
  LenW := 0; //Äëèíà î÷åðåäíîãî ñëîâà.
  LenWMin := Len; //Íà÷àëüíàÿ äëèíà ñàìîãî êîðîòêîãî ñëîâà.
  CntW := 0; //Êîëè÷åñòâî ñëîâ â òåêñòå.
  CntWB := 0; //Êîëè÷åñòâî ñëîâ, íà÷èíàþùèõñÿ ñ áóêâû "Á".
  CntWEq := 0; //Êîëè÷åñòâî ñëîâ, íà÷èíàþùèõñÿ è çàêàí÷èâàþùèõñÿ îäíèì è òåì æå ñèìâîëîì.
  CntA := 0; //Êîëè÷åñòâî áóêâ À â ïîñëåäíåì ñëîâå.
  CntA1 := 0; //Êîëè÷åñòâî áóêâ À â î÷åðåäíîì ñëîâå.
  for i := 1 to Len do begin
    //Ïðîïóñêàåì ðàçäåëèòåëè.
    if S[i] in D then Continue;
    //Ïîäñ÷¸ò äëèíû î÷åðåäíîãî ñëîâà.
    Inc(LenW);
    //Ïîäñ÷¸ò áóêâ "À" â î÷åðåäíîì ñëîâå.
    if S[i] in Da then Inc(CntA1);
    //Îòñëåæèâàåì êîíåö ñëîâà è âûïîëíÿåì ðÿä ïîäñ÷¸òîâ.
    if (i = Len) or (S[i + 1] in D) then begin
      //Çàäà÷à À.
      Inc(CntW);
      //Çàäà÷à Á.
      CntA := CntA1;
      CntA1 := 0; //Îáíóëÿåì ñâåäåíèÿ î êîëè÷åñòâå áóêâ "À" â î÷åðåäíîì ñëîâå.
      //Çàäà÷à Â.
      if S[i - LenW + 1] in Db then Inc(CntWB);
      //Çàäà÷à Ã.
      if S[i - LenW + 1] = S[i] then Inc(CntWEq);
      //Çàäà÷à Ä.
      if LenW < LenWMin then LenWMin := LenW;
      //Îáíóëåíèå ñâåäåíèé î äëèíå î÷åðåäíîãî ñëîâà.
      LenW := 0;
    end;
  end;
 
  //Îòâåò.
  Memo2.Clear;
  Memo2.Lines.Add('À. Êîëè÷åñòâî ñëîâ â òåêñòå: ' + IntToStr(CntW));
  Memo2.Lines.Add('Á. Êîëè÷åñòâî áóêâ "À" è "à" â ïîñëåäíåì ñëîâå: ' + IntToStr(CntA));
  Memo2.Lines.Add('Â. Êîëè÷åñòâî ñëîâ, íà÷èíàþùèõñÿ ñ áóêâ "Á" èëè "á": ' + IntToStr(CntWB));
  Memo2.Lines.Add('Ã. Êîëè÷åñòâî ñëîâ â êîòîðûõ ñîâïàäàåò ïåðâûé è ïîñëåäíèé ñèìâîëû: ' + IntToStr(CntWEq));
  Memo2.Lines.Add('Ä. Äëèíà ñàìîãî êîðîòêîãî ñëîâà: ' + IntToStr(LenWMin));
end;
end.
end.
а вот второй
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
unit Unit2;
 
interface
 const
  //Ìíîæåñòâî ðàçäåëèòåëåé.
  D = ['.', ',', ':', ';', '!', '?', '-', ' ', #9, #10, #13];
  //Ðóññêàÿ áóêâà "À" â çàãëàâíîì è ñòðî÷íîì âèäàõ.
  Da = ['À', 'à'];
  //Áóêâà "Á" â çàãëàâíîì è ñòðî÷íîì âèäàõ.
  Db = ['Á', 'á'];
 
implementation
 
end.
мне надо ещё 2 модуля сделать и как дальше понятия не имею
0
843 / 738 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
18.12.2014, 10:17 6
northener, спс, сделал вот так:
Delphi
1
2
3
4
5
6
7
8
 var
  Form1: TForm1;
 
implementation
 
uses MyUnit;
 
{$R *.dfm}
Правда еще не компилировал, но думаю заработает и так.

pampirius, Нормально сделал, неплохо, тока зачем ты его Unit2 назвал? Лучше бы дал ему другое имя на всякий случай, а то потом забудеш, кинеш еще одну форму в поект свой и твой проект переименует твой юнит в свой файл.
0
1 / 1 / 1
Регистрация: 11.12.2013
Сообщений: 59
18.12.2014, 16:05  [ТС] 7
ну хорошо , допустим мы перенесли условия в другой модуль , как можно перенести процедуру а ещё может быть кнопку ?
0
843 / 738 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
18.12.2014, 16:29 8
Цитата Сообщение от pampirius Посмотреть сообщение
допустим мы перенесли условия в другой модуль , как можно перенести процедуру а ещё может быть кнопку
Зачем тебе кнопка в дополнительном модуле? Кнопку оставь в своей программе, а вот процедуру и нужный код можеш туда перенести.
0
1 / 1 / 1
Регистрация: 11.12.2013
Сообщений: 59
18.12.2014, 16:33  [ТС] 9
NIKOLAYY, ну задание блин такой разбить программу на 3 модуля) 1 я сделал . что ещё можно в остальных двух сделать? я не знаю если честно как модули вообще делаются !
0
843 / 738 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
19.12.2014, 09:01 10
Лучший ответ Сообщение было отмечено pampirius как решение

Решение

Цитата Сообщение от pampirius Посмотреть сообщение
ну задание блин такой разбить программу на 3 модуля
Да можно и 5 просто имена их всех пропиши в своей программе.

Цитата Сообщение от pampirius Посмотреть сообщение
как модули вообще делаются !
Нажимаеш файл, закрыть все, затем файл, новый, юнит.
Вот в этом месте и пишеш свой модуль, Ложиш туда, переменные, константы, функции, процедуры, затем ложиш его в свою папку с проектом, прописываеш имя модуля трвоего вызываеш в своей программе функции и процедуры из своего модуля.
Напиши свой простой мудуль с функцией на сложение двух чисел хотя бы, и испробуй как это работает.
1
1 / 1 / 1
Регистрация: 11.12.2013
Сообщений: 59
26.12.2014, 17:19  [ТС] 11
наверное скажете что я дурак ) я если честно ваще в delphi не шарю
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
unit Unit2;
 
interface
 
procedure TForm1.Button1Click(Sender: TObject);
var
  S : String;
  i, Len, LenW, LenWMin, CntW, CntWB, CntWEq, CntA, CntA1 : Integer;
   
 
implementation
 
end.
чот не идёт как то

Добавлено через 23 часа 19 минут
ребят, реально не понимаю . Помогите пожалуйста
0
843 / 738 / 342
Регистрация: 22.09.2012
Сообщений: 5,034
26.12.2014, 20:37 12
Delphi
1
2
3
4
5
6
7
8
9
10
11
unit MyUnit;
 
interface
 
var
  S : String;
  i, Len, LenW, LenWMin, CntW, CntWB, CntWEq, CntA, CntA1 : Integer;
 
implementation
 
end.
0
26.12.2014, 20:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.12.2014, 20:37
Помогаю со студенческими работами здесь

Как программу на VB разбить на модули?
Может быть кто-нибудь сталкивался... Имеется большой проект на VB. Его бы разбить на отдельные...

Как грамотно разбить программу на модули
Я начал замечать, что с определённого момента (обычно он наступает довольно быстро) мои программы...

Как правильно разделять программу на модули
Как же всё-таки правильно разделять программу на модули? В интернете нашел 2 способa Но всё...

Как разбить программу на отдельные модули в количестве 3 штук?
#include &lt;iostream&gt; using namespace std; int main() { int n; int i = 0; int s = 0; int z; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru