[Delphi] CoInitialize zorgt voor parent-melding

Pagina: 1
Acties:

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

Topicstarter
Mensen,

De search op GoT heeft me een heel stuk kunnen helpen met dit probleem: ik moest CoInitialize aanroepen om van de melding "CoInitialize has not been called" af te komen. (duh)

En via Google Groups ben ik er achter dat dit te maken heeft met de ADO-connection die op mijn datamodule staat. En inderdaad, als ik die er af haal, is er niks aan de hand. Als ik deze echter terugzet en het vinkje durf aan te zetten bij "Build with runtime packages" dan gaat het helemaal fout. Ik krijg dan de melding "CoInitialize has not been called".

Als ik echter (in de .dpr of de datamodule of het hoofdscherm) een coInitialize aanroep, dan krijg ik bij het runtime creeeren van mijn frames een foutmelding dat deze geen parent hebben. Dat klopt, die wijs ik later toe.

Met de zaken zoals ze staan nu kan ik voor drie dingen kiezen:

1. CoInitialize aanroepen en dan maar geen frames (dat wil ik niet, frames zijn TE belangrijk)

2. Zonder ADOconnection werken (en deze eventueel in elke component apart zetten). Is een optie, maar veel werk.

3. De app niet met runtime packages laten werken (en dus enorm laten groeien)

Iemand hiermee ervaring en een manier om een nummer 4 aan mijn lijstje toe te voegen? En dan het liefst 'Doe actie X en maak een app met runtime packages' ;)

Nog wat achtergrondinfo:
- Ja, application.Initialize is de eerste regel na de Begin in de dpr
- Eerst wordt DMod gecreate, daarna het hoofdscherm
- Heb laatste versies van MDac en Jet
- Ik gebruik geen (eigen) threads
- Heb al meerdere malen dit soort apps gemaakt, nog nnoit problemen mee gehad :?

[ Voor 15% gewijzigd door OZ-Gump op 12-06-2003 14:14 ]

My personal website


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 13-08 16:46

curry684

left part of the evil twins

Geen ervaring mee, wel wat mental notes:
• CoInitialize moet in *iedere* thread aangeroepen worden die COM via-via gebruikt.
• TFrames en TForms hebben een unieke constructor om ActiveX-embedded controls te gebruiken zonder een Owner. Kan zijn dat hier wat dingen fout lopen als je CoInitialize doet.... Lees de help bij die constructors eens om te kijken of je dat per ongeluk fout doet?

Professionele website nodig?


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

Topicstarter
CoInitialize moet in *iedere* thread aangeroepen worden die COM via-via gebruikt.
Dat wist ik eigenlijk wel. Maareh... ik was nog vergeten te vertellen: ik maak nergens gebruik van Threads.... Ik heb gewoon een appje gemaakt met een datamodule erin, en als ik die probeer te creeeren (in de dpr) dan krijg ik die melding. En dan alleen nog als de optie "Build with runtime packages" aanstaat.

Ik zal je notes doornemen en, in geval van een oplossing, dit ook even laten weten....

My personal website


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Is dit een project wat je met de hand van BDE naar ADO hebt omgezet? Waarschijnlijk moet je alleen nog even de ActiveX unit usen.

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


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

Topicstarter
Ben met dit project volledig opnieuw begonnen. Valt inderdaad wel op dat de ActiveX unit niet geused wordt in de datamodule. Dat ga ik even proberen.

Edit:
Hmm... ActiveX geused in zowel hoofdscherm, .dpr en datamodule, maar dat brengt helaas ook geen oplossing. Begin hier steeds minder zin in te krijgen (weekend begint ook steeds dichterbij te komen :P)
Voorlopig bouw ik de app wel zonder runtime packages. Dat wil echter niet zeggen dat ik dit laat rusten, want ik wil het er nog wel uit hebben voor het commercieel gaat...!

[ Voor 57% gewijzigd door OZ-Gump op 12-06-2003 15:42 ]

My personal website