Pergunta

Eu escrevi uma função que me dá o comprimento de uma matriz dinâmica, convertendo-a corda e pedindo comprimento (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;

No meu programa principal i ler o texto em uma string, convertê-lo em array

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

e fazer:

ShowMessage(IntToStr(arraylength(cChar)));

Eu recebo o erro como indicado no título.

Foi útil?

Solução

Ao passar matrizes para procedimentos e funções em Delphi você deve declará-los como um tipo separado. Assim:

type
  MyArray =  array of char; 

e

function arraylength(a: MyArray ): integer;

BTW: por que você não está usando built-in funções como Comprimento ()? Em Delphi2009 tipo string é uma string unicode, então Comprimento retornos comprimento em caracteres, não em bytes.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top