Ich habe eine Funktion geschrieben, die mir die Länge eines dynamischen Arrays gibt, indem ich es in String umwandeln und Länge (trim (string)) abfrage;Ungültige Typen: 'Array' und 'dynamisches Array'
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;
In meinem Hauptprogramm las i Text in einen String, wandelt es 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;
und zu tun:
ShowMessage(IntToStr(arraylength(cChar)));
ich die Fehler wie im Titel angegeben.
Der Rest Ihres Codes ist sehr kaputt. Der Basisindex der Arrays ist null. Die Basisadresse der Strings ist eins. Weder Zeichenfolgen noch Arrays enthalten etwas, bis Sie SetLength aufrufen. Sie sollten die Länge von 's' außerhalb der Schleife überprüfen; Andernfalls sollten Sie eine Warnung erhalten, dass die Funktion möglicherweise keinen Wert zurückgibt. Warum konvertieren Sie Ihre Zeichenfolge in ein Array, wenn Sie das nächste, was Sie tun, in eine Zeichenfolge stopfen? –
Schauen Sie in * StrLen() * und ähnliche Funktionen. Warum benutzt du * PChar * überhaupt nicht? – mghie