Domanda

Ho scritto una funzione che mi dà la lunghezza di un array dinamico convertendolo in stringa e chiedendo lunghezza (trim (stringa));

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;

Nel mio programma principale ho letto il testo in una stringa, convertendolo in 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 fai:

ShowMessage(IntToStr(arraylength(cChar)));

Ricevo l'errore come indicato nel titolo.

È stato utile?

Soluzione

Quando si passano array a procedure e funzioni in delphi, è necessario dichiararli come tipo separato. Così:

type
  MyArray =  array of char; 

e poi

function arraylength(a: MyArray ): integer;

A proposito: perché non usi funzioni integrate come Lunghezza ()? Nel tipo Delphi2009 stringa è stringa unicode, quindi Lunghezza restituisce Lunghezza in caratteri, non in byte.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top