AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Incompatible Typen... Umgehen?

Ein Thema von Kedariodakon · begonnen am 25. Feb 2005 · letzter Beitrag vom 25. Feb 2005
Antwort Antwort
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#1

Incompatible Typen... Umgehen?

  Alt 25. Feb 2005, 11:54
Mal wieder ne Hirnsinsfrage meinerseits
Kann man hier die Fehlermeldung umgehen ohne Neue Funktionen schreiben zu müssen?

Delphi-Quellcode:
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;
Problem ist das: Property IsValid: Boolean Read GetIsValid; Welches ja das: Function GetIsValid( Const IgnoreCheckedFlag: Boolean = False ): Boolean; Aufruft..
Der Compiler sieht das ganze als Problem an , ich aber net wirklich
Kann ich dem irgedwie weiß machen das das kein Problem ist, ohne weitere unnötige checkfunktionen schreiben zu müssen?

Bye
Christian
  Mit Zitat antworten Zitat
NicoDE
(Gast)

n/a Beiträge
 
#2

Re: Incompatible Typen... Umgehen?

  Alt 25. Feb 2005, 12:04
Zitat von Kedariodakon:
Der Compiler sieht das ganze als Problem an , ich aber net wirklich
Der Compiler erwartet einen bestimmten Funktions-Typ ( function GetIsValid: Boolean; ).
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 12. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: Incompatible Typen... Umgehen?

  Alt 25. Feb 2005, 12:04
Delphi-Quellcode:
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.
So geht das ganze. Allgemein "Get" funktionen dürfen keinen Parameter übergeben, nur "Set".
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Incompatible Typen... Umgehen?

  Alt 25. Feb 2005, 12:14
Zitat von sniper_w:
So geht das ganze.
Das das so geht is klar

Zitat von sniper_w:
Allgemein "Get" funktionen dürfen keinen Parameter übergeben, nur "Set".
Die Aussage ist Falsch!

Beispiel:
Delphi-Quellcode:
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.
Zwar Sinnlos, aber egal

Bye
Christian
  Mit Zitat antworten Zitat
Benutzerbild von maximov
maximov

Registriert seit: 2. Okt 2003
Ort: Hamburg
548 Beiträge
 
Delphi 2005 Professional
 
#5

Re: Incompatible Typen... Umgehen?

  Alt 25. Feb 2005, 12:30
Das geht schon, aber nicht ohne eins von beiden zu ändern. Wenn nicht die fubnktion, dann halt die property:

Zitat von Kedariodakon:
Mal wieder ne Hirnsinsfrage meinerseits
Kann man hier die Fehlermeldung umgehen ohne Neue Funktionen schreiben zu müssen?

Delphi-Quellcode:
...      { Public-Deklarationen }
      Property   IsValid[Const IgnoreCheckedFlag: Boolean]:   Boolean   Read GetIsValid;
   ....
mâxîmôv.

{KDT}
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#6

Re: Incompatible Typen... Umgehen?

  Alt 25. Feb 2005, 12:32
Zitat von Kedariodakon:
Zitat von sniper_w:
So geht das ganze.
Das das so geht is klar

Zitat von sniper_w:
Allgemein "Get" funktionen dürfen keinen Parameter übergeben, nur "Set".
Die Aussage ist Falsch!

Bye
Warum. Da steht, allgemein.

Eine weitere Ausnahme ist, wenn du es als Array Property hast. Also:

property IsValue[Index: Integer]: Boolean read GetIsValue; Dann muss die Funktion einen Integer-Paramter haben.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Incompatible Typen... Umgehen?

  Alt 25. Feb 2005, 12:48
Zitat von jim_raynor:
Warum. Da steht, allgemein.
Überlesen


Hätte ja sein können das es auch sowas wie index für boolsche WErte gibt...

Bye
Christian
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 12. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#8

Re: Incompatible Typen... Umgehen?

  Alt 25. Feb 2005, 14:59
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.
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
Benutzerbild von Kedariodakon
Kedariodakon

Registriert seit: 10. Sep 2004
Ort: Mönchengladbach
833 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Incompatible Typen... Umgehen?

  Alt 25. Feb 2005, 15:04
Zitat von sniper_w:
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.
Genau "entsprechend" ist das Zauberwort.

Naja habs nun noch mit einer zweiten Funktion gemacht, welche aber eigendlich 4 Zeilen unnützen Code darstellen
+ Dekleration = 5

Bye
Christian
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz