[delphi] gecompilede classes in losse bestanden

Pagina: 1
Acties:

  • tombo_inc
  • Registratie: December 2004
  • Laatst online: 10-03 13:21
hey,

ik ben een progje aan het maken in delphi, en daarbij acht ik het nodig vanwege een nette structuur en omdat het programma zo makkelijker uit te breiden is, om bepaalde classes in losse bestanden te plaatsen. wat ik dus eigenlijk wil is een (of meerdere) classes in een losse dll hebben. nu ben ik er niet zeker van of dit wel met dll's kan en hoe dit dan zou moeten (heb al wel vanalles geprobeerd maar krijg het zootje niet gelinked). (ik weet wel hoe ik met dlls moet werken als ik gewoon procedures of functions wil gebruiken). ik heb ook eens de delphi help geplundert :p en daar kwam ik nog wat leuks tegen, namelijk object files. het probleem is echter dat ik er niet precies uit kan halen waarvoor die dingen nou precies bedoelt zijn, en of het niet gewoon units zijn (wat ik sterk vermoed) :?.

wat ik dus wil en niet gerealiseerd krijg, is een dll (of zoiets dergelijks), waarin ik wat classes heb gedefinieerd en geimplementeerd. ik wil dan vanuit mijn programma objecten instantieren die uit die dll komen.
ik hoop dat mijn probleem duidelijk is :) .

Microsoft Windows: A thirty-two bit extension and graphical shell to a sixteen-bit patch to an eight-bit operating system originally coded for a four-bit microprocessor which was written by a two-bit company that can't stand one bit of competition


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

Objectfiles zijn, als ze voor Delphi hetzelfde zijn als voor bijvoorbeeld C, gewoon gecompileerde versies van je .pas files. Feitelijk is dat dus zo'n beetje wat je wil, maar een DLL zou ook kunnen. Het verschil is dat objectfiles straks na het compileren gewoon ingebakken zitten in je executable, terwijl DLL's meegeleverd moeten worden, AFAIK.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • tombo_inc
  • Registratie: December 2004
  • Laatst online: 10-03 13:21
aha, mijn vermoeden word dus bevestigd.
ze worden idd in de uiteindelijke executable gebakken.
dit wil ik in mijn geval dus niet. ik wil mijn classes in losse bestanden zoals dlls.
nu kan ik wel dlls maken met mooie classes erin :p, maar ik krijg ze niet werkend in mijn applicatie. dat is mijn probleem 8)7 :p

Microsoft Windows: A thirty-two bit extension and graphical shell to a sixteen-bit patch to an eight-bit operating system originally coded for a four-bit microprocessor which was written by a two-bit company that can't stand one bit of competition


  • Speed24
  • Registratie: Augustus 1999
  • Niet online
Wil je gewoon weten hoe je DLL's maakt een aanroept met Delphi?

Google -- delphi dll howto

  • tombo_inc
  • Registratie: December 2004
  • Laatst online: 10-03 13:21
ik wil weten hoe ik classes (types dus) aan roep vanuit een dll. ik wil objecten uit een dll kun maken en gebruiken. gewone functie en procedure aanroepen dat lukt me allemaal wel.

Microsoft Windows: A thirty-two bit extension and graphical shell to a sixteen-bit patch to an eight-bit operating system originally coded for a four-bit microprocessor which was written by a two-bit company that can't stand one bit of competition


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Dan zou je naar COM/ActiveX/DCOM/COM+ kunnen gaan kijken. ActiveX Libraries zijn speciale DLLs die classes kunnen bevatten die je kan aanroepen.

Als je het percee met een 'gewone' DLL wil doen kan je ook gewoon classes doorgeven, maar beter is het via interfaces te doen.

We adore chaos because we like to restore order - M.C. Escher


  • tombo_inc
  • Registratie: December 2004
  • Laatst online: 10-03 13:21
hoe bedoel je gewoon classes doorgeven?

Microsoft Windows: A thirty-two bit extension and graphical shell to a sixteen-bit patch to an eight-bit operating system originally coded for a four-bit microprocessor which was written by a two-bit company that can't stand one bit of competition


Verwijderd

Kon je in Delphi ook niet met Runtime Packages, .BPL-files, werken ? De Delphi variant van DLL's ?
Misschien dat je daar eens naar moet zoeken !

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Ja, runtime packages kan ook. Dan kan je ook met classes werken.

Met classes doorgeven bedoel ik

// In DLL
function GeefMijEenNieuweInstantie: TMyClass;

We adore chaos because we like to restore order - M.C. Escher


  • tombo_inc
  • Registratie: December 2004
  • Laatst online: 10-03 13:21
aha. je gooit dus een class in je dll. en vervolgens ook een losse funtie die je een instantie van de class terug geeft. dat lijkt me wel een goed idee ja :9 . bedankt ik ga meteen testen.
ik kreeg ook geen andere mogelijkheid werkend namelijk. want je kan de class niet net zo benaderen als een functie of procedure. en uit de verhalen die ik op internet heb gevonden kon ik alleen maar concluderen dat men nog niet zover was om een class in een gewone dll te zetten en automatisch te ondersteunen (wat ik overigens erg vreemd vond). met COM etc. zou het ook moeten werken, maar daar heb ik nog geen verstand van. ik zal me ook daar eens in verdiepen. bedankt in ieder geval.

mijn vraag is nu nog alleen, wat is nou het netste om te doen. de class doorgeven dmv een functie, delphi packages gebruiken of meer de weg van COM ingaan. of maakt het allemaal niks uit?

Microsoft Windows: A thirty-two bit extension and graphical shell to a sixteen-bit patch to an eight-bit operating system originally coded for a four-bit microprocessor which was written by a two-bit company that can't stand one bit of competition


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Delphi runtime packages is het veiligst en is het makkelijkst. COM is een voordeel als je de classes ook in andere talen wilt maken, zoals VB, C# of C++.

De DLL manier is wat onveilig, mits correct geimplementeerd. Als je het op de manier doet die ik als voorbeeld gaf heb je de implementatie van de class in de DLL, maar ook in de EXE. Je zal dus moeten gaan werken met basis klassen of nog beter: Interfaces.

We adore chaos because we like to restore order - M.C. Escher


  • tombo_inc
  • Registratie: December 2004
  • Laatst online: 10-03 13:21
ok, dan ga ik denk ik voor de packages. aangezien mijn library alleen maar met mijn delphi applicatie hoeft te werken en ook niet taal/platform onafhankelijk hoeft te zijn, hoef ik geen universele dll of COM object te hebben. en dat scheelt me dus weer een berg werk :p . wat ik me wel afvraag is waarom de dll methode onveilig is?

Microsoft Windows: A thirty-two bit extension and graphical shell to a sixteen-bit patch to an eight-bit operating system originally coded for a four-bit microprocessor which was written by a two-bit company that can't stand one bit of competition


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Omdat versie verschillen tussen de DLLs of EXE niet snel opgemerkt worden en tot vreemde gevolgen kunnen leiden.

We adore chaos because we like to restore order - M.C. Escher

Pagina: 1