powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Подскажите пожалуйста, как каждому объекту класса из списка назначить свою процедуру
44 сообщений из 44, показаны все 2 страниц
Подскажите пожалуйста, как каждому объекту класса из списка назначить свою процедуру
    #39907445
Леон4ik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
как каждому объекту класса в списке назначить свою процедуру при заполнении списка объектами, со свойствами я разобрался, а вот с методами не допер пока.
Допустим вот кусок кода. как для каждого элемента списка определить свою функцию(где прописать, что для такого то элемента списка такая вот процедура), допустим есть процедуры MOV A,A, MOV A,B, ну и так далее.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
procedure ListOfComand;
var List: TObjectList;
    i: Integer;
begin
  List := TObjectList.Create;
  List.Add(TComand.Create('MOV A,A', '7F', 1));
  List.Add(TComand.Create('MOV A,B', '78', 1));
  List.Add(TComand.Create('MOV A,C', '79', 1));
...
Рейтинг: 0 / 0
Подскажите пожалуйста, как каждому объекту класса из списка назначить свою процедуру
    #39907450
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обязательно текстом? Типом procedure не подойдет?

http://docwiki.embarcadero.com/RADStudio/Rio/en/Procedural_Types_(Delphi)
...
Рейтинг: 0 / 0
Подскажите пожалуйста, как каждому объекту класса из списка назначить свою процедуру
    #39907454
Леон4ik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нужно обязательно, чтоб был список всех этих обьектов(по сути говоря команд), чтоб потом можно было цикл организовать и при совпадении введенного FCode, с значением из списка, можно было вызвать процедуру ему соответствующую, только вот где обозначить ее
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
TComand = class
    private
      FMnemoCode:string;
      FCode:string;
      FRowCount:integer;
    public
      constructor Create(AMnemoCode: String; ACode: string; ARowCount: integer);
 
      property MnemoCode: string read FMnemoCode write FMnemoCode;
      property Code: string read FCode write FCode;
      property RowCount: integer read FRowCount write FRowCount;
      procedure MOV(Aname,Bname:string);//на счет этого не уверен
  end;
implementation
 
constructor TComand.Create(AMnemoCode: String; ACode: string; ARowCount: integer);
begin
 
  FMnemoCode:=AMnemoCode;
  FCode:=ACode;
  FRowCount:=ARowCount;
end;
...
Рейтинг: 0 / 0
Подскажите пожалуйста, как каждому объекту класса из списка назначить свою процедуру
    #39907464
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати
Леон4ik
нужно обязательно, чтоб был список всех этих обьектов(по сути говоря команд), чтоб потом можно было цикл организовать и при совпадении введенного FCode, с значением из списка, можно было вызвать процедуру ему соответствующую, только вот где обозначить ее
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
TComand = class
    private
      FMnemoCode:string;
      FCode:string;
      FRowCount:integer;
    public
      constructor Create(const AMnemoCode: String; const ACode: string; ARowCount: integer);
 
      property MnemoCode: string read FMnemoCode write FMnemoCode;
      property Code: string read FCode write FCode;
      property RowCount: integer read FRowCount write FRowCount;
      procedure MOV(const Aname,Bname:string);//на счет этого не уверен
  end;
implementation
 
constructor TComand.Create(const AMnemoCode: String; const ACode: string; ARowCount: integer);
begin
 
  FMnemoCode:=AMnemoCode;
  FCode:=ACode;
  FRowCount:=ARowCount;
end;

...
Рейтинг: 0 / 0
Подскажите пожалуйста, как каждому объекту класса из списка назначить свою процедуру
    #39907479
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
type
TMyProc = procedure(const A,B: string);

constructor TComand.Create(AMnemoCode: String; ACode: string; ARowCount: integer;AProc: TMyProc);
begin
  FMnemoCode:=AMnemoCode;
  FCode:=ACode;
  FRowCount:=ARowCount;
  FProc: AProc;
end;

begin
  List.Add(TComand.Create('MOV A,A', '7F', 1,DoProc));
