![]() |
Problem mit Setmethode einer Property
Anschließend an das gestrige Problem, kommt nun wieder eines mit der Property.
Ich habe eine Property, die so aussieht:
Delphi-Quellcode:
fOperators ist vom Typ TCharArray, was ein array of char ist.
property OperatorChars: TCharArray read fOperatorChars write SetOperatorChars;
Die Prozedur SetOperatorChars sieht folgendermaßen aus:
Delphi-Quellcode:
AddOperatorChar macht übrigens nichts anderes, als Speicher für das Array zu reservieren und dann einen neuen Array-Index zu beschreiben.
procedure TTokens.SetOperatorChars(Index: integer; Value: char);
begin if (Index > -1) and (Index <= high(fOperatorChars)) then fOperatorChars[Index] := Value else if Index = high(fOperatorChars) + 1 then AddOperatorChar(value); end; Ich bekomme jetzt bei der Property den Fehler "Inkompatible Typen". Wenn ich die SetOperatorChars-Methode durch die Feldvariable fOperatorChars ersetze, funktioniert es. Allerdings möchte ich das in einer Methode haben, damit ich den Speicher vernünftig reservieren kann, ohne jedes mal erneut SetLength aufzurufen ;) |
Re: Problem mit Setmethode einer Property
ist ja klar, schließlich schreibst du in deinem property das es sich um den Typ "TCharArray" handelt aber deine setMethode erwartet kein "TCharArray" sondern ein "Integer" und ein "char". Wenn du unbedingt eine Setmethode brauchst dann wirst du die andere Variante von gestern nehmen müssen.
Delphi-Quellcode:
wobei die GetMethode eine Funktion sein muss welche einen Integer erwartet und einen Char zurück gibt. Und die SetMethode muss eine Procedure sein welche als ersten Parameter einen Integer erwartet und als zweiten einen Char.
property OperatorChars[Index: Integer]: Char read GetMethode write SetMethode;
|
Re: Problem mit Setmethode einer Property
Folgende Probleme:
1. Wenn ich statt der Getmethode nur die Feldvariable in der Property angebe, bekomme ich den Fehler "inkompatible Typen: Char und Procedure". Aber mit der Getmethode hab ich auch ein paar Probleme... Der Funktionskopf:
Delphi-Quellcode:
Wie muss der richtig sein?
function GetOperatorChars(Index: Integer; Value: char): char;
2. Ich brauche in meinem Programm hin und wieder die Größe des Arrays. Vorher konnte ich mit high() auf die Feldvariable zugreifen. Aber bei der Property erwartet Delphi unbedingt einen Index, welcher jedoch imho bei High() nicht nur überflüssig, sondern auch falsch wäre. :? Bei SetLength gibt es ähnliche Probleme ;) |
Re: Problem mit Setmethode einer Property
|
Re: Problem mit Setmethode einer Property
Zitat:
Aber mit den Parametern hast du recht, danke ;) |
Re: Problem mit Setmethode einer Property
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:02 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz