Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Coinitialize (https://www.delphipraxis.net/3016-coinitialize.html)

Evilboyz 18. Feb 2003 14:42


Coinitialize
 
Hallo,

mein Programm verabschiedet sich gerade immer mit der Fehlermeldung 'Coinitialize wurde nicht aufgerufen'.
Nun habe ich bereits im Forum nachgelesen und herausgefunden, wo man diese Funktion aufrufen sollte, etc., der Fehler blieb leider der gleiche!
Nun muss ich allerdings zugeben, dass ich keinen Schimmer habe, was Coinitialize macht und um mein Problem zu verstehen wäre es gut, wenn mir das jemand kurz und verständlich erklären könnte. Die Hilfe habe ich schon befragt, konnte damit aber nichts anfangen!

Jens Schumann 20. Mai 2003 13:57

Hallo,
das ist kompliziert.
In der Win32 Referenz steht folgendes:
Zitat:

The CoInitialize function initializes the Component Object Model(COM) library. You must initialize the library before you can call its functions. Applications must call CoInitialize before they make any other COM library calls with two exceptions: the CoGetMalloc function, and memory allocation calls.
Aus dem Text ist zu erkennen, das es mit COM zu tun hat. Leider ist
diese Thema alles andere als mal eben schnell erklärt. Zu diesem Thema haben schon viele Leute dicke Bücher geschrieben.
Die besten deutschsprachigen Bücher zu diesem Thema hat Andreas Kosch (COM/DCOM/COM+ mit Delphi) geschrieben. Schau mal unter http://www.entwickler.de

Stanlay Hanks 20. Mai 2003 14:01

Hallo. Vielleicht könnte man dir leichter helfen, wenn du mal den Code von deinem Programm postest. So aus dem Stehgreif is das nich einfach zu beantworten. Und da das ja bestimmt nicht öfter vorkommt, wird ja wohl irgendwas "faul" sein. :wink:
Man liest sich, Stanlay

Evilboyz 20. Mai 2003 14:51

Hallo

und erstmal danke für Eure Antworten! Code kann ich Euch leider keinen schicken, da ich mittlerweile nicht mehr weiß, wo der Fehler aufgetreten ist.
Mein Problem liegt ja schon drei Monate zurück und irgendwie habe ich den Fehler wohl behoben, aber fragt mich nicht wie! :roll:
Die ursprüngliche Frage bleibt jedoch, ich hab nach wie vor nicht herausgefunden, um was es bei coinitalize genau geht, wenn also jemand was dazu weiß und dies der Nachwelt hinterlassen möchte, nur zu, mit mir habt ihr auf alle Fälle einen interessierten Leser ...

Bruno 8. Sep 2003 11:10

Re: Coinitialize
 
Es ist wahrscheinlich nicht mehr besonders aktuell, aber ich bin auf das gleiche Problem gestossen und habe es wiefolgt gelöst:

In der USES-Klauses hinzugefügt:
ActiveX

Vor der Verwendung des Ole-Objektes:
OleInitialize(nil);

Beim Aufräumen:
OleUninitialize;


Viele Grüsse aus der Schweiz
Bruno

leonix 9. Sep 2003 18:37

Re: Coinitialize
 
Anscheinend ist es noch komplexer, in der USES-Klauses hinzugefügt:
Code:
ActiveX
Vor der Verwendung des Ole-Objektes:
Code:
  OleInitialize(nil);
  CoInitializeEx(nil,COINIT_MULTITHREADED);
Beim Aufräumen:
Code:
  CoUninitialize;
  OleUninitialize;
Zumindest reime ich mir das für meine Excel-Automation so aus diversen Artikeln zusammen, auch dem Win32-Api-Zitat oben im Thread. Auch die Fehlermeldung sagt ja eindeutig, das CoInitialize nicht aufgerufen wurde; also sollte man es einfach mal aufrufen (und OleInitialize auch noch).

L.

leonix 9. Sep 2003 19:49

Re: Coinitialize
 
Sorry, hab Mist geschrieben. Das OleInitialize(nil); ruft selber schon CoInitializeEx auf, so dass man das gar nicht braucht.

L.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:00 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