...
Рейтинг: 0 / 0
Подскажите пожалуйста, как каждому объекту класса из списка назначить свою процедуру
    #39907481
Леон4ik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBr, спасибо большое, но есть проблемка: create просит обьявить FProc: AProc

Код: pascal
1.
2.
3.
4.
5.
6.
7.
constructor TComand.Create(AMnemoCode: String; ACode: string; ARowCount: integer;AProc: TMyProc);
begin
  FMnemoCode:=AMnemoCode;
  FCode:=ACode;
  FRowCount:=ARowCount;
  FProc: AProc;
end;
...
Рейтинг: 0 / 0
Подскажите пожалуйста, как каждому объекту класса из списка назначить свою процедуру
    #39907485
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леон4ik
DimaBr, спасибо большое, но есть проблемка: create просит обьявить FProc: AProc

Там присвоение
Код: pascal
1.
  FProc := AProc;
...
Рейтинг: 0 / 0
Подскажите пожалуйста, как каждому объекту класса из списка назначить свою процедуру
    #39907486
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леон4ikcreate просит обьявить FProc: AProc

А догадаться, что там опечатка в операторе присваивания - за пределами твоих способностей?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Подскажите пожалуйста, как каждому объекту класса из списка назначить свою процедуру
    #39907487
Леон4ik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov, логично что я сразу попробовал, но не катит, подчеркивает всю строку
Код: pascal
1.
FProc:= AProc;
...
Рейтинг: 0 / 0
Подскажите пожалуйста, как каждому объекту класса из списка назначить свою процедуру
    #39907489
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леон4ikлогично что я сразу попробовал

Теперь попробуй быть логичным чуть-чуть больше и подумать что именно эта строка делает.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Подскажите пожалуйста, как каждому объекту класса из списка назначить свою процедуру
    #39907499
Леон4ik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov, не вышло, придется вам обьяснять
...
Рейтинг: 0 / 0
Подскажите пожалуйста, как каждому объекту класса из списка назначить свою процедуру
    #39907504
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леон4ik
Dimitry Sibiryakov, не вышло, придется вам обьяснять

В класс TComand надо добавить свойство/поле FProc, имеющее тип TMyProc
...
Рейтинг: 0 / 0
Подскажите пожалуйста, как каждому объекту класса из списка назначить свою процедуру
    #39907509
Леон4ik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Polesov, большое спасибо
...
Рейтинг: 0 / 0
Подскажите пожалуйста, как каждому объекту класса из списка назначить свою процедуру
    #39907510
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леон4ikне вышло

Посмотри насколько эта строка похода на предыдущие. Нет ощущения, что и делает она то же
самое, что и предыдущие?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Подскажите пожалуйста, как каждому объекту класса из списка назначить свою процедуру
    #39907526
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леон4ik
как каждому объекту класса в списке назначить свою процедуру при заполнении списка объектами, со свойствами я разобрался, а вот с методами не допер пока.
Допустим вот кусок кода. как для каждого элемента списка определить свою функцию(где прописать, что для такого то элемента списка такая вот процедура), допустим есть процедуры MOV A,A, MOV A,B, ну и так далее.



Лучше используйте потомков TCommand, а уже у потомков определите метод Exec, например:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
  TCmdMemory=array[0..$FFFF] of byte;
  TDataMemory=array[0..$FFFF] of byte;

  TProcessor=class
  ...
    CmdMemory:TCmdMemory;
    DataMemory:TDataMemory;
    ProcFlags:TProcFlags;
    ProcRegisters:TProcRegisters;
  end;

  TCommand=class
    constructor Create(AProcessor:TProcessor); virtual;
  ...
    property Code:TCode...;
    property MnemoCode:string...;
    procedure Exec; virtual; abstract;
  end;

  TCmdMovAA=class(TCommad)
    procedure Exec; override;
  end;
