Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
 Аватар для rolandas
23 / 12 / 2
Регистрация: 20.04.2011
Сообщений: 382

Как применить (вызвать) процедуру?

02.05.2020, 23:27. Показов 1085. Ответов 34
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
как использовать процедуру Rulys ?

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
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Label1: TLabel;
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    procedure Button1Click(Sender: TObject);
 
  private
    { Private declarations }
    procedure Rulys(i,j,t,n,p:Integer);
 
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 i,j,t,n,p:Integer;
  a: array[1..1000] of integer;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Rulys(i,j,t,n,p:Integer);
begin
n:=48;
for i:=1 to n do
for j:=1 to n-i do
if a[j]>a[j+1] then
begin
p:=a[j];
a[j]:=a[j+1];
a[j+1]:=p;
end;
end;
 
 
procedure TForm1.Button1Click(Sender: TObject);
 
begin
 
a[1]:=33; a[2]:=9; a[3]:=48; a[4]:=2; a[5]:=40;
 
begin
//Rulys;
end;
 
Edit1.Text:=IntToStr(a[1]);
Edit2.Text:=IntToStr(a[2]);
Edit3.Text:=IntToStr(a[3]);
Edit4.Text:=IntToStr(a[4]);
Edit5.Text:=IntToStr(a[5]);
 
 
end;
 
end.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.05.2020, 23:27
Ответы с готовыми решениями:

Как к нескольким картинкам в ImageList применить одну и ту же процедуру?
на форме 81 штук image, и 1 ImageList с 40 картинками внутри. надо что б эта процедура распространялась на все компоненты image. ...

Как вызвать процедуру?
Помогите, пожалуйста. Как вызвать процедуру Action ? С какими параметрами? procedure Action(var f: arr; var count: integer); begin ...

