powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Подскажите пожалуйста, как каждому объекту класса из списка назначить свою процедуру
25 сообщений из 44, страница 1 из 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
25 сообщений из 44, страница 1 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Подскажите пожалуйста, как каждому объекту класса из списка назначить свою процедуру
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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