Tipi non validi: 'Array' e 'dynamic array'
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.
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