Форум программистов, компьютерный форум, киберфорум
Delphi
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.94/16: Рейтинг темы: голосов - 16, средняя оценка - 4.94
1 / 1 / 0
Регистрация: 11.09.2013
Сообщений: 37

Для чего нужна функция Get?

29.07.2014, 16:46. Показов 3431. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста, объясните, для чего нужно функция Get

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
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
unit Unit1;
 
interface
        type
 
        TMasList = class
        private
          FCount : integer;
          FDate : array of byte;
          k:integer;
          function GetItem (i: integer):byte;
          procedure SetItem (i: integer; a: byte);
          procedure BeforeCountInc;
        public
          constructor Create;
          destructor Destroy; override;
          procedure Add(a: byte);
          procedure insert (pos: integer; a: byte);
          procedure delete(pos:integer);
          procedure clear;
          procedure print;  
          property count : integer read FCount;
          property Items[i: integer]: Byte read GetItem write SetItem;
        end;
 
implementation
 
{ TMasList}
 
{ TMasList }
 
procedure TMasList.Add(a: byte);
begin
 
k:=k+1;
  BeforeCountInc;
  FDate[FCount] := a;
  inc(FCount);
end;
 
procedure TMasList.BeforeCountInc;
var
  Len : Integer;
begin
  Len := Length(FDate);
  if FCount = Len then
    SetLength(FDate, Len * 2);
end;
 
procedure TMasList.clear;
var i: integer;
begin  
FCount:=0;
end;
 
constructor TMasList.Create;
begin
  inherited Create;
  SetLength(FDate, 1);
  FCount := 0;
end;
 
procedure TMasList.delete(pos: integer);
var i,l: integer;
begin
if FCount>pos then begin
for i:=pos to FCount-1 do
FDate[i]:= FDate[i+1];
FCount:=  FCount-1;        
end;
end;
 
destructor TMasList.Destroy;
begin
fDate:=nil;
inherited Destroy;
end;
 
function TMasList.GetItem(i: integer): byte;
var y:integer;
begin       
if FCount>i then begin
y:=FDate[i];
end;
end;
 
procedure TMasList.insert(pos: integer; a: byte);
var i: integer;
begin
if FCount>pos then
  begin
    Setlength(FDate, Fcount*2);
    if  Fcount>=pos then
    begin
      Fcount:=Fcount+1;
      for i:=Fcount downto pos+1 do
      FDate[i]:=FDate[i-1];
      FDate[pos]:=a;
    end;
  end
  else add(A);
end;
 
procedure TMasList.print;
var
  i : Integer;
begin
  for i := 0 to FCount - 1 do write(FDate[i], ' ');
end;
 
procedure TMasList.SetItem(i: integer; a: byte);
begin                          
 if FCount>i then
 FDate[i]:=a;
 
end;
 
end.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.07.2014, 16:46
Ответы с готовыми решениями:

А вообще для чего нужна диаграма?
Как-то раньше не обращал внимания :) (5 лет работаю в Delphi) Но, как выяснилось, кроме закладки Code, где собственно и набирается...

с чего начинать - база данных нужна для себя
заключается в том , что бы я мог найти компоненты , купленные мной же . Дело в том , что покупаю компоненты и потом , часть находится дома...

Методом Гаусса: для чего нужна переменная В в коде?
// Решить матрицу методом Гаусса program Project2; {$APPTYPE CONSOLE} uses SysUtils, Math; type Matrix = array of...

29
Модератор
10434 / 5722 / 3405
Регистрация: 17.08.2012
Сообщений: 17,414
29.07.2014, 18:27
В Вашей программе нет функции с именем get.
0
1 / 1 / 0
Регистрация: 11.09.2013
Сообщений: 37
29.07.2014, 18:30  [ТС]
а это что?

Delphi
1
2
3
4
5
6
7
function TMasList.GetItem(i: integer): byte;
var y:integer;
begin       
if FCount>i then begin
y:=FDate[i];
end;
end;
0
Модератор
10434 / 5722 / 3405
Регистрация: 17.08.2012
Сообщений: 17,414
29.07.2014, 18:32
Это функция TMasList.GetItem.
0
1 / 1 / 0
Регистрация: 11.09.2013
Сообщений: 37
29.07.2014, 18:34  [ТС]
ну хорошо. пускай будет так. что делает функция GetItem?
0
Модератор
10434 / 5722 / 3405
Регистрация: 17.08.2012
Сообщений: 17,414
29.07.2014, 18:40
Ничего не делает, поскольку функция не имеет возвращаемого значения и не модифицирует никаких глобальных переменных.
0
1 / 1 / 0
Регистрация: 11.09.2013
Сообщений: 37
29.07.2014, 18:42  [ТС]
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
Ничего не делает, поскольку функция не имеет возвращаемого значения и не модифицирует никаких глобальных переменных.
а вот такая штука зачем нужна?

