Autor Beitrag
ideo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17

Gentoo, Suse, Win XP
Delphi 2005
BeitragVerfasst: Do 30.06.05 08:40 
Hallo,

für eine multiuser Anwendung möchte ich ein Ole-Objekt mehrfach erzeugen, so dass jeder Benutzer separat darin arbeiten kann.

Aktuell erzeuge ich das Ole-Objekt für jeden Benutzer in einem separaten Thread:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
unit MainUnit;

.
.
.

  //Erzeuge neuen Thread
  if assigned(MyThread[ConNr]) then
   MyThread[ConNr].Free;
  MyThread[ConNr] := TMyThread.Create;


Quelle Thread:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
unit separaterThread;

...

type
  TMyThread = class(TThread)

...

constructor TMyThread.Create;
begin
 inherited Create(false);
 FreeOnTerminate := true;
 CoInitializeEX(nil, COINIT_MULTITHREADED);
 MyOLEWin := CreateOLEObject('Something.Application');
 MyOLEWin.Visible := form1.CheckBox1.Checked;

end;


Soweit so gut.. :-).

Wenn nun ein weiterer Benutzer auf die Anwendung zu greift, wird das selbe OLE-Objekt noch einmal initialisiert. Die Ursache habe ich in der Hilfe von Delphi zum Thema "CreateOleObject" gefunden.

Zitat:

Hinweis: CreateOleObject wird einmal für jede neue Instanz einer Klasse aufgerufen. Um mehrere Instanzen einer Klasse zu erzeugen, verwenden Sie einen Klassengenerator.


Problem erkannt --> nun hängt es leider an der praktischen Umsetzung...

Was ist damit gemeint, "verwenden Sie einen Klassengenerator"?

Für einen kleinen Denkanstoß wäre ich dankbar.


Viele Grüße

Gunnar
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19336
Erhaltene Danke: 1751

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 30.06.05 08:59 
Nun, mit dem Klassengenerator ist folgendes gemeint:
Jeder COM-Server muss ein IClassFactory - Objekt zur Verfügung stellen.

Mehr Informationen hier direkt von Microsoft:
msdn.microsoft.com/l...2cd-c4ecbe6051c5.asp

Hmm, das scheint auch ganz informativ zu sein:
www.mindcracker.com/.../COMClassFactory.asp

Durchgelesen hab ich mir das jetzt nicht, aber vielleicht hilft dir das ja schon und ich werd mal nach einem Beispiel suchen.

//edit:
Hier steht auch was zur Verwendung in Delphi:
www.gekko-software.nl/Delphi/art09.htm
ideo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 17

Gentoo, Suse, Win XP
Delphi 2005
BeitragVerfasst: Do 30.06.05 09:20 
Hallo jaenicke,

vielen Dank für die schnelle Hilfe!

Ich denke damit komme ich erst mal weiter...

Viele Grüße

Gunnar