Pregunta

Escribí una función que me da la longitud de una matriz dinámica convirtiéndola en cadena y pidiendo longitud (trim (string));

function arraylength(a: array of char): integer;
var i: integer;
s: string;
begin
    for i:=0 to high(a) do
  begin
  s[i] := a[i-1];
    Result := length(trim(s));
  end;
end;

En mi programa principal, leo el texto en una cadena, lo convierto en una matriz

procedure TForm1.Button2Click(Sender: TObject);
var i: integer;
begin
  for i:=0 to length(sString) do
  begin
    cChar[i] := sString[i];
  end;
end;

y hacer:

ShowMessage(IntToStr(arraylength(cChar)));

Me sale el error como se indica en el título.

¿Fue útil?

Solución

Al pasar matrices a procedimientos y funciones en delphi, debe declararlas como un tipo separado. Por lo tanto:

type
  MyArray =  array of char; 

y luego

function arraylength(a: MyArray ): integer;

Por cierto: ¿por qué no usas funciones integradas como Length ()? En Delphi2009, la cadena de tipo es cadena unicode, por lo que Longitud devuelve Longitud en caracteres, no en bytes.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top