Delphi
1
property Items[i: integer]: Byte read GetItem write SetItem;
0
Модератор
10434 / 5722 / 3405
Регистрация: 17.08.2012
Сообщений: 17,414
29.07.2014, 18:50
Это описание свойства Items класса TMasList. И... что?

Добавлено через 57 секунд
Функция от присутствия этой строки не начнёт иметь возвращаемого значения.
0
1 / 1 / 0
Регистрация: 11.09.2013
Сообщений: 37
29.07.2014, 18:54  [ТС]
есть такая штука
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
program Project2;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils,
  Massiv in 'Massiv.pas',
  DINMassiv in 'DINMassiv.pas',
  TFiles in 'TFiles.pas',
 
// Unit4 in '..\..\..\..\..\Admin\Desktop\Íîâàÿ ïàïêà (6)\Äèíèìà÷åñêèå ñïèñêè è ìàññèâû2\Unit4.pas';
 
var
  f : TFileList;
  a : TMasList; i,k,j, s:integer;
  b : TDinMasList;              n,kl,k1:integer;  x,y:integer;
begin
  a := TMasList.Create;
  b := TDinMasList.Create;
  f := TFileList.Create;
       randomize;
 for j:=0 to 5 do
   begin
 
    x := random(a.count)  ;
    n := random(5);
    y := random(100);
  case n of
  0: begin writeln('add'); a.add(y); b.add(y); f.Add(y);
   a.print; write('//');  b.print; write('\\'); f.print;   end;
  1: begin writeln('delete'); a.delete(x);   b.delete(x); f.delete(x);
    a.print;  write('//'); b.print; write('\\'); f.print;   end;
  2: begin writeln('insert'); a.insert(x,y); b.insert(x,y); f.insert(x,y);
    a.print; write('//'); b.print; write('\\'); f.print; end;
  3: begin writeln('clear'); a.clear; b.clear; f.clear;
  a.print;write('//'); b.print; write('\\'); f.print; end;
  [B]4: begin writeln('get items'); a.Items[x]:=y;[/B]  b.Items[x] := y; f.Items[x] := y;
   a.print; write('//');b.print; write('\\'); f.print;   end;
 
   end;
  end;  
  writeln;
 
 
     writeln;
   a.print;      write('//');b.print;   write('   \\   '); f.print;    
 
  a.Destroy;   b.Destroy;   f.Destroy;    
     readln;
  end.



и потом этот Items обращается только к SetItem

Добавлено через 1 минуту
Цитата Сообщение от Cyborg Drone Посмотреть сообщение
Это описание свойства Items класса TMasList. И... что?

Добавлено через 57 секунд
Функция от присутствия этой строки не начнёт иметь возвращаемого значения.
то есть функция GetItem вообще не нужна?
0
 Аватар для Игорь[Igor]
726 / 478 / 130
Регистрация: 24.12.2008
Сообщений: 3,924
29.07.2014, 19:03
Когда делаеш
a.Items[x]:=y;
то работает функция с Get
если
y:=a.Items[x];
то работает процедура с Set
и должна изменить какую-то глобальную переменную обычно начинающююся с F в имени

Delphi
1
2
3
4
5
6
7
function TMasList.GetItem(i: integer): byte;
var y:integer;
begin       
if FCount>i then begin
y:=FDate[i];
end;
end;
Это вариант не рабочий, а если бы Y была глобальной допустим то было бы все нормально

Примерно так вот
0
Модератор
10434 / 5722 / 3405
Регистрация: 17.08.2012
Сообщений: 17,414
29.07.2014, 19:06
Не знаю. Просто, по-моему, функция TMasList.GetItem должна выглядеть так:
Delphi
1
2
3
4
function TMasList.GetItem(i: integer): byte;
begin       
if FCount>i then Result:=FDate[i];
end;
Однако, меня смущает, что функция всё же не возвращает значения при FCount ≤ i.

Добавлено через 2 минуты
Игорь[Igor], в случае с глобальной переменной подпрограмму TMasList.GetItem проще было бы оформить в виде процедуры, а не функции.
1
 Аватар для Игорь[Igor]
726 / 478 / 130
Регистрация: 24.12.2008
Сообщений: 3,924
29.07.2014, 19:27
Да, я немного не правильно написал.

Эта конструкция больше похожа на процедуру с Set, но Y должен быть глобальным раз ему передаем

Delphi
1
2
3
4
5
6
7
function TMasList.GetItem(i: integer): byte;
var y:integer;
begin       
if FCount>i then begin
y:=FDate[i];
end;
end;
Добавлено через 1 минуту
Ну а тут уже ясно что кудато что-то передается
Delphi
1
2
3
4
function TMasList.GetItem(i: integer): byte;
begin       
if FCount>i then Result:=FDate[i];
end;
И так уже будет работать
1
1 / 1 / 0
Регистрация: 11.09.2013
Сообщений: 37
29.07.2014, 19:29  [ТС]
переменная i - обычный счетчик. и при значениях меньше 1 нам возвращать ничего не нужно
0
 Аватар для Игорь[Igor]
726 / 478 / 130
Регистрация: 24.12.2008
Сообщений: 3,924
29.07.2014, 19:43
Тут все запутано как-то, начало надо смотреть
0
1 / 1 / 0
Регистрация: 11.09.2013
Сообщений: 37
29.07.2014, 19:50  [ТС]
Цитата Сообщение от Игорь[Igor] Посмотреть сообщение
Тут все запутано как-то, начало надо смотреть
то, что написано в шапке, это и есть начало. ну точнее первый Unit

Добавлено через 2 минуты
а это основная программа, которая использует этот Unit

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
program Project2;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils,
  Massiv in 'Massiv.pas',
  DINMassiv in 'DINMassiv.pas',
  TFiles in 'TFiles.pas',
 
// Unit4 in '..\..\..\..\..\Admin\Desktop\Новая папка (6)\Динимаческие списки и массивы2\Unit4.pas';
 
var
  f : TFileList;
  a : TMasList; i,k,j, s:integer;
  b : TDinMasList;              n,kl,k1:integer;  x,y:integer;
begin
  a := TMasList.Create;
  b := TDinMasList.Create;
  f := TFileList.Create;
       randomize;
 for j:=0 to 5 do
   begin
 
    x := random(a.count)  ;
    n := random(5);
    y := random(100);
  case n of
  0: begin writeln('add'); a.add(y); b.add(y); f.Add(y);
   a.print; write('//');  b.print; write('\\'); f.print;   end;
  1: begin writeln('delete'); a.delete(x);   b.delete(x); f.delete(x);
    a.print;  write('//'); b.print; write('\\'); f.print;   end;
  2: begin writeln('insert'); a.insert(x,y); b.insert(x,y); f.insert(x,y);
    a.print; write('//'); b.print; write('\\'); f.print; end;
  3: begin writeln('clear'); a.clear; b.clear; f.clear;
  a.print;write('//'); b.print; write('\\'); f.print; end;
  [B]4: begin writeln('get items'); a.Items[x]:=y;[/B]  b.Items[x] := y; f.Items[x] := y;
   a.print; write('//');b.print; write('\\'); f.print;   end;
 
   end;
  end;  
  writeln;
 
 
     writeln;
   a.print;      write('//');b.print;   write('   \\   '); f.print;    
 
  a.Destroy;   b.Destroy;   f.Destroy;    
     readln;
  end.
0
157 / 300 / 47
Регистрация: 14.08.2012
Сообщений: 2,578
29.07.2014, 21:57
Если перевести название функции с английского, то оно знать: "Узнать". В словарях есть ещё несколько значений. Обычно так называется функции позволяющие что-то узнать(узнать какие-нибудь данные).
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33398 / 21508 / 8236
Регистрация: 22.10.2011
Сообщений: 36,906
Записей в блоге: 12
30.07.2014, 00:32
Обычный геттер для связи со свойством класса.
Цитата Сообщение от саша40 Посмотреть сообщение
Если перевести название функции с английского, то оно знать: "Узнать"
Садись, два. To get - "получить" (не по шее, как следовало бы дать твоему учителю английского), а не узнать. Как будет "узнать" - это тебе домашнее задание...
2
1 / 1 / 0
Регистрация: 11.09.2013
Сообщений: 37
30.07.2014, 12:05  [ТС]
по идее функция GetItem должна что-то куда-то возвращать. а что и куда - не понятно
0
Модератор
10434 / 5722 / 3405
Регистрация: 17.08.2012
Сообщений: 17,414
30.07.2014, 15:15
По идее, по аналогии с TMasList.SetItem, в качестве возвращаемого значения функции TMasList.GetItem должен быть байт FDate[i].
0
1 / 1 / 0
Регистрация: 11.09.2013
Сообщений: 37
31.07.2014, 17:42  [ТС]
в Unit'е написана функция, а как я использовать в основной программе?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.07.2014, 17:42
Помогаю со студенческими работами здесь

Для чего нужна BASSWMA?
Насколько я понял данная библиотека является аддоном для библиотеки bass, и позволяет воспроизводить WMA файлы, но даже без данного аддона...

Для чего реально может применяться функция LoWord
Привет всем, подскажите пожалуйста, для чего реально может применяться функция function LoWord(AnInteger: Longint): Word; Которая,...

Для чего нужна это функция?
Мне нужно разобрать чужой код и не могу понять для чего используется это функция: function pQuery($q,$type='hs'){ if...

Для чего нужна функция onload
Здраствуйте. Может кто нибудь помочь мне с етим вопросом для чего нужна функция onload и что будет если я не напишу onload в javascript. ...

Функция time(0) для чего тут нужна?
Для чего функция time(0) тут нужна??? #pragma once #include <iostream> class CardPack { public: struct card {


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru