![]() |
proceduren in unterklassen problem
Hi,
bisher hatte ich meine oft genutzten Proceduren/Funktionen in einer Klasse untergebracht, um einfach auf sie zuzugreifen. Da es aber langsam unübersichtlich wird, wollte ich die Proceduren durch eine 2te Klasse schachteln un thematisch ordnen um z.B. aus myfunctions.nowUTC -> myfunctions.time.nowutc zu machen... was an sich auch beim programmieren funktioniert - aber sobald ich auf eine funktion zugreife bekomme ich eine AccessViolation... Danke Ralf hier mein versuch:
Delphi-Quellcode:
unit myglobal; interface uses mytime; type T = class public time: Tmytime; end; implementation end. ********************* unit mytime; interface uses Windows, Forms, SysUtils, jcldatetime, controls; type TmyTime = class public function nowUTC: TDateTime; end; implementation function TmyTime.nowUTC: TDateTime; var SystemTime: TSystemTime; begin GetSystemTime(SystemTime); with SystemTime do Result := EncodeDate(wYear, wMonth, wDay) + EncodeTime(wHour, wMinute, wSecond, wMilliseconds); end; end. |
Re: proceduren in unterklassen problem
Objekt muss mit Create erzeugt werden.
|
Re: proceduren in unterklassen problem
Hallo!
Hast Du auch eine Instanz Deiner Klasse erstellt?
Delphi-Quellcode:
MeineKlassenInstanz := TMeineKlasse.Create();
MeineKlassenInstanz.TuIrgendwas(); MeineKlassenInstanz.Free(); |
Re: proceduren in unterklassen problem
Zitat:
Wenn du z.B. jede Menge Funktionen und Proceduren zum Thema Datum und Uhrzeit hast, dann packst du diese in eine eigene Unit (z.B. "DateTimeUtils") und gut is. Alle Funktionen und Proceduren sollten dann so programmiert sein, dass man sie im Prinzip in jedes Projekt einbinden kann. Man *kann* wenn man will diese Funktionen in einer Klasse zusammenfassen. Dann sollte man aber Klassenmethoden verwenden.
Delphi-Quellcode:
Wie gesagt, das ist keine "echte" Klasse, weil keine Variablen enthalten sind.
type
TTimeUtils = class(TObject) // keine echte Klasse, da keine Variablen vorhanden public class function GetUTC:TDateTime; class procedure SetUTC(dt:TDateTime); end; ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:12 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-2025 by Thomas Breitkreuz