AW: Type mit in andere Unit durchreichen...?
Kannte denn Delphi 2006 bzw. Turbo Delphi schon Nested Types?
|
AW: Type mit in andere Unit durchreichen...?
Also ich finde das verwirrend. Da wird ein Datentyp deklariert, den man aber nicht verwenden soll, sondern einen anderen, der aber genau das gleiche ist. Wenn man das aber doch machen sollte, funktioniert das dann doch gar nicht mehr, oder irre ich mich? So wie der Threadersteller von 9 Jahren meinte, er möchte keine Fehlerquellen einbauen, geht es doch gar nicht. Man kann doch eher so Fehlerquellen einbauen (einfach beide Units importieren und versehentlich den anderen Datentyp verwenden).
Was sollen diese Klimmzüge? Wenn der Typ separat deklariert ist, dann verwende ich eben diese Unit explizit. Oder ich mappe sie explizit, aber so verstecken? Nur weil ich nur eine Unit importieren will? Ich könnte auch einfach alle Threads in eine Unit schmeißen, wenn es also darum ginge, wäre das die einfachste Art. Macht die VCL ja auch so... |
AW: Type mit in andere Unit durchreichen...?
Zitat:
|
AW: Type mit in andere Unit durchreichen...?
Zitat:
Gruß K-H |
AW: Type mit in andere Unit durchreichen...?
Geht doch einwandfrei ... ob es sinnvoll ist, steht ja auf einem anderen Blatt :)
Delphi-Quellcode:
unit MyLib.Types;
interface // Nicht notwending, aber nach dem Durchreichen muss eh mit TSomeType.stNothing gearbeitet werden. {$SCOPEDENUMS ON} type TSomeType = ( stNothing, stVery, stUseful ); implementation end.
Delphi-Quellcode:
Zusammenfassen:
unit MyLib.Core;
interface uses MyLib.Types; type TMyCore = class public constructor Create( AType: TSomeType ); end; implementation { TMyCore } constructor TMyCore.Create( AType: TSomeType ); begin inherited Create; end; end.
Delphi-Quellcode:
Verwenden:
unit MyLib;
interface uses MyLib.Types, MyLib.Core; type TSomeType = MyLib.Types.TSomeType; TMyCore = MyLib.Core.TMyCore; implementation end.
Delphi-Quellcode:
program dp_055615;
{$APPTYPE CONSOLE} {$R *.res} uses System.SysUtils, MyLib in 'MyLib.pas'; procedure Main; var LInstance: TMyCore; begin LInstance := TMyCore.Create( TSomeType.stNothing ); try finally LInstance.Free; end; end; begin try Main; except on E: Exception do Writeln( E.ClassName, ': ', E.Message ); end; ReadLn; end. |
AW: Type mit in andere Unit durchreichen...?
Zitat:
|
AW: Type mit in andere Unit durchreichen...?
Zitat:
|
AW: Type mit in andere Unit durchreichen...?
Zitat:
Wie bereits erwähnt, dürfte der Typ nicht gehen.
Delphi-Quellcode:
Die Inlinedeklaration geht schon lange, sonst müsste man auch bei jedem
type
TMyRecord = record i: Integer; S: string; end; TMyClass = class public type TMyInnerRecord = record i: Integer; S: string; end; public FFieldInner: TMyRecord; FFieldOuter: TMyInnerRecord; FFieldDirect: record i: Integer; S: string; end; end; var MyGlobalVarInner: TMyRecord; MyGlobalVarOuter: TMyClass.TMyInnerRecord; MyGlobalVarDirect: record i: Integer; S: string; end;
Delphi-Quellcode:
das erstmal als eigenen Typen deklarieren, bevor man damit eine Variable definieren kann.
array of ...
|
AW: Type mit in andere Unit durchreichen...?
Zitat:
Es bleibt dabei (für mich): Will ich mir einen abbrechen, nur um ein glasklares und stringentes 'uses' zu unterbinden? Verzichte ich auf Messer, Gabel und Löffel, damit ich mir noch mit -der Einfachheit wegen- Gameffel hantieren muss? Ist das wirklich einfacher? Muss jeder selbst entscheiden. |
AW: Type mit in andere Unit durchreichen...?
Zitat:
Delphi-Quellcode:
schreiben sondern muss die drölfzig Units, aus denen ich was brauche einzeln "usen". Natürlich nur ein stümperhafter Behelf aus Mangel an Alternativen :(
uses MeineLib
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:24 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