Qual Campo e qual Índice foi usado da Classe Ancestral?

22/11/2005

0

tenho a seguinte estrutura de classes em um Form
type
  TClube = class
    GolsCod: array of Smallint;
    ...
    ...

  Public
    procedure Add_Gol (Cod_Jogador: Smallint);

  end;

type
  TConfronto = class
    Clube_1: TClube;
    Clube_2: TClube;
    ...
    ...

  end;


declaro também uma variável do tipo array de TConfronto
implementation

uses

var
  Confrontos: array of TConfronto;


quando vou disparar o evento Add_Gol faço o seguinte:
  Confrontos[0].Clube_1.Add_Gol(10);


preciso saber duas doisas:

1- Dentro do procedimento Add_Gol como faço para saber se quem disparou foi o Clube_1 ou o Clube_2?

2- Dentro do procedimento Add_Gol como faço para saber qual o índice de Confrontos? (neste caso 0)?


Raserafim

Raserafim

Responder

Posts

22/11/2005

Siam

1- Dentro do procedimento Add_Gol como faço para saber se quem disparou foi o Clube_1 ou o Clube_2?
Pelo Self do método.
2- Dentro do procedimento Add_Gol como faço para saber qual o índice de Confrontos? (neste caso 0)?
Passe o índice como parâmetro.


Responder

23/11/2005

Raserafim

siam não dá certo não.
pelo Self consigo saber a classe, mas não o campo que a chamou.


Responder

23/11/2005

Siam

Passando o índice:
Confrontos[0].Clube_1.Add_Gol(10, 0);
procedure TClube.Add_Gol (Cod_Jogador: Smallint; ind:Integer); 
begin
  if Self = Confrontos[ind].Clube1 then
    ...
end;
Isso não resolve ?


Responder

24/11/2005

Raserafim

valeu siam, assim deu certo.
mas o índice realmente tenho que passar como parâmetro? ou dá pra descobrir tb?


Responder

24/11/2005

Siam

Da maneira que vejo, vc pode não passar o índice, mas terá que fazer um [b:e154df7078]for[/b:e154df7078] no array de Confrontos até chegar no objeto desejado:
procedure TClube.Add_Gol (Cod_Jogador: Smallint); 
var i:Integer;
begin 
  for i := 0 to High(Confrontos) do
  begin
    if Self = Confrontos[i].Clube1 then 
    begin
      ...
      Break;
    end
    else
    if Self = Confrontos[i].Clube2 then 
    begin
      ...
      Break;
    end
  end;
end;
Assim quando ocorrer o Break, o [b:e154df7078]i[/b:e154df7078] será o índice.


Responder

25/11/2005

Raserafim

humm valeu siam. a solução deu certinho.


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar