![]() |
Incompatible Typen... Umgehen?
Mal wieder ne Hirnsinsfrage meinerseits :zwinker:
Kann man hier die Fehlermeldung umgehen ohne Neue Funktionen schreiben zu müssen?
Delphi-Quellcode:
Problem ist das:
Type
TSomething = Class Private { Private Deklarationen } fCheckedFlag: Boolean; FIsValid: Boolean; Function GetIsValid( Const IgnoreCheckedFlag: Boolean = False ): Boolean; Public { Public-Deklarationen } Property IsValid: Boolean Read GetIsValid; End; Implementation { Something } Function TSomething.GetIsValid( Const IgnoreCheckedFlag: Boolean = False ): Boolean; Begin If ( Not( fCheckedFlag ) Or IgnoreCheckedFlag ) Then Begin // Check .... // FIsValid := ...; fCheckedFlag := True; End; Result := FIsValid; End;
Delphi-Quellcode:
Welches ja das:
Property IsValid: Boolean Read GetIsValid;
Delphi-Quellcode:
Aufruft..
Function GetIsValid( Const IgnoreCheckedFlag: Boolean = False ): Boolean;
Der Compiler sieht das ganze als Problem an :wall: , ich aber net wirklich :stupid: Kann ich dem irgedwie weiß machen das das kein Problem ist, ohne weitere unnötige checkfunktionen schreiben zu müssen? Bye |
Re: Incompatible Typen... Umgehen?
Zitat:
|
Re: Incompatible Typen... Umgehen?
Delphi-Quellcode:
So geht das ganze. Allgemein "Get" funktionen dürfen keinen Parameter übergeben, nur "Set".
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) private { Private declarations } public { Public declarations } end; Type TSomething = Class Private { Private Deklarationen } fCheckedFlag: Boolean; FIsValid: Boolean; Function GetIsValid( {IgnoreCheckedFlag: Boolean = False }): Boolean; Public { Public-Deklarationen } Property IsValid: Boolean Read GetIsValid; End; var Form1: TForm1; Implementation { Something } Function TSomething.GetIsValid( {IgnoreCheckedFlag: Boolean = False }): Boolean; Begin If Not( fCheckedFlag ) {Or IgnoreCheckedFlag )} Then Begin // Check .... // FIsValid := ...; fCheckedFlag := True; End; Result := FIsValid; End; {$R *.dfm} end. |
Re: Incompatible Typen... Umgehen?
Zitat:
Zitat:
Beispiel:
Delphi-Quellcode:
Zwar Sinnlos, aber egal :zwinker:
Unit Unit1;
Interface Uses SysUtils; Const cSomethingThing: Array[ 1..4 ] Of String = ( 'Quark', 'Torte', 'Sahne', 'Kirsch' ); Type TSomeThing = Class Private Function GetASomeSingDingeWing( Const Index: Integer): String; { Private-Deklarationen } Public { Public-Deklarationen } Property MySomeSingDingeWing1: String Index 1 Read GetASomeSingDingeWing; Property MySomeSingDingeWing2: String Index 2 Read GetASomeSingDingeWing; Property MySomeSingDingeWing3: String Index 3 Read GetASomeSingDingeWing; Property MySomeSingDingeWing4: String Index 4 Read GetASomeSingDingeWing; End; Implementation { TSomeThing } Function TSomeThing.GetASomeSingDingeWing( Const Index: Integer ): String; Var i: Integer; Begin Result := ''; // DoSomething... For i := 1 To Index Do Begin Result := Result + cSomethingThing[ Index ]; End; End; end. Bye |
Re: Incompatible Typen... Umgehen?
Das geht schon, aber nicht ohne eins von beiden zu ändern. Wenn nicht die fubnktion, dann halt die property:
Zitat:
|
Re: Incompatible Typen... Umgehen?
Zitat:
Eine weitere Ausnahme ist, wenn du es als Array Property hast. Also:
Delphi-Quellcode:
Dann muss die Funktion einen Integer-Paramter haben.
property IsValue[Index: Integer]: Boolean read GetIsValue;
|
Re: Incompatible Typen... Umgehen?
Zitat:
Hätte ja sein können das es auch sowas wie index für boolsche WErte gibt... Bye |
Re: Incompatible Typen... Umgehen?
Ich dachte mit "Allgemein", dass "Get" Funktionen nicht dafür vorgesehen sind, sonst macht man das irgend wie anders. Man will ja mit GET üblicherwiese nur ein Wert entsprechend auslesen. :wink:
|
Re: Incompatible Typen... Umgehen?
Zitat:
Naja habs nun noch mit einer zweiten Funktion gemacht, welche aber eigendlich 4 Zeilen unnützen Code darstellen :coder: + Dekleration = 5 :wink: Bye |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:43 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 by Thomas Breitkreuz