If you are not wiping out you are nog pushing enough...
Je kan inderdaad klassen via de naam van die klasse dynamisch inladen en instantierenPinda: Nu is het (dacht ik) in JAVA mogelijk om objecten te laden dmv een String.
Over Delphi weet ik verder niet veel, maar ik ben benieuwd wat de mogelijkheden zijn en wat de verschillen zijn met dynamische class-loading en ClassLoaders in Java
PS: tijd niet gezien hier!
Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment
Hmm ik weet vrij veel van Delphi, maar dit wist ik nog niet.
Lijkt me leuk omt e weten hoe het precies moet.
Lijkt me leuk omt e weten hoe het precies moet.
Albert Einstein: A question that sometime drives me hazy: Am I or are the others crazy?
Verwijderd
Met TStream.WriteComponent en TStream.ReadComponent kun je component wegschrijven en lezen.
Wel worden alleen de published properties weggeschreven.
Hier staat nog een voorbeeld.
Wel worden alleen de published properties weggeschreven.
Hier staat nog een voorbeeld.
Ik weet inmiddels al hoe het moet.
Je maakt van bijvoorbeeld je BASE class, zeg Base een classe-typering:
TBaseClass : class of TBase;
VCervolgens heb je een aantal classes die deze classe extenden. (Class1, Class2 , Class 3 = class(TBase))
je procedure wordt dan:
Eventueel nog wat try-excepts eromheen.
Dit is dus echt heel erg handig, als je iets db gestuurd doet
Je maakt van bijvoorbeeld je BASE class, zeg Base een classe-typering:
TBaseClass : class of TBase;
VCervolgens heb je een aantal classes die deze classe extenden. (Class1, Class2 , Class 3 = class(TBase))
je procedure wordt dan:
code:
1
2
3
4
5
6
7
8
9
10
| var obj: TPersistentClass; obj2: TBase; begin registerClasses([Class1,Class2, Class3]); obj := getClass(edit1.Text); obj2 := TBaseClass(obj).create(Self); //doe met obj2 wat je wilt... obj2.free; end; |
Eventueel nog wat try-excepts eromheen.
Dit is dus echt heel erg handig, als je iets db gestuurd doet
If you are not wiping out you are nog pushing enough...
Verwijderd
Ik kan me vergissen, maar creeer je nu niet altijd een TBase.
Dus ook als Edit1.Text = 'TExtBase' en je hebt gedef TExtBase = class(TBase);
Dus ook als Edit1.Text = 'TExtBase' en je hebt gedef TExtBase = class(TBase);
Nee hoor, als ik Class1 opgeef dan maakt hij netjes een Class1.
Echter je kunt (geloof ik) enkel functie gebruiken die in TBase zijn gedeclareerd, dit moet ik nog even uitzoeken. Dit is echter niet relevant want op het moment dat je een specifieke functie wilt gaan gebruiken heb je dit niet nodig.
Probeer hetzelfde grapje maar eens met controls. Dan zul je zien dat als je TEdit intikt terwijl je een "Tcontrol" creert je toch een Editbox krijgt.
Echter je kunt (geloof ik) enkel functie gebruiken die in TBase zijn gedeclareerd, dit moet ik nog even uitzoeken. Dit is echter niet relevant want op het moment dat je een specifieke functie wilt gaan gebruiken heb je dit niet nodig.
Probeer hetzelfde grapje maar eens met controls. Dan zul je zien dat als je TEdit intikt terwijl je een "Tcontrol" creert je toch een Editbox krijgt.
If you are not wiping out you are nog pushing enough...
Verwijderd
Owkee, ik dacht dat je door
altijd de constructor van TBase aanriep..
code:
1
| obj2 := TBaseClass(obj).create(Self); |
altijd de constructor van TBase aanriep..
edit:
Create is virtual, moet ik toch onderhand wel weten
Create is virtual, moet ik toch onderhand wel weten
Idd.
Is wel leuk, nu kan ik nog dynamischer mijn systeempske opbouwwen
Is wel leuk, nu kan ik nog dynamischer mijn systeempske opbouwwen
If you are not wiping out you are nog pushing enough...
Pagina: 1