AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Verhindern von Instanzierung eines Objekts mit Create
Thema durchsuchen
Ansicht
Themen-Optionen

Verhindern von Instanzierung eines Objekts mit Create

Ein Thema von warheart · begonnen am 24. Apr 2008 · letzter Beitrag vom 30. Mai 2008
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#11

Re: Verhindern von Instanzierung eines Objekts mit Create

  Alt 28. Mai 2008, 11:40
Zitat von FAlter:
ich dachte, es wurde eine Lösung gesucht, die nicht compiliert. Bitte, man muss nur Warnungen als Fehler interpretieren, und das geht mit Hier im Forum suchenDDevExtensions. Siehe Bild.
Das bringt ja wohl mal herzlich wenig - oder willst du mit deiner Unit auch gleich immernoch die DevExtensions mitliefern und den Benutzer außerdem dazu zwingen, diese Einstellung zu verwenden
  Mit Zitat antworten Zitat
Benutzerbild von idontwantaname
idontwantaname

Registriert seit: 31. Aug 2004
Ort: Traiskirchen
575 Beiträge
 
Turbo Delphi für Win32
 
#12

Re: Verhindern von Instanzierung eines Objekts mit Create

  Alt 28. Mai 2008, 11:53
Bin mit Delphi nicht mehr so am laufenden, aber in C# kämen folgende Möglichkeiten in Frage:
  • privater Konstruktur - die Klasse kann noch erzeugt werden durch eine statische Methode der Klasse selbst.
  • Die Klasse als static definieren, was besagt, dass die Klasse nur statische Elemente beinhalten kann. Ob es ein Delphi-Äquivalent gibt, weiß ich nicht.
Lg oli
Oliver Hanappi
Besucht meine neue Homepage: http://oli.hux.de
  Mit Zitat antworten Zitat
Benutzerbild von FAlter
FAlter

Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.096 Beiträge
 
FreePascal / Lazarus
 
#13

Re: Verhindern von Instanzierung eines Objekts mit Create

  Alt 28. Mai 2008, 11:56
Hi,

ich sagte ja, eine bessere Idee hab auch ich nicht. Aber wenn der User keine DDevExtensions hat, sieht er trotzdem die Warnung (nur eben als Warnung), und da steht drin, dass der Konstruktor selbst abstrakt ist. Ein guter Programmierer sieht sich die Warnungen auch mal an, und spätestens dann bemerkt er seien Fehler. Bei strict private kommt nicht einmal eine Warnung Jedenfalls bin ich der Ansicht, dass ein abstrakter Konstruktor deutlich besser ist als ein privater. Wer sicher gehen will, zwingt dem Programmierer eben komische Parameter auf.

Delphi-Quellcode:
type
  TTest = class
    constructor Create(var Do_Not_Call_This_Constructor: TTest); virtual; abstract;
  end;
Aber darauf würde ich sogar verzichten.

Mfg
FAlter
Felix Alter
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#14

Re: Verhindern von Instanzierung eines Objekts mit Create

  Alt 28. Mai 2008, 23:44
Code:
type
  TMyClass = [color=#ff0000]record[/color]
    strict private
      class var
        FX: Integer;
    strict protected

    // Note: accessors for class properties must be declared class static.

      class function GetX: Integer; static;
     class procedure SetX(val: Integer); static;
    public
      class property X: Integer read GetX write SetX;
     class procedure StatProc(s: String); static;
  end;
Und wie wäre es in soeinem Fall garnicht erst eine Klasse zu verwenden?

ein Record hat Erstens keine Instanzen und Zweitens hat er in Delphi auch keinen Constructor.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
bennixview
(Gast)

n/a Beiträge
 
#15

Re: Verhindern von Instanzierung eines Objekts mit Create

  Alt 29. Mai 2008, 12:47
Was ist denn wenn man die Klasse selber als abstract deklariert ?!?!
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
 
#16

Re: Verhindern von Instanzierung eines Objekts mit Create

  Alt 29. Mai 2008, 12:50
Liest Du die oberen Beiträge?

Zitat von Bernhard Geyer:
Das Problem bei Delphi ist das die abstrakt-Definition nicht bei der Klassendefinition möglich ist sondern nur auf Methodenebene.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
bennixview
(Gast)

n/a Beiträge
 
#17

Re: Verhindern von Instanzierung eines Objekts mit Create

  Alt 29. Mai 2008, 12:52
class abstract

Classes, and not just methods, can be declared as abstract.

type
TAbstractClass = class abstract
procedure SomeProcedure;
end;

http://www.codegear.com/products/del...n32/whats-new/
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
 
#18

Re: Verhindern von Instanzierung eines Objekts mit Create

  Alt 29. Mai 2008, 13:01
Oh mann..

Das ist neu in Delphi 2007. Du hast wohl nicht geguckt, welche Delphi-Version der OP benutzt?
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
bennixview
(Gast)

n/a Beiträge
 
#19

Re: Verhindern von Instanzierung eines Objekts mit Create

  Alt 29. Mai 2008, 13:06
Immer locker bleiben,

wollte ja nur aufzeigen dass es möglich ist.
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#20

Re: Verhindern von Instanzierung eines Objekts mit Create

  Alt 29. Mai 2008, 13:44
Zitat von Phoenix:
Das ist neu in Delphi 2007. Du hast wohl nicht geguckt, welche Delphi-Version der OP benutzt?
Da muss ich Dir widersprechen.

Die Überschrift sagt ganz eindeutig:
Zitat:
New and Enhanced IDE Features since Delphi 7
Das sagt wohl ganz klar aus, dass die Features mit Delphi 8, 2005, 2006 oder 2007 eingeführt worden sind, und nicht erst mit 2007.

Und in der Tat kann ich in Delphi 2006 eine als 'sealed' gekennzeichnete Klasse erstellen, die sich auch wirklich nicht ableiten lässt.

Nur 'abstract' muckt ein bissel rum.

[OT]
Desweiteren war Dein Umgangston gegenüber bennixview nicht gerade nett.
Nur mal so angemerkt, im Zuge der hiesigen Diskussionen zu den Themen 'Neue Leute', 'Jeder hat eine Chance', 'Reizbarkeit'...

Manchmal habe ich echt das Gefühl, dass hier einiges vertauscht wird.
Der, der helfen will, kriegt eins auf den Deckel, wenns mal falsch ist (was es hier definitiv nicht war), und die wirklichen Nervensägen kriegen Zucker in den Arsch geblasen.
[/OT]

Edit: da ich ja auch manchmal etwas überreizt bin und mit meinen Interpretationen daneben haue - sollte ich Deine Äußerungen falsch verstanden haben - sorry. Ansonsten - denk mal drüber nach.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 08:06 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