...
Рейтинг: 0 / 0
Подскажите пожалуйста, как каждому объекту класса из списка назначить свою процедуру
    #39907662
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Леон4ik
как каждому объекту класса в списке назначить свою процедуру при заполнении списка объектами, со свойствами я разобрался, а вот с методами не допер пока.
Допустим вот кусок кода. как для каждого элемента списка определить свою функцию(где прописать, что для такого то элемента списка такая вот процедура), допустим есть процедуры MOV A,A, MOV A,B, ну и так далее.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
procedure ListOfComand;
var List: TObjectList;
    i: Integer;
begin
  List := TObjectList.Create;
  List.Add(TComand.Create('MOV A,A', '7F', 1));
  List.Add(TComand.Create('MOV A,B', '78', 1));
  List.Add(TComand.Create('MOV A,C', '79', 1));



просматривается ассемблер 8080/Z80
...
Рейтинг: 0 / 0
Подскажите пожалуйста, как каждому объекту класса из списка назначить свою процедуру
    #39907666
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecator

просматривается ассемблер 8080/Z80

КР580ВМ80 же
...
Рейтинг: 0 / 0
Подскажите пожалуйста, как каждому объекту класса из списка назначить свою процедуру
    #39907671
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
alekcvp
defecator

просматривается ассемблер 8080/Z80

КР580ВМ80 же

система команд 8080 и КР/ВМ80 одинакова
...
Рейтинг: 0 / 0
Подскажите пожалуйста, как каждому объекту класса из списка назначить свою процедуру
    #39908364
Леон4ik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как вызвать в другом юните уже созданный экземпляр, и получить доступ к его полям.(Юниты связаны) Вот код Юнита, где создан класс. При таких действиях вылезает Error, но он и должен вылезать,т.к. я делаю неверно.Подскажите, как правильно.
Код:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
procedure TRegister.CreateReg;
begin
regA:=Tregister.create;
end;

procedure TRegister.AddReg;
begin
regA.Rname:='A';
regA.value:='00';
regA.AIndex:=0;
end;

procedure TRegister.DelReg;
begin
regA.Free;
end;


Вот юнит с формой
Код:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
procedure TEm.BitBtn1Click(Sender: TObject);
begin
TRegister.Addreg;
label1.Caption:=regA.RName;
end;

procedure TEm.FormCreate(Sender: TObject);
begin
Tregister.CreateReg;
end;

procedure TEm.FormDestroy(Sender: TObject);
begin
Tregister.delReg;
end.


Вот создание класса;
Код:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
TRegister = class(TProcessor)
  protected
  fvalue:string;
  fRName:string;
  fIndex:integer;
  //procedure SetRegister( Value:string);
  //function GetRegister:string;
  public
  property value:string read fvalue write fvalue;
  property RName:string read fRName write fRName;
  property AIndex:integer read fIndex write fIndex;
  procedure CreateReg;
  procedure AddReg();
  procedure DelReg();
  end;
...
Рейтинг: 0 / 0
Подскажите пожалуйста, как каждому объекту класса из списка назначить свою процедуру
    #39908373
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леон4ik
Код: pascal
1.
2.
3.
  procedure CreateReg;
  procedure AddReg();
  procedure DelReg();


Либо class procedure, либо вынести эти процедуры за класс и инициализировать/убивать глобальные переменные в секциях модуля initialization/finalization.
...
Рейтинг: 0 / 0
Подскажите пожалуйста, как каждому объекту класса из списка назначить свою процедуру
    #39908374
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леон4ik
вылезает Error

И да, компилятор никогда не выдает такой ошибки.
...
Рейтинг: 0 / 0
Подскажите пожалуйста, как каждому объекту класса из списка назначить свою процедуру
    #39908378
Леон4ik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wadman, я имел ввиду такую this form of method call only allowed for class methods
...
Рейтинг: 0 / 0
Подскажите пожалуйста, как каждому объекту класса из списка назначить свою процедуру
    #39908401
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леон4ik
При таких действиях вылезает Error, но он и должен вылезать,т.к. я делаю неверно.Подскажите, как правильно.

Правильно будет сформулировать задачу, а не "угадайте что мне нужно и покажите как правильно"
...
Рейтинг: 0 / 0
Подскажите пожалуйста, как каждому объекту класса из списка назначить свою процедуру
    #39908412
Леон4ik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBr, В одном юните у меня располагаются классы. В этом юните(без формы) мне нужно создать несколько экземпляров классов(3 класса, см.выше). Т.е несколько экземпляров одного класса, потом другого, потом третьего, повторюсь сделать это нужно мне не в интерфейсной части. В интерфейсной части(где форма) мне нужно будет использовать уже созданные экземпляры. Присваивать им занчения, читать, вносить новые. Поэтому я спрашиваю, как правильно это можно сделать, т.к. я пока не понял. Надеюсь, так вам понятно?
...
Рейтинг: 0 / 0
Подскажите пожалуйста, как каждому объекту класса из списка назначить свою процедуру
    #39908480
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
2.
3.
4.
5.
6.
7.
var A1,A2,A3: TRegister;
begin
// В этом юните(без формы) мне нужно создать несколько экземпляров классов
  A1 := TRegister.Create;
  A2 := TRegister.Create;
  A3 := TRegister.Create;
end;
...
Рейтинг: 0 / 0
Подскажите пожалуйста, как каждому объекту класса из списка назначить свою процедуру
    #39908554
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леон4ik
я имел ввиду такую this form of method call only allowed for class methods

То есть мое предыдущее сообщение это какая-то магия?
...
Рейтинг: 0 / 0
Подскажите пожалуйста, как каждому объекту класса из списка назначить свою процедуру
    #39908716
Леон4ik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как сделать процедуру полем класса, кроме как приведение к процедурному типу? Просто допустим у меня 220 обьектов и каждому соответствует своя процедура.
...
Рейтинг: 0 / 0
Подскажите пожалуйста, как каждому объекту класса из списка назначить свою процедуру
    #39908720
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем "делать процедуру полем класса" ?
Вы опять же придерживаетесь принципа "угадайте что мне нужно", вместо того, чтобы описать задачу
...
Рейтинг: 0 / 0
Подскажите пожалуйста, как каждому объекту класса из списка назначить свою процедуру
    #39908728
Леон4ik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Почему снова вылезает ошибка? this form of method call only allowed for class methods or constructor
...
Рейтинг: 0 / 0
Подскажите пожалуйста, как каждому объекту класса из списка назначить свою процедуру
    #39908729
Леон4ik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBr, я имел ввиду приведение к процедурному типу.Иначе я не знаю как можно вызвать процедуру для объекта(у каждого своя процедура).Но как я понял нужно просто все процедуры сделать с одинаковыми параметрами и тогда можно вызывать. Если вы хотите ответ на вопрос зачем. Мои обьекты это команды ассемблера. они содержат имя, код, количество строк(ведь бывают и не однобайтовые команды) ну и конечно, процедуру или функцию, которая и выполняет дейтсвие, ведь это же команда(логично или нет?).
...
Рейтинг: 0 / 0
Подскажите пожалуйста, как каждому объекту класса из списка назначить свою процедуру
    #39908730
Леон4ik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Компилятор жалуется на initialization и finilization
...
Рейтинг: 0 / 0
Подскажите пожалуйста, как каждому объекту класса из списка назначить свою процедуру
    #39908732
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леон4ik
Почему снова вылезает ошибка? this form of method call only allowed for class methods or constructor

Потому что вызывать метод класса можно если он классовый метод (class procedure) или конструктор. Обычные методы можно вызывать у ЭКЗЕМПЛЯРА класса
...
Рейтинг: 0 / 0
Подскажите пожалуйста, как каждому объекту класса из списка назначить свою процедуру
    #39908735
Леон4ik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Леон4ik
DimaBr, я имел ввиду приведение к процедурному типу.Иначе я не знаю как можно вызвать процедуру для объекта(у каждого своя процедура).Но как я понял нужно просто все процедуры сделать с одинаковыми параметрами и тогда можно вызывать. Если вы хотите ответ на вопрос зачем. Мои обьекты это команды ассемблера. они содержат имя, код, количество строк(ведь бывают и не однобайтовые команды) ну и конечно, процедуру или функцию, которая и выполняет дейтсвие, ведь это же команда(логично или нет?).

DimaBr, как бы вы обыграли такую ситуацию.
...
Рейтинг: 0 / 0
Подскажите пожалуйста, как каждому объекту класса из списка назначить свою процедуру
    #39908736
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
procedure TRegister.CreateReg;
begin
regA:=Tregister.create;
regB:=Tregister.create;
regC:=Tregister.create;
regD:=Tregister.create;
regE:=Tregister.create;
regH:=Tregister.create;
regL:=Tregister.create;
cterPC:=Tregister.create;
cterSP:=Tregister.create;
end;


Зачем метод класса CreateReg создаёт 9 новых классов ? Притом, что все эти переменные (regA, regB,regС) - это вообще Глобальные.
Что произойдёт, если мы напишем так ?
Код: pascal
1.
2.
regA:=Tregister.create;
regA.CreateReg;
...
Рейтинг: 0 / 0
Подскажите пожалуйста, как каждому объекту класса из списка назначить свою процедуру
    #39908740
Леон4ik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBr, ну как по мне это одно и тоже(это не я, мой мозг так решил ). Я посмотрел примеры, и сделал, как в примерах
...
Рейтинг: 0 / 0
Подскажите пожалуйста, как каждому объекту класса из списка назначить свою процедуру
    #39908741
Леон4ik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBr
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
procedure TRegister.CreateReg;
begin
regA:=Tregister.create;
regB:=Tregister.create;
regC:=Tregister.create;
regD:=Tregister.create;
regE:=Tregister.create;
regH:=Tregister.create;
regL:=Tregister.create;
cterPC:=Tregister.create;
cterSP:=Tregister.create;
end;


Зачем метод класса CreateReg создаёт 9 новых классов ? Притом, что все эти переменные (regA, regB,regС) - это вообще Глобальные.
Что произойдёт, если мы напишем так ?
Код: pascal
1.
2.
regA:=Tregister.create;
regA.CreateReg;


ой, уже не ругается компилятор...
...
Рейтинг: 0 / 0
Подскажите пожалуйста, как каждому объекту класса из списка назначить свою процедуру
    #39908746
Леон4ik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBr, но вопрос:
Леон4ik
Леон4ik
DimaBr, я имел ввиду приведение к процедурному типу.Иначе я не знаю как можно вызвать процедуру для объекта(у каждого своя процедура).Но как я понял нужно просто все процедуры сделать с одинаковыми параметрами и тогда можно вызывать. Если вы хотите ответ на вопрос зачем. Мои обьекты это команды ассемблера. они содержат имя, код, количество строк(ведь бывают и не однобайтовые команды) ну и конечно, процедуру или функцию, которая и выполняет дейтсвие, ведь это же команда(логично или нет?).

DimaBr, как бы вы обыграли такую ситуацию.

все равно остается в силе. Как бы вы,зная то что не знаю я,облегчили бы себе задачу(создания 220 обьектов). Что-то мне уже не верится, что организация команд в виде обьектов класса намного эффективнее. Быстрее мне кажется case-ми все это дело оформить...Разубедите меня!
...
Рейтинг: 0 / 0
Подскажите пожалуйста, как каждому объекту класса из списка назначить свою процедуру
    #39908747
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леон4ik
все равно остается в силе. Как бы вы,зная то что не знаю я,облегчили бы себе задачу(создания 220 обьектов)

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
type
TMyType = (MOV_A_A, MOV_A_B, MOV_A_C .......  HLT1);
var Command: array[TMyType] of TCommand;


procedure CreateCommand;
var i: TMyType;
begin
  for i := Low(TMyType) to High(TMyType) do
    Command[i] := TCommand.Create;
end'
...
Рейтинг: 0 / 0
Подскажите пожалуйста, как каждому объекту класса из списка назначить свою процедуру
    #39908749
