Delphi Vorbei Dynamisches array von Records zu funktionieren
Ich habe eine Dynamc array von Datensätzen und ich möchte an einem der Elemente im array an eine Funktion per Referenz
So zum Beispiel eines der array-Elemente - AArray[1].arecorditem eine Zeichenkette mit 6 Zeichen String[6]
die Funktion wäre -
function dosomething(var AStringVal:string):Integer;
So möchte ich ausführen,
Aresult:= dosomething(AArray[1].arecorditem);
jedoch, wenn ich versuche zu kompilieren bekomme ich die Fehlermeldung, Art der tatsächlichen und formalen var-Parameter müssen identisch sein.
Ist dies möglich oder sollte ich weisen Sie das array-Element in einen string und dann den string an die Funktion.
Dank
Colin
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre Frage-Titel und die tatsächliche Frage sind nicht das gleiche, so gebe ich Ihnen einen überblick über beide Themen.
Müssen Sie definieren eine Array-Typ
Dies ist, wenn Sie wollen, um eine gesamten dynamischen array der Elemente auf die Funktion. Wenn Sie wollen einfach nur pass ein Element, Sie würden definieren Sie die Funktion wie folgt:
Nun, wenn Sie wollen, passieren die Wert von Feld1 an die Funktion, Sie müssten die Funktion definiert als:
Sie nicht definieren Sie die parameter wie
var
oder Sie werden am Ende mit der Fehlermeldung, die Sie bekommen!Zusätzliche:
Wie andere gesagt haben, wenn Sie mit einer Zeichenfolge fester Länge für das Feld, müssen Sie definieren es als eine Art eben, wie ich oben gezeigt für
TMyRecordArray
.Verwenden, Geben Sie für das Feld, und Ihre Funktion Parameter.
Müssen Sie erstellen Sie einen Typ aus:
So rufen Sie Ihre Funktion auf diese Weise:
Beispiel Arbeiten
Name: Name
.String[6] ist ein ShortString mit einer maximalen Länge von 255 Zeichen. Sie müssen ändern Sie entweder die definition von doSomething so etwas wie:
oder
oder ändern Sie die definition des Datensatz, so dass arecorditem vom Typ String ist (im Gegensatz zu String[6]).
Wenn Sie nicht ändern Sie den Wert des Parameters in der Funktion ändern können Sie die variable Typ in der Deklaration der Funktion zu
const
stattvar
, wird der compiler die Konvertierung für Sie tun:Ändern von:
Zu diesem:
Nun können Sie dies tun, ohne zu Klagen:
Beim übergeben von Variablen per Referenz, Sie müssen vom selben Typ sein. Wenn Sie von anderen Mitteln, die der compiler wird versuchen, zu konvertieren für Sie.