tipos inválidos: 'matriz' e 'matriz dinâmica'
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.
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