AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Prism Der Typ muss als abstrakt deklariert werden
Thema durchsuchen
Ansicht
Themen-Optionen

Der Typ muss als abstrakt deklariert werden

Ein Thema von Mario · begonnen am 16. Mär 2005 · letzter Beitrag vom 16. Mär 2005
Antwort Antwort
Mario

Registriert seit: 7. Apr 2003
567 Beiträge
 
Delphi 2006 Enterprise
 
#1

Der Typ muss als abstrakt deklariert werden

  Alt 16. Mär 2005, 15:34
In folgendem kleinen Demo-Projekt bekomme ich folgende Exception:

Zitat:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Projekt Project1.exe traf auf die unhandelte Exception-Klasse System.NullReferenceException mit der Meldung 'Der Typ muss als abstrakt deklariert werden, wenn eine der Methoden als abstrakt deklariert ist.'.
---------------------------
Anhalten Fortsetzen Hilfe
---------------------------
Delphi-Quellcode:
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type
  TAbstraktClass = class
  private
  public
    class function GetValue: Integer; virtual; abstract;
  end;

  TRealClass = class(TAbstraktClass)
  private
  public
    class function GetValue: Integer; override;
  end;

{ TRealClass }

class function TRealClass.GetValue: Integer;
begin
  Result := 15;
end;

begin
  Writeln(TRealClass.GetValue.toString);
end.
Was will mir diese Fehlermeldung sagen, was ich anders machen soll?
Schöne Grüße,
Mario Noack
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.032 Beiträge
 
Delphi 12 Athens
 
#2

Re: Der Typ muss als abstrakt deklariert werden

  Alt 16. Mär 2005, 15:50
...
Martin Schaefer
  Mit Zitat antworten Zitat
Mario

Registriert seit: 7. Apr 2003
567 Beiträge
 
Delphi 2006 Enterprise
 
#3

Re: Der Typ muss als abstrakt deklariert werden

  Alt 16. Mär 2005, 16:31
Tja, sind in .Net statische abstrakte Methoden wohl nicht mehr erlaubt. Nicht abstrakt funktioniert es genauso:
Delphi-Quellcode:
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type
  TAbstraktClass = class
  private
  public
    class function GetValue: Integer; virtual;
  end;

  TRealClass = class(TAbstraktClass)
  private
  public
    class function GetValue: Integer; override;
  end;

{ TRealClass }

class function TRealClass.GetValue: Integer;
begin
  Writeln('TRealClass.GetValue');
  Result := 15;
end;

{ TAbstraktClass }

class function TAbstraktClass.GetValue: Integer;
begin
  Writeln('TAbstraktClass.GetValue');
  Result := 0;
end;

begin
  Writeln(TRealClass.GetValue.toString);
  Readln;
end.
ich benötige halt nur eine Dummy-Routine, welche nie aufgerufen wird.

In C# habe ich beim Versuch, eine Methode static abstract zu machen, gleich einen Compiler-Fehler bekommen.
Schöne Grüße,
Mario Noack
  Mit Zitat antworten Zitat
Benutzerbild von Sanchez
Sanchez

Registriert seit: 24. Apr 2003
Ort: Neumarkt Stmk
892 Beiträge
 
Delphi XE6 Enterprise
 
#4

Re: Der Typ muss als abstrakt deklariert werden

  Alt 16. Mär 2005, 20:23
Hallo,
In C# muss die Klasse als abstrakt deklariert sein, damit sie abstrakte Methoden beinhalten kann. Obs in Delphi seit .NET auch ist weiss ich nicht.

grüße, daniel
Daniel
Testen ist feige!
  Mit Zitat antworten Zitat
Mario

Registriert seit: 7. Apr 2003
567 Beiträge
 
Delphi 2006 Enterprise
 
#5

Re: Der Typ muss als abstrakt deklariert werden

  Alt 16. Mär 2005, 20:48
Jep, aber eine abstrakte Methode darf ich dann trotzdem noch nicht statisch markieren, leider.
Schöne Grüße,
Mario Noack
  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 09:59 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