Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Funktion, Prozedur und eigen Klasse (https://www.delphipraxis.net/103825-funktion-prozedur-und-eigen-klasse.html)

Bernd Nowak 22. Nov 2007 10:51


Funktion, Prozedur und eigen Klasse
 
Hallo,
ich habe folgendes Verständnis Problem.

Ich habe eine selbsterstellte Klasse (nur als Beispiel die TAuto Klasse):

Delphi-Quellcode:
type
  TAuto = class
  private
    FFarbe: string;
    FBaujahr: integer;
    procedure SetFarbe(Farbe: string);
  public
    property Farbe: string read FFarbe write FFarbe;
  end;
Nun möchte ich eine Funktion/Prozedure erstellen die diese Klasse mit Werten füllt (nur Farbe reicht selbst mit statischem Wert, da ich eigentlich nur den Ablauf verstehen will). Im Falle einer Funktion also als Rückgabewert den Typ TAuto oder aber als Prozedure wobei die ja keine Rückgaben erlauben.

Stehe vollkommen auf dem Schlauch :)

Relicted 22. Nov 2007 11:02

Re: Funktion, Prozedur und eigen Klasse
 
hiho!

das ganze was du suchst nennt sich constructor... gibt automatisch sich selbst zurück :-)

Delphi-Quellcode:
type
  TAuto = class
  private
    FFarbe: string;
    FBaujahr: integer;
    procedure SetFarbe(Farbe: string);
  public
    property Farbe: string read FFarbe write FFarbe;
    constructor Create( sFarbe : string );
  end;

implementation

constructor TAuto.Create( sFarbe : string );
begin
  FFarbe := sFarbe;
end;
aufruf dann via coAuto := TAuto.Create( 'Blau' );

gruß
reli

Bernd Nowak 22. Nov 2007 11:44

Re: Funktion, Prozedur und eigen Klasse
 
OK.

Habe mir das mal durch den Kopf gehen lassen. In meiner Klasse geht es um diverse Directx Eigenschaften. Das würde dann bedeuten,
das ich in diesem Teil (ich lasse es eben bei diesem Beispiel :) ):

Delphi-Quellcode:
constructor TAuto.Create( ); // Lasse ich leer da ich bei Dxdiag keinen Parameter übergeben muss
begin
 ...
 Rufe irgendwas auf und setze Eigenschaft
end;
einfach die dementsprechenden Aufrufe reinpacke um die Eigenschaften der Klasse beim erstellen zu füllen ?

mkinzler 22. Nov 2007 11:46

Re: Funktion, Prozedur und eigen Klasse
 
immer den Konstruktor der Superklasse aufrufen!

Delphi-Quellcode:
constructor TAuto.Create( ); // Lasse ich leer da ich bei Dxdiag keinen Parameter übergeben muss
begin
   inherited Create;
...
Rufe irgendwas auf und setze Eigenschaft
end;

Relicted 22. Nov 2007 11:54

Re: Funktion, Prozedur und eigen Klasse
 
*agree*

war nur in dem beispiel unpassend :-)

mkinzler 22. Nov 2007 12:01

Re: Funktion, Prozedur und eigen Klasse
 
Warum jede Klasse hat eine Superklasse! Wenn man nichts angibt halt TObject

Relicted 22. Nov 2007 12:06

Re: Funktion, Prozedur und eigen Klasse
 
ja das ist klar...
ich habs bisher bei nem tobject sein gelassen und nie probleme dabei gehabt...
ich bin/war der meinung dass es in dem fall überflüssig ist.

Delphi-Quellcode:
constructor TObject.Create;
begin
end;
aber lasse mich gerne da auch belehren :-)

gruß
reli

sirius 22. Nov 2007 12:17

Re: Funktion, Prozedur und eigen Klasse
 
Zitat:

Zitat von Relicted
ich habs bisher bei nem tobject sein gelassen und nie probleme dabei gehabt...
ich bin/war der meinung dass es in dem fall überflüssig ist.
aber lasse mich gerne da auch belehren :-)

Das hatten wir auch gerade hier

mkinzler 22. Nov 2007 12:36

Re: Funktion, Prozedur und eigen Klasse
 
Ich würde mich aber auf keine Compilermagic verlassen.

sirius 22. Nov 2007 12:54

Re: Funktion, Prozedur und eigen Klasse
 
Zitat:

Zitat von mkinzler
Ich würde mich aber auf keine Compilermagic verlassen.

:gruebel: Du traust deinem eigenen Compiler nicht? Ungünstig.

mkinzler 22. Nov 2007 13:18

Re: Funktion, Prozedur und eigen Klasse
 
Meinem schon, aber wer sagt mir das neuere Compiler wg RTL/VCL/..-Änderungen dann nicht doch Code direkt in der basisklasse haben und dann, wegen dem fehlendem inherited irgendwas nicht mehr funktioniert? Nach solchen Fehlern sucht man u.U. ewig.

Bernd Nowak 23. Nov 2007 08:17

Re: Funktion, Prozedur und eigen Klasse
 
Vielen Dank !
Klappt super muss nun nur rausfinden wie ich unter Win95 und directx 8 verhindere das meine Klasse aufgerufen wird da es sonst kracht. Warum MS auch immer soviel ändert bzw. keine Abwärtskompabilität in seinem DXDiag Zeugs hat :-D

Relicted 23. Nov 2007 08:30

Re: Funktion, Prozedur und eigen Klasse
 
auch wenn neue frage neues thema... aber *hust*

HKEY_LOCAL_MASCHINE\Software\Microsoft\DirectX, da steht dann in einer Zeichenfolge ( Version ).
Beispiel: "4.08.00.0400" musst also nur die ( 8.00 ) auslesen.
Hoffe das klappt auch in windows < XP... das gilt es zu testen


gruß
reli

Bernd Nowak 23. Nov 2007 08:46

Re: Funktion, Prozedur und eigen Klasse
 
Danke für den Tip ! Werde ich mir mal ansehen muss mich aber jetzt um meine Steuern kümmern :-D

PS: Ja ich weiss das ein Thread nur ein Thema behandeln soll aber da das so gut gefunzt hatte mit euren Antworten und ich ein wenig gelernt hatte wollte ich nur von dem Erfolg und Misserfolg auf der anderen Seite schreiben. OT: Interessant das der DX Teil auch unter Vista mit der Klasse läuft.

Relicted 23. Nov 2007 08:57

Re: Funktion, Prozedur und eigen Klasse
 
wieso sollte es nicht laufen? weißt du wie unglücklich ich wäre wenn ich zuhause mit DX10 nicht meine lieblingsgames zocken könnte? :-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:00 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