Леон4ik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBr,так, так, так, интересно...
А поля потом можно так же в цикле заполнить?
...
Рейтинг: 0 / 0
Подскажите пожалуйста, как каждому объекту класса из списка назначить свою процедуру
    #39908755
Леон4ik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно ли так же в цикле заполнить поля?
...
Рейтинг: 0 / 0
Подскажите пожалуйста, как каждому объекту класса из списка назначить свою процедуру
    #39908757
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леон4ik
Можно ли так же в цикле заполнить поля?

заполняйте, кто вам мешает ?
...
Рейтинг: 0 / 0
Подскажите пожалуйста, как каждому объекту класса из списка назначить свою процедуру
    #39908759
Леон4ik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBr
Леон4ik
Можно ли так же в цикле заполнить поля?

заполняйте, кто вам мешает ?

Мне мешает отсутствие опыта в заполнении полей в цикле.Ладно.Шутки в сторону. Меня компилятор ругает и говорит что он не вкурсе что я там хотел сделать(он имеет ввиду, что без понятия, что я от него хочу, а именно не понимает, зачем я полям значения присваиваю,также пишет,что не знает таких полей). Хотя когда я создавал все команды без цикла, то у него ко мне вопросов не было. Как так?
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
procedure TCommand.AddCommand;
begin
MOV_A_A.fNameCode:='MOV A,A';
MOV_A_A.fOpCode:='$7F';
MOV_A_A.RowCount:=1;
MOV_A_A.fCom:=MVI;

end;


Хотя,погодите-ка , все команды теперь стали константами. хм...
...
Рейтинг: 0 / 0
Подскажите пожалуйста, как каждому объекту класса из списка назначить свою процедуру
    #39908764
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Леон4ik
А поля потом можно так же в цикле заполнить?

Вы бы сначала определились, что такое TCommand и какой функционал он будет выполнять?
Предполагаю, что вы хотите, чтобы каждый экземпляр TCommand выполнял СВОИ действия.
Этого можно добиться например наследованием
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
TCommand = class
  procedure Execute; virtual;
end;

TCommand_MoveAA = class(TCommand)
  procedure Execute; override;
end;

var C: TCommand;
begin
  C := TCommand_MoveAA.Create;
  C.Execute;
  C.Free;
end;



Или реализовать всё в одном классе
Код: pascal
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.
type
TMyProc = procedure (const A,N:string) of object;
TCommand = class
  private
    fMyProc: TMyProc;
    procedure MOV_A_A(const A,N:string);
    procedure MOV_A_B(const A,N:string);
  public
   procedure Execute;
end;

procedure CreateCommand;
var i: TMyType;
    S: string;
    M: TMethod;
begin
  for i := Low(TMyType) to High(TMyType) do begin
    Command[i] := TCommand.Create;
    S := TypInfo.GetEnumName(TypeInfo(TMyType),ord(i));
    M.Code := TCommand.MethodAddress(S);
    M.Data := nil;
    Command[i].fMyProc := TMyProc(M);
  end;
end;

procedure TCommand.Execute;
begin
  if Assigned(fMyProc) then fMyProc(Param1,Param2);
end;

// Тестируем
initialization
  CreateCommand;
  Command[MOV_A_A].Execute;
  Command[MOV_A_B].Execute;
  Command[MOV_A_C].Execute;
...
Рейтинг: 0 / 0
Подскажите пожалуйста, как каждому объекту класса из списка назначить свою процедуру
    #39908769
Леон4ik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторВы бы сначала определились, что такое TCommand и какой функционал он будет выполнять?
Предполагаю, что вы хотите, чтобы каждый экземпляр TCommand выполнял СВОИ действия.
Этого можно добиться например наследованием
ВЫ правильно предполагаете, замечу что я это"каждый экземпляр TCommand выполнял СВОИ действия" писал много раз.
...
Рейтинг: 0 / 0
44 сообщений из 44, показаны все 2 страниц
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Подскажите пожалуйста, как каждому объекту класса из списка назначить свою процедуру
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]