Toon posts:

[COM(+)] - CreateRemote probleem ?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb weer zo'n mooi programma (van onze goede vriend bin ly er bij gepakt ) dat werkt met subscribers en publishers... lokaal werkt het allemaal top. zelfs toen ik de create in create remote veranderde...

maar wanneer ik de client op mijn andere pc zette, kreeg ik de melding: " interface not supported". Terwijl ik de TheBest.dll alwel registerd had op de client...

iemand enig idee ? moet ik soms nog meer bestanden op de client registreren?

hiero de client:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
unit ExecuteFrm;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    ExecuteOrder: TButton;
    Label1: TLabel;
    CustomerID: TEdit;
    Label2: TLabel;
    ProductID: TEdit;
    Label3: TLabel;
    Quantity: TEdit;
    procedure ExecuteOrderClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

uses
  TheBest_TLB;

procedure TForm1.ExecuteOrderClick(Sender: TObject);
var
  Order: IOrder;
begin
  [b]Order := CoOrder.CreateRemote('duxdominus');[/b]
  Order.PlaceOrder (CustomerID.Text, ProductID.Text, StrToInt (Quantity.Text));
end;

end.


Wie helpt mij uit de brand ??

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Even voor de duidelijkheid: Dit zijn COM+ events en geen 'normale' callbacks.

Maar het klinkt alsof je het gewoon goed gedaan hebt. Je hoeft niet de hele server dll te registreren, de losse tlb is genoeg.

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


Verwijderd

Topicstarter
Als ik de .dll niet registeer dan krijg ik een melding.. doe ik dit wel dan blijft ie op de interface nog supported hangen. De tlb alleen is dus geen optie... zit er dan toch een fout in ??

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Dan maak je waarschijnlijk gebruik van nog andere com libraries.
De losse tlb moet genoeg zijn voor CreateRemote. De client hoeft alleen de interface te weten. Niet de implementatie. Die wilde je nou net aan de server kant houden. Weet je wel zeker dat ie niet toevallig op je ontwikkel machine werkt omdat daar een andere versie is geinstalleerd of een andere library

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


Verwijderd

Topicstarter
Kijk aan.. ik ben alweer een stapje verder ( wat je maar een stapje noemt natuurlijk ) ...
ik heb nu maar eens op mijn client pc delphi gezet zodat de boel beter te controleren is.. en daar zie ik tijden het compilen al de volgende fout:

op regel:
TheBest_TLB in '..\Order\TheBest_TLB.pas';

de fout :
[Fatal Error] ExecuteOrder.dpr(16): File not found: 'TheBest_TLB.dcu'

( ook al registeer ik de .tlb of .dll) .. natuurlijk logisch want hij gaat zoeken in ..\order\ maar ik zou zo niet weten hoe ik het oplos...

iemand enige ervaring ??

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Dit probleem heeft niets met COM+ te maken, maar is een gewone compiler fout. Delphi kan simpelweg die unit niet vinden. Het heeft niets te maken met het wel of niet geregistreerd zijn van de tlb of de dll. Open je 'Project Manager' en zorg ervoor dat alle bestanden van je project naar de juiste plaats wijzen.

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


Verwijderd

Topicstarter
Hoe kan ik aangeven dat er niet in '..\Order\TheBest_TLB.pas';gozocht moet worden maar via com+ ??

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Een TLB is wat anders dan een ...._TLB.pas. Een TLB is een bestand van een speciaal formaat die COM(+) gebruikt om in aan te geven welke interfaces er zijn en welke functies zij bevatten. De _TLB.pas krijg je nadat Delphi de TLB vertaald heeft naar voor Delphi begrijpelijke taal zodat je de interfaces kan gebruiken.

COM(+) heeft de TLB nodig, anders krijg je interface not supported. De oplossing daarvoor is de tlb registreren.

Delphi heeft de _TLB.pas nodig voor early binding of wanneer je een com interface implementeerd. Als ie die .pas niet kan vinden moet je zorgen dat de Delphi compiler m wel kan vinden. Dit heeft niets met COM opzich temaken. Je hebt nog niet eens iets gecompileerd!

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


Verwijderd

Topicstarter
Ik heb wel gecompileert.. maar lokaal gaf ie natuurlijk geen enkele fout melding. Daar is alles wel geregistreert en kan ie alles makkelijk vinden.

Verwijderd

Topicstarter
Hey luitjes, vandaag heb ik hetzelfde programma op mijn werk getest onder W2000 en idd ik compile hier alles netjes installeer subscribers, publischers enzovoort en tadaaa het programma werkt. Ik vul gegevens in bij de client en bij de server wordt al het werk verricht. Precies wat ik wil.

Maar ik kom weer vol vreugde thuis en probeer het hier nogmaals.....

En wederom een interface not supported fout ..... ( Grrrrr )

ik draai thuis 2 maal XP ... kan dit het probleem zijn ?? ( Al zie ik wel dat de COM+ Service start op de server ) Is er iets anders wat ik moet instellen? Speciale netwerk instellingen of dergelijken ?

LordHarry misschien een laatste advies? voordat ik weer complete format doe en terug ga naar W2000 ???

JMP


[ het zou er toch niet meer te maken hebben dat je bv een user en pw moet invullen zoals dit ook nodig is als je remote desktop gebruikt ? // dit klinkt vast heel dom.. maar als je zo lang zoekt.. begin je het overal te zoeken ... komt er op neer dat client geen gebruiker is op de server.. maar de COM+ start wel.. dus dat kan het niet zijn zou je toch zeggen ??? 8)7 8)7 8)7 ]
Pagina: 1