AW: Zugriff auf Objekt in Klasse
@TiGü
Du schon recht, das einzelne Tutorial lässt sich schon runterladen. Was nicht geht ist der Download des Delphi-Starter. |
AW: Zugriff auf Objekt in Klasse
Du meinst dieses PDF-Buch?
Naja, da verpasst man jetzt auch nichts. |
AW: Zugriff auf Objekt in Klasse
An meinem letzten Problem stehe ich immer noch an, trotz lesen in
mehreren Büchern. Im Hauptmodul soll's so aussehen, kein Create:
Code:
VAR
IMAPClientEx: TEmailCoreObject; ... BEGIN IMAPClientEx.OpenEmail; .. .. END; Das Untermodul (EmailCore) soll so aussehen:
Code:
Kann da jemand konkret weiterhelfen ? Danke
UNIT EmailCore;
TYPE TEmailCoreObject = CLASS(TidIMAP4) PRIVATE (* Private-Deklarationen *) .. PUBLIC (* Public-Deklarationen *) // hier CONSTRUCTOR notwendig ?? Wie genau ? <--- PROCEDURE OpenEmail; .. END; PROCEDURE TEmailCoreObject.OpenEmail; BEGIN // Was muss hier eingefuegt werden, damit der Speicher für TEmailCoreObject // reserviert wird ? <--- .. .. END; |
AW: Zugriff auf Objekt in Klasse
warum sträubst Du dich so gegen ein Create?
Delphi-Quellcode:
Wenn Du kein Create haben möchstes musst Du Klassen-Methoden erstellen.
VAR
IMAPClientEx: TEmailCoreObject; ... BEGIN IMAPClientEx := TEmailCoreObject.Create; try IMAPClientEx.OpenEmail; .. .. finally IMAPClientEx.Free; end; END; Dann könnte es so gehen. Grüße Klaus |
AW: Zugriff auf Objekt in Klasse
Weil das nur ein technisches Problem (endlicher Speicher) ist und nichts mit der eigentlichen
Aufgabe zu tun hat. Es verhunzt die eigentliche Absicht. Die Essenz des Programmes versinkt in solchen technischen Details. Das Programm ist schlussendlich schlechter lesbar, es sind mehr Fehler möglich. Natürlich mag das für einen Einzelfall nicht grafierend sein aber in der Summe.. Eine normale Variable muss man ja auch nicht zuerst kreiieren. Ich mag diesen Ballast nicht, so ähnlich ist es ja auch mit der Fehlerverarbeitung. Auch die ist so dominant, obwohl es eigentlich nur um die Ausnahmen geht. Ich bin da ein Purist und würde sogar soweit gehen, dass dies ein Teil unserer heutigen Softwarekrise ist. Um es zu verdeutlichen ein Beispiel - der Zugriff auf eine Festplatte: - Oeffnen (mit moeglichst wenigen Parametern, oder allenfalls Setup) - Lesen oder Schreiben - Schliessen Das ist die Hauptstruktur, nichts weiter. Und die muss möglichst sichtbar bleiben. Details dann in tieferen Schichten und auch dort dasselbe. Ich hoffe du verstehst mich nicht falsch. Ich finde es wird gerade in der Software-Industrie oft viel zu kompliziert gedacht. Ich könnte jetzt ein weiteres Mal Einstein zitieren... Grüsse FediDelPr |
AW: Zugriff auf Objekt in Klasse
Ah danke noch, dann schau ich mal bei den Klassen-Methoden
|
AW: Zugriff auf Objekt in Klasse
Gesetzt den Fall ich verzichte auf das Create im aufrufenden Modul,
Code:
kann ich eine Methode trotzdem erreichen oder nicht ? Ist also der Einsprung trotzdem
VAR
IMAPClientEx: TEmailCoreObject; ... BEGIN // IMAPClientEx := TEmailCoreObject.Create(nil); --> kein Create IMAPClientEx.OpenEmail; .. garantiert oder geht der Aufruf quasi ins Leere (weil nicht definiert) ? Beim Debugging war das erfolgreich. Zufall ? |
AW: Zugriff auf Objekt in Klasse
Moin...:P
Zitat:
Zur dynamischen Verwendung einer Klasse/Objekt gehört immer ein Create/Free. Bei dieser Konstellation hast du die Wahl wann das Objekt im Speicher aufgenommen wird (Create) und wieder entfernt wird (Free). Zitat:
Zitat:
Zitat:
Zitat:
Wie schon mehrfach gesagt:
Delphi-Quellcode:
Stell den gesamten Code mal ein.
type
TEmailCoreObject = class(TidIMAP4) private public constructor Create(Owner: TComponent); destructor Destroy; override; procedure OpenEmail; end; implementation constructor TEmailCoreObject.Create(Owner: TComponent) begin inherited Create(Owner) // immer erste Zeile -> Erzeugen Vorfahr TidIMAP4 // end; destructor TEmailCoreObject.Destroy; begin // inherited; // immer letzte Zeile end; . . . procedure TfoMain.Blubb; var IMAPClientEx: TEmailCoreObject; begin IMAPClientEx := TEmailCoreObject.Create(nil); try IMAPClientEx.OpenEmail; finally IMAPClientEx.Free; end; end; |
AW: Zugriff auf Objekt in Klasse
Hallo,
ich glaube der TE verwechselt Debuggen mit Compilieren. Wenn Du ohne Create arbeiten willst, Musst du die Klasse über den Delphi-Designer auf das DataModul packen. Davon raten dir hier alle ab. Jetzt musst du halt entscheiden. |
AW: Zugriff auf Objekt in Klasse
Zitat:
Nochmal zu Klassenmethoden: https://www.delphi-treff.de/tutorial...i-crashkurs/8/ Zitat:
Frage: Wie oft wird das Objekt benutzt? Je nach Verwendung kann man das Objekt direkt vor OpenMail erzeugen und direkt wieder freigeben oder z.b. im constructor der Form oder der Logik Klasse erzeugen und am Ende (jeweiliger destuctor) wieder freigeben. Damit hat man das Objekt über die Lebensdauer der Form z.B. im Zugriff ohne ständig Create/Free. :zwinker: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:21 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