Gary4
asked on
Com+ Create compile error
Hi,
I have a COM+ component that was written in VB6.
I am trying to use it in Delphi 6, however when I compile I get the error "Not enough actual parameters" on this line:
oMailer := TMail.Create;
The constructor that was imputed from the object's type library looks like this:
constructor TMail.Create(AOwner: Component);
begin
inherited Create(AOwner);
{$IFDEF LIVE_SERVER_AT_DESIGN_TIME }
FProps := TMailProperties.Create(Sel f);
{$ENDIF}
end;
Now I know that the constructor needs a parameter and I haven't provided one but I have know2 idea what to pass as a parameter. I have tried a couple of things and each gives some sort of error in the compile.
Any suggestions?
Do you need more information?
I know this is probably an easy question but I need help ASAP.
Gary
I have a COM+ component that was written in VB6.
I am trying to use it in Delphi 6, however when I compile I get the error "Not enough actual parameters" on this line:
oMailer := TMail.Create;
The constructor that was imputed from the object's type library looks like this:
constructor TMail.Create(AOwner: Component);
begin
inherited Create(AOwner);
{$IFDEF LIVE_SERVER_AT_DESIGN_TIME
FProps := TMailProperties.Create(Sel
{$ENDIF}
end;
Now I know that the constructor needs a parameter and I haven't provided one but I have know2 idea what to pass as a parameter. I have tried a couple of things and each gives some sort of error in the compile.
Any suggestions?
Do you need more information?
I know this is probably an easy question but I need help ASAP.
Gary
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
It's difficult to say something without the actual code and definitions. What is '_mail'? What is the 'oMailer' type? Where does that error appear - at the same line? And when - compiling or executing?
Ehm, could this be a class name conflict? I've had similar issues once where I had two units that both declared a class with the same name. And while I expected that I used the correct class, I actually got the wrong one every time. Took me two days to solve the problem!
And the solution is simple. If you have two units with the same class names, use the unit as prefix for the class name. Thus:
oMailer := MailUnit.TMail.Create;
Assuming your class is defined in unit MailUnit...
And the solution is simple. If you have two units with the same class names, use the unit as prefix for the class name. Thus:
oMailer := MailUnit.TMail.Create;
Assuming your class is defined in unit MailUnit...
ASKER
Hi,
Sorry for taking so long to get back. Putting nil in my test case worked.
However, now I'm getting other errors when setting properties and I'm noticing some warnings in the type library that Delphi created when it imported the VB Dll.
Should I open another thread to resolve these issues?
Gary
Sorry for taking so long to get back. Putting nil in my test case worked.
However, now I'm getting other errors when setting properties and I'm noticing some warnings in the type library that Delphi created when it imported the VB Dll.
Should I open another thread to resolve these issues?
Gary
I think so. One question per thread is a rule here. When you give your next question a proper title other experts will join also. And I'm afraid I wont be of much help going deeper in COM. On the other hand Workshop_Alex might help you here. Wait one more day at least before closing this thread.
Regards, Geo
Regards, Geo
ASKER
Now it gives the error message "Incompatible types: '_mail' and 'TMail'"
Now what?
Maybe I should mention that I'm quite new to Delphi. Been a long time VB programmer and have done Pascal prior to Object Pascal. Never done C++ so low-level COM things are new to me also.