как вызвать процедуру?
как вызвать HeapSort в процедуре нажатия кнопки? procedure HeapSort(var N: integer); var i: integer; procedure Swap(var...

34
Почетный модератор
 Аватар для Puporev
64320 / 47616 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
03.05.2020, 13:46
Студворк — интернет-сервис помощи студентам
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
const n=20;
 
var
  Form1: TForm1;
  a:array[1..n] of integer;
implementation
 
{$R *.dfm}
procedure Rulys;
var i,j,p:integer;
begin
for i:=1 to n do
for j:=1 to n-i do
if a[j]>a[j+1] then
 begin
  p:=a[j];
  a[j]:=a[j+1];
  a[j+1]:=p;
 end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
randomize;
StringGrid1.ColCount:=n;
StringGrid2.ColCount:=n;
for i:=1 to n do
 begin
  a[i]:=10+random(90);
  StringGrid1.Cells[i-1,0]:=inttostr(a[i]);
 end;
Rulys;
for i:=1 to n do
StringGrid2.Cells[i-1,0]:=inttostr(a[i]);
end;
0
 Аватар для rolandas
23 / 12 / 2
Регистрация: 20.04.2011
Сообщений: 382
03.05.2020, 13:48  [ТС]
Цитата Сообщение от northener Посмотреть сообщение
не получается
да сколько можно уже..

проблема не списать а в какое место кода вставить и синтаксис какой при переделке под то, щто именно нужно
0
Почетный модератор
 Аватар для Puporev
64320 / 47616 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
03.05.2020, 13:50
Человек пишущий
Цитата Сообщение от rolandas Посмотреть сообщение
щто
никогда не сможет написать рабочий код.
1
пофигист широкого профиля
4770 / 3207 / 862
Регистрация: 15.07.2013
Сообщений: 18,614
03.05.2020, 13:51
Цитата Сообщение от rolandas Посмотреть сообщение
при переделке под то, щто именно нужно
А что именно нужно?
0
 Аватар для rolandas
23 / 12 / 2
Регистрация: 20.04.2011
Сообщений: 382
03.05.2020, 14:08  [ТС]
Цитата Сообщение от Puporev Посмотреть сообщение
никогда не сможет
твой код неработает как записал так

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
82
83
84
85
86
87
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
 
  private
    { Private declarations }
    procedure Rulys;
 
  public
    { Public declarations }
  end;
 
const n=20;
 
var
  Form1: TForm1;
  a:array[1..n] of integer;
 
 
implementation
 
{$R *.dfm}
procedure Rulys;
var i,j,p:integer;
begin
for i:=1 to n do
for j:=1 to n-i do
if a[j]>a[j+1] then
 begin
  p:=a[j];
  a[j]:=a[j+1];
  a[j+1]:=p;
 end;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
 
var i:integer;
StringGrid1,StringGrid2 : Integer;
 
begin
randomize;
StringGrid1.ColCount:=n;
StringGrid2.ColCount:=n;
for i:=1 to n do
 begin
  a[i]:=10+random(90);
  StringGrid1.Cells[i-1,0]:=inttostr(a[i]);
 end;
Rulys;
for i:=1 to n do
StringGrid2.Cells[i-1,0]:=inttostr(a[i]);
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
 
Edit1.Text:=IntToStr(a[1]);
Edit2.Text:=IntToStr(a[2]);
Edit3.Text:=IntToStr(a[3]);
Edit4.Text:=IntToStr(a[4]);
Edit5.Text:=IntToStr(a[5]);
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
a[1]:=33; a[2]:=9; a[3]:=48; a[4]:=2; a[5]:=40;
end;
 
end.
0
Почетный модератор
 Аватар для Puporev
64320 / 47616 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
03.05.2020, 14:10
Цитата Сообщение от rolandas Посмотреть сообщение
твой код неработает
Тот бред что ты написал это не мой код. Особенно понравилось
Цитата Сообщение от rolandas Посмотреть сообщение
StringGrid1,StringGrid2 : Integer
0
пофигист широкого профиля
4770 / 3207 / 862
Регистрация: 15.07.2013
Сообщений: 18,614
03.05.2020, 14:11
Цитата Сообщение от rolandas Посмотреть сообщение
твой код неработает как записал так
Цитата Сообщение от rolandas Посмотреть сообщение
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
StringGrid1,StringGrid2 : Integer;
begin
randomize;
Он над нами издевался,...
0
03.05.2020, 14:15

Не по теме:

Мстит за природу..

0
 Аватар для rolandas
23 / 12 / 2
Регистрация: 20.04.2011
Сообщений: 382
03.05.2020, 14:22  [ТС]
Цитата Сообщение от northener Посмотреть сообщение
Он над нами издевался
так и понял :P помощник

Добавлено через 6 минут
ладно, вот мой код, который работает, но остался один минус
для сортировки нужно нажать на кнопку не менее 45 раз.

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
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Label1: TLabel;
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
    procedure Rulys;
  public
    { Public declarations }
  end;
 
const n=48;
var
Form1: TForm1;
a: array[1..n] of integer;
i,j,p:integer;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Rulys;
begin
for i:=1 to n do
for j:=1 to n-i do
if a[j]>a[j+1] then
begin
p:=a[j];
a[j]:=a[j+1];
a[j+1]:=p;
end;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
 
begin
a[1]:=33; a[2]:=9; a[3]:=48; a[4]:=2; a[5]:=40;
 
Rulys;
 
Edit1.Text:=IntToStr(a[1]);
Edit2.Text:=IntToStr(a[2]);
Edit3.Text:=IntToStr(a[3]);
Edit4.Text:=IntToStr(a[4]);
Edit5.Text:=IntToStr(a[5]);
 
end;
end.
0
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,495
03.05.2020, 14:35
Цитата Сообщение от rolandas Посмотреть сообщение
вот мой код, который работает
Как же он работает? У тебя массив 48 элементов, заполняются 5 элементов, а сортируются все 48. Остальные 43 что содержат?

Процедуру сортировки в этом виде нужно вызвать только один раз, она нормально работает!

Добавлено через 4 минуты
Вот твоя процедура сортировки и проверка работы:
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
procedure TForm1.Rulys;
var
  i, j, p: integer;
begin
  for i := 1 to n-1 do
    for j := 1 to n-i do
      if a[j] > a[j+1] then begin
        p := a[j];
        a[j] := a[j+1];
        a[j+1] := p;
      end;
end;
 
procedure TForm1.Button11Click(Sender: TObject);
var
  i: integer;
  s: string;
begin
  Randomize;
  // Заполнение массива случайными элементами
  for i := 1 to n do
    a[i] := Random(100);
 
 
  // Вывод массива в Memo
  s := '';
  for i := 1 to n do
    s := s + IntToStr(a[i]) + ' ';
  Memo1.Lines.Add(s);
 
  // Сортировка
  Rulys;
 
  // Вывод массива в Memo
  s := '';
  for i := 1 to n do
    s := s + IntToStr(a[i]) + ' ';
  Memo1.Lines.Add(s);
end;
1
 Аватар для rolandas
23 / 12 / 2
Регистрация: 20.04.2011
Сообщений: 382
03.05.2020, 14:46  [ТС]
Цитата Сообщение от AzAtom Посмотреть сообщение
Как же он работает
да, проверил с конца последние значения массива и мои
отсортированные цифры оказались там

Delphi
1
2
3
4
5
Edit1.Text:=IntToStr(a[44]);
Edit2.Text:=IntToStr(a[45]);
Edit3.Text:=IntToStr(a[46]);
Edit4.Text:=IntToStr(a[47]);
Edit5.Text:=IntToStr(a[48]);
спасибо, значит все работает.
0
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,495
03.05.2020, 15:13
rolandas, если надо сортировать 5 элементов, то и n=5 сделай.
1
 Аватар для rolandas
23 / 12 / 2
Регистрация: 20.04.2011
Сообщений: 382
03.05.2020, 15:46  [ТС]
Цитата Сообщение от AzAtom Посмотреть сообщение
если надо
да, это понял - по максимальному значению.
мне надо было по убыванию штоб в первом элементе масива - было самое большое значение,
во втором - по величине значения - второе и т.д.

сделал реверс и всё отлично теперь.

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
procedure TForm1.Rulys;
 
begin
 
for i:=1 to n do
for j:=1 to n-i do
if a[j]>a[j+1] then
begin
p:=a[j];
a[j]:=a[j+1];
a[j+1]:=p;
end;
zz:=0;
for z:=n downto 1 do // перезаписка массива реверсом
begin
zz:=zz+1;
a[zz]:=a[z];
end;
end;
0
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,495
03.05.2020, 15:51
Цитата Сообщение от rolandas Посмотреть сообщение
перезаписка массива реверсом
А что, нельзя так записать без перестановки массива?
if a[j] < a[j+1] then

И к тому же, в таком виде:
Delphi
1
2
3
4
5
6
zz:=0;
for z:=n downto 1 do // перезаписка массива реверсом
begin
zz:=zz+1;
a[zz]:=a[z];
end;
потеряется половина массива и получится отзеркаленая половина.
1
 Аватар для rolandas
23 / 12 / 2
Регистрация: 20.04.2011
Сообщений: 382
03.05.2020, 16:06  [ТС]
Цитата Сообщение от AzAtom Посмотреть сообщение
А что, нельзя так записать?
не, я не до столько сообразительный
« слишком много кода не бывает »

Добавлено через 6 минут
Цитата Сообщение от AzAtom Посмотреть сообщение
отзеркаленая половина.
a с какого перепугу ей отзеркалиться не понял.. ведь максимальное значение
константы и ноль - не меняется.. и массив потихоньку перебирается..

ладно, на всякий безопасный переписал в ваш
Delphi
1
if a[j] < a[j+1] then


Добавлено через 6 минут
ну в общем понял, там с половины будет считывать уже по новому записаный массив и на себя записывать
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.05.2020, 16:06

Как вызвать процедуру
Здравствуйте. На одном сайте нашел нужную мне процедуру. procedure DelStroki(Memo:tmemo); const Stroka=''; var i,i2:integer; ...

Как вызвать процедуру в процедуре
Ребят, помогите пожалуйста! Я хочу эту процедуру: procedure TForm23.Edit2KeyPress(Sender: TObject; var Key: Char); begin case key of ...

Как правильно вызвать процедуру.
Помогите пожалуйста с вызовом процедур. Вот у у меня есть процедура сортировки: procedure SortVstav(mns:mas;Var ms:mas;Var nop:integer);...

Как вызвать процедуру в потоке из public?
Всем привет как вызвать процедуру в потоке из паблик?

Как вызвать процедуру в dll из службы
Пробую так, в приложении все работает, в службе нет var LibHandle: THandle; fExtract: procedure; begin LibHandle :=...


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

Или воспользуйтесь поиском по форуму:
35
Ответ Создать тему
Новые блоги и статьи
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru