Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 29.07.2015
Сообщений: 48

Метод очищает поле (-ля) объекта

22.09.2016, 23:43. Показов 2925. Ответов 24
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В Delphi описываю метод, который должен очистить некоторые поля объекта. Что-то вроде инициации. Удалять (деструктор) и создавать (конструктор) объект при этом нельзя.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
TMyData = class
…
Buffer: array of byte; //буфер с данными- динамический массив
N: Integer; // содержит номер последнего "полезного" байта в буфере
count: integer;  //количество принятых байт 
…
procedure Buffer_clean(); //очистить буфер. В идеале хочу очистить в одном методе  еще поля N и count
Var I:integer;
begin
for i := 0 to Length(Buffer) do
 
 Buffer[i]:=0;
end;
У меня задача написать метод, который очищает поле(-ля) объекта. При компиляции ошибка. Хочу очистить в одном методе еще поля N и count. Помогите или подскажите, где ошибаюсь.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.09.2016, 23:43
Ответы с готовыми решениями:

Можно ли вызвать метод одного объекта через метод другого объекта?
Мне нужно сделать так, чтобы при вызове метода OnMouseDown() Первого объекта вызывался метод IEnumerator Inst() Второго объекта. Как это...

Вставка фотографий сотрудников через поле подстановки (Поле объекта OLE)
Добрый день! Помогите плиз. Смысл такой, необходимо, чтобы при смене работника, менялась его фотография в форме. Лучше, если эти...

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

24
0 / 0 / 0
Регистрация: 29.07.2015
Сообщений: 48
08.10.2016, 23:58  [ТС]
Студворк — интернет-сервис помощи студентам
На форме есть две кнопки «Открыть порт № 1» и «Открыть порт № 2». Каждая поодтедности создает экземпляр Bufer_Port1 и Bufer_Port2. Возможно, что пользователь будет работать только с одним портом ми тогда один из экземпляров Bufer_Port1 или из Bufer_Port2 не понадобиться . Можно конечно объявить массив

Buffer_Port:array[1..NumPorts] of TBuffer_Port;

И создавать всегда два экземпляра, когда открывается хоть один порт.
Как бы строчку 48

Memo3.Lines.Add(TData_port('Buffer_Port1 ').Print_Buffer); //РАБОТАЕТ

Заменить номер в имени экземпляра на

Memo3.Lines.Add(TData_port('Buffer_Port[i]').Print_Buffer);
0
 Аватар для MyEternity
97 / 97 / 25
Регистрация: 25.04.2016
Сообщений: 525
09.10.2016, 10:37
1. Делаете Record вида "Клиентский буффер", или Buffer_Port.
2. На обе кнопки можно повесить один обработчик OnClick и разбирать кнопки по (Sender as TButton).Tag например.
3. Делаете массив Record-ов из пункта 1 в секции private/public/protected класса (в зависимости от того, понадобится ли вам его использовать где-то еще или нет).
4. При создании класса (в вашем случае это форма) выделяете память под массив.
5. При destroy класса очищаете память массива.
Таким образом у вас всегда будет создано 2 ваших Record с хранящейся информацией в них - это сильно упростит задачу. Останется только правильно наполнять/очищать записи (Record) при каких-то ваших действиях.

В целом, все это вам уже посоветовали в ветке выше, я лишь резюмирую.
0
0 / 0 / 0
Регистрация: 29.07.2015
Сообщений: 48
09.10.2016, 22:43  [ТС]
Решение не новое (Классика). Сначала объявляем строковую переменную, а потом её передаем в качестве имени:
Delphi
1
2
3
4
5
6
Var s: AnsiString;
Buffer_Port1, Buffer_Port2: TData_port;   // Buffer_Port1 объект порта №1 класса  TData_port
Number_Port: Integer; // содержит индекс в имени порта SPortAx1  или SPortAx2
….
s:= 'Buffer_Port' + IntToStr(Number_Port);
 Memo3.Lines.Add(TData_port(s).Print_Buffer);
Добавлено через 2 часа 52 минуты
Неправильное решение! Компилятор не выдает ошибку. А работает неправильно!
0
188 / 155 / 17
Регистрация: 18.12.2015
Сообщений: 179
10.10.2016, 23:45
Цитата Сообщение от Plus Посмотреть сообщение
Решение не новое (Классика). Сначала объявляем строковую переменную, а потом её передаем в качестве имени:
Plus, просто, не делайте так.
0
0 / 0 / 0
Регистрация: 29.07.2015
Сообщений: 48
16.01.2017, 17:40  [ТС]
Есть законченный модуль TMy_Class_1 _Unit, в котором реализован объект. Отдельно работая все получается и хорошо и выполняется конструктор Create . Решил создать другой модуль TMy_Class_2_Unit, в котором будет свой класс, полем которого будет экземпляр Messages .
Как я понимаю при создании TMy_Class_2_Unit.Create, должен создать Messages автоматически, но он не создается пишет 'экземпляр НЕ создан'.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
  TMy_Class_2_Unit = class(TObject)
  private
  public // Сначала объявляются переменные, только потом методы.
…    StatusID: Integer; // Режим состояния
    StatusStr: String; // текстовое описание  ошибки
    Messages: TMy_Class_1 _Unit; //Поле, указывающее на другой объект
…
    constructor Create();
  published
…
…
constructor TMy_Class_2_Unit.Create;
begin
//
StatusStr:= 'экземпляр  НЕ создан';
///Messages.Create;
if Messages <> nil then
    StatusStr:='экземпляр создан';     
end;
Помогите пожалуйста!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.01.2017, 17:40

написать процедуру "ввод" которая введенное слово в edit перемещает в список listbox и процедуру "очистить", которая очищает поле edit
написать процедуру &quot;ввод&quot; которая введенное слово в edit перемещает в список listbox и процедуру &quot;очистить&quot;, которая очищает поле...

Поле объекта не обнаружено
Всем добрый день! Не могу понять что не так делаю. Запросом вытаскиваю документ и пытаюсь в его табличную часть записть новые...

Поле объекта не обнаружено
Пишу процедуру по отказу в проведении документа, если для него не хватает материалов на складе. Процедура ПередЗаписью(Отказ,...

Поле объекта OLE
Добрый вечер! Уже задавал вопрос, но у меня ничего не получилось. Как сделать так, чтобы в форме отображалась сама картинка, а не путь к...

Поле объекта не обнаружено
Вот мой код. Необходимо обратиться к подчиненному полю справочника (я совсем не уверен что это так называется, поэтому вот картинка) ...


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

Или воспользуйтесь поиском по форуму:
25
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru