Ver Mensaje Individual
  #2  
Antiguo 10-11-2013
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Reputación: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Tal vez puedas hacer algo parecido a esto. Nota que, por claridad, he usado "strings" en lugar de "bytes". Primero declaramos dos tipos de array, de una y de dos dimensiones:

Código Delphi [-]
type
  TOneDimensionalArray = array of string;
  TTwoDimensionalArray = array of array of string;

A continuación nuestro procedimiento "Calculate", que, recibe como argumento un array de una dimensión:

Código Delphi [-]
procedure Calculate( anArray : TOneDimensionalArray );
begin
  ShowMessage( anArray[ 0 ] );
end;

El siguiente es el código en que hacemos uso de lo anterior:

Código Delphi [-]
var
  // Vamos a trabajar con un array de dos dimensiones
  tda : TTwoDimensionalArray;
begin

  // Añadimos un elemento al array de dos dimensiones
  SetLength( tda, 1 );

  // Y el correspondiente elemento en el de una dimensión
  SetLength( tda[ 0 ], 1 );

  // Establecemos el valor del elemento
  tda[ 0 ][ 0 ] := 'Hello world!';

  // Y por último lo pasamos al procedimiento, como ves
  // indicando que lo que pasamos es un array de una dimensión,
  // es decir, tal como el procedimiento "Calculate" espera
  Calculate( TOneDimensionalArray( tda[ 0 ] ) );
end;

Todo el código junto en una unidad/formulario:

Código Delphi [-]
unit UMainForm;

interface

uses
  Forms, Classes, Controls, StdCtrls;

type
  TMainForm = class(TForm)
    SampleButton: TButton;
    procedure SampleButtonClick(Sender: TObject);
  end;

var
  MainForm: TMainForm;

implementation

{$R *.dfm}

uses
  Dialogs;

type
  TOneDimensionalArray = array of string;
  TTwoDimensionalArray = array of array of string;

procedure Calculate( anArray : TOneDimensionalArray );
begin
  ShowMessage( anArray[ 0 ] ); // Mostrará "Hello world!"
end;

procedure TMainForm.SampleButtonClick(Sender: TObject);
var
  // Vamos a trabajar con un array de dos dimensiones
  tda : TTwoDimensionalArray;
begin

  // Añadimos un elemento al array de dos dimensiones
  SetLength( tda, 1 );

  // Y el correspondiente elemento en el de una dimensión
  SetLength( tda[ 0 ], 1 );

  // Establecemos el valor del elemento
  tda[ 0 ][ 0 ] := 'Hello world!';

  // Y por último lo pasamos al procedimiento, como ves
  // indicando que lo que pasamos es un array de una dimensión,
  // es decir, tal como el procedimiento "Calculate" espera
  Calculate( TOneDimensionalArray( tda[ 0 ] ) );
end;

end.

Nota que sería bien cambiar el nombre de los tipos de array a unos más descriptivos.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita