AGB  ·  Datenschutz  ·  Impressum  







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

Zugriff auf Objekt in Klasse

Ein Thema von FediDelPr · begonnen am 25. Dez 2020 · letzter Beitrag vom 10. Jan 2021
Antwort Antwort
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.023 Beiträge
 
Delphi 12 Athens
 
#1

AW: Zugriff auf Objekt in Klasse

  Alt 5. Jan 2021, 09:48
Hallo,

wenn du die Grundlagen noch sicherer drauf hast, ist's kein wirklicher ballast mehr.
Deine Klasse erbt ja eigentlich alles von der entsprechenden Indy-Klasse, du solltest halt
nur wie schon beschrieben einen Constructor spendieren und in dem inherited aufrufen, damit
der geerbte Constructor der Indy-Klasse auch aufgerufen wird. Dannb rauchst du vermutlich bei
deinen Methoden keine Objektinstanzen mehr als Parameter, das macht dann alles die eigene Klasse.

Allerdings: durch das Erben sind bei deiner Klasse halt auch alle Dinge, welche die Indy-Klasse
als public anbietet weiterhin public.

Wenn dir das nicht passt kannst du alternativ eine Klasse schreiben die nicht erbt, sondern
intern eine Instanz der betreffenden Indy-Klasse nutzt die im COnstructor erzeugt wird und im
Destructor freigegeben wird.

Dann schreibst du nur für die DInge, die bei dir öffentlich sein soll entsprechende Wrapper-Methoden.

Grüße
TurboMagic
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.490 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Zugriff auf Objekt in Klasse

  Alt 5. Jan 2021, 10:48
Wenn er kaseln will würde ich das auch eher vorschlagen (https://de.wikipedia.org/wiki/Kompos..._von_Vererbung)
  Mit Zitat antworten Zitat
FediDelPr

Registriert seit: 16. Feb 2018
112 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#3

AW: Zugriff auf Objekt in Klasse

  Alt 6. Jan 2021, 15:10
Nun ich gehe jetzt tiefer in die Materie, es bringt ja nichts, wenn ich es nur
halb verstehe. Bin an Übungen mit dem Doberenz Delphi 7 Buch.
Das Tutorial des Delphi-Treffs kann ich nicht mehr runterladen. Weiss jemand wo
das noch möglich ist ?

Zugleich muss ich vorwärts kommen.
Daher nun zu weiteren Schwierigkeiten. Für das aktuelle Problem bin ich nahe am Ziel.
In der folgenden Version läuft's nämlich:

Code:
(* Deklaration und Aufruf *)

VAR
  IMAPClientEx: TEmailCoreObject;
  ...

 BEGIN
   IMAPClientEx := TEmailCoreObject.Create(NIL);
   IMAPClientEx.OpenEmail;
   ..
   ..
 END;

(* Klassendefinition und Implementation (in eigenem Modul) *)
TYPE
  TEmailCoreObject = CLASS(TidIMAP4)
  PRIVATE
    (* Private-Deklarationen *)
    ..
  PUBLIC
    (* Public-Deklarationen *)
    PROCEDURE OpenEmail;
    PROCEDURE CloseEmail;
  END;
Es wurde mir klar, dass die 'Übergabe' einer Instanz eigentlich einer Parameterübergabe
entspricht. Daher können auch die Parameter in OpenEmail usw.entfallen. (wie von TurboMagic gesagt)

Was mir an dieser Realisierung noch nicht passt, ist, dass das Create im Aufrufteil
stattfindet. Das muss in das Modul mit der Klassendefinition rein. Wie dieses Create-Zeile
aussieht ist mir noch nicht klar. Der Compiler frisst zwar folgendes, aber die Referenz der Instanz
verschwindet natürlich im Nirvana.

Code:
(* Deklaration und Aufruf *)

VAR
  IMAPClientEx: TEmailCoreObject;
  ...

 BEGIN
   IMAPClientEx.OpenEmail;
   ..
   ..
 END;

(* Klassendefinition und Implementation (in eigenem Modul) *)
TYPE
  TEmailCoreObject = CLASS(TidIMAP4)
  PRIVATE
    (* Private-Deklarationen *)
    ..
  PUBLIC
    (* Public-Deklarationen *)
    PROCEDURE OpenEmail;
    PROCEDURE CloseEmail;
  END;

PROCEDURE OpenEmail;
 BEGIN
   TEmailCoreObject.Create(NIL); (* geht nicht, funktionierende Alternative ? *)
   ..
   ..
 END;
Vielleicht hat das jetzt mit dem anscheinend notwendigen (oder mindestens empfehlenswerten) CONSTRUCTOR
zu tun? Auch das SELF könnte ein Kandidat zur Lösung des Problems sein.

Grüsse
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.071 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Zugriff auf Objekt in Klasse

  Alt 6. Jan 2021, 15:29
Die Tutorials gehen doch? Zumindest kann ich problemlos z. B. das folgende aufrufen:

https://www.delphi-treff.de/tutorial...i-crashkurs/8/

Delphi-Quellcode:
(* Deklaration und Aufruf *)

// jeder soll formatieren wie er kann und mag, aber dieses UPPERCASE der Schlüsselwörter ist irgendwie ganz schwer
// TurboPascal aus den Achtzigern. Da wird der Bildschirm vor dem inneren Auge schwarz und die Schrift giftgrün
// und auf auf 80 Zeichen pro Zeile begrenzt ;-)

VAR
  IMAPClientEx: TEmailCoreObject;
  ...

 BEGIN
   IMAPClientEx := TEmailCoreObject.Create(nil);
   IMAPClientEx.OpenEmail;
   ..
   ..
  // wenn fertig, freigeben:
  IMAPClientEx.Free;
 END;

(* Klassendefinition und Implementation (in eigenem Modul) *)
TYPE
  TEmailCoreObject = CLASS(TidIMAP4)
  PRIVATE
    (* Private-Deklarationen *)
    ..
  PUBLIC
    (* Public-Deklarationen *)
    PROCEDURE OpenEmail;
    PROCEDURE CloseEmail;
  END;

PROCEDURE TEmailCoreObject.OpenEmail; // < - - - - Hier die Änderung beachten
 BEGIN
   // hier jetzt die eigentliche Logik implementieren.
   ..
   ..
 END;
  Mit Zitat antworten Zitat
FediDelPr

Registriert seit: 16. Feb 2018
112 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

AW: Zugriff auf Objekt in Klasse

  Alt 6. Jan 2021, 15:38
@TiGü und andere

Entschuldigung, das habe ich unvollständig kopiert bzw. abgeschrieben.
Das ist schon mit der Klasse vorne dran.
  Mit Zitat antworten Zitat
FediDelPr

Registriert seit: 16. Feb 2018
112 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

AW: Zugriff auf Objekt in Klasse

  Alt 6. Jan 2021, 15:41
@TiGü

Du schon recht, das einzelne Tutorial lässt sich schon runterladen. Was nicht geht
ist der Download des Delphi-Starter.
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.071 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Zugriff auf Objekt in Klasse

  Alt 7. Jan 2021, 11:28
Du meinst dieses PDF-Buch?
Naja, da verpasst man jetzt auch nichts.
  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 00:09 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