Arranjos 3x3 em POO com elementos Alfanuméricos

      
      program ARR3PA;
      { TURBO PASCAL 7 SOURCE
        DELPHI SOURCE
        Calculo de arranjos de MAX elementos 3x3 em POO
        Joao Paulo Schwarz Schuler}
      {FPC Source Code}
      
      {$X+}
      {$F+}
      type TOnCalcEvent = procedure (X,Y,Z:longint);
      
      type TCombinacao = object
                         private
                         MAXIMO:longint;
                         OnCalc:TOnCalcEvent;
      
                         public
                         constructor Init(POnCalcEvent:TOnCalcEvent;PMAX:longint);
                         procedure Run;
                         destructor Done;
                         end;
      
      constructor TCombinacao.Init(POnCalcEvent:TOnCalcEvent;PMAX:longint);
      begin
      OnCalc:=POnCalcEvent;
      MAXIMO:=PMAX;
      end;
      
      procedure TCombinacao.Run;
      var X,Y,Z:integer;
      begin
      for X:=1 to MAXIMO do
          for Y:=1 to MAXIMO do
              for Z:=1 to MAXIMO do
                  if (X<>Y) and (X<>Z) and (Y<>Z)
                     then OnCalc(X,Y,Z);
      end;
      
      destructor TCombinacao.Done;
      begin
      end;
      
      
      const MAX = 3; { experimente outros valores}
      
      procedure Imprime(X,Y,Z:longint);
      const VIRG : char = ',';
      begin
      writeln('(',chr(X+64),VIRG,chr(Y+64),VIRG,chr(Z+64),')');
      end;
      
      var C:TCombinacao;
      begin
      C.Init(Imprime,MAX);
      C.Run;
      C.Done;
      end.