Solved

EOleSysError, Class not registered

Posted on 1998-11-06
34
5,550 Views
Last Modified: 2008-03-03
Why do I get EOleSysError class not registered error when I run my program on another compuater?  Am I missing a file or something? My delphi program is a *.exe file.  Does this have something to do with variant type variables or something? HELP HELP HELP!!
0
Comment
Question by:waipahu
  • 12
  • 11
  • 5
  • +4
34 Comments
 
LVL 2

Expert Comment

by:Thaddy
Comment Utility
It means that a com class that you have on your computer and reference in your application is not present on the other computer, at least not registered on the other computer.
You have to register the missing class
example:
if you refer to 'word.application', but the machine does not have msword installed you get the error
0
 
LVL 4

Expert Comment

by:dwwang
Comment Utility
Have you used some OCX/TLB in your Delphi program?
If you used, you must register them in the computer running the program.
0
 
LVL 8

Expert Comment

by:ZifNab
Comment Utility
Do you use the standard internet components of delphi? Do you use pinaple graph,...?
0
 

Author Comment

by:waipahu
Comment Utility
THank you so much for responding!!!
But it gives me on some idea of what's happening.
I think this might help you.
It is an email program.  I found out that the SIMPMAIL program that comes
with Delphi demo program, has the same EOleSysError, class not registered.
How do I pin point the error?????
I notice that at my work computer i have delphi on that and it works and so
does my computer at home with delphi. but when i try it on a computer without
delphi I get the error.

Does that make any sense?
thanks so much!


0
 
LVL 2

Expert Comment

by:Thaddy
Comment Utility
Check if internet explorer4/outlook express or another SMTP server is installed on the computer!
From what I understand there's no SMTP protocol/server installed on the computer and that's necessary in this case
0
 

Author Comment

by:waipahu
Comment Utility
Every computer in the office is the same configuration. We all the Microns and they are hooked up to our LAN.  So every PC is configured the same.
So why would my program work on my PC and not the other one?  Does delphi
put something on my computer that is not on another PC that don't have delphi?
All PCs are connected to email.  I also logged on another computer and tried my program and it failed with the same EOleSysError.

Hope that helps
thanks

0
 
LVL 8

Expert Comment

by:ZifNab
Comment Utility
Thaddy, why don't you first give comments?

Waipahu,

 Ok, you use the simpmail demo program of delphi.

 This program probably use the internet components of delphi... And yes they need OCX, to work! Which Delphi version are you using? D3?

for D3 :

--------------



       Here is what you've to do (see also in the help of these components) :

       To install your package with support for NetManage ActiveX controls on a target system, follow the procedures below.

       Step1. Search for previously installed versions.

       Your installation process should search for previous versions of the controls on the target machine. The purpose of this is to verify that the
       software you are installing is the latest.
       The NetManage and Microsoft files should be found in the Windows system directory of the target machine. For Windows 95, this directory
       would be %windir%\system. For Windows NT, this directory would be %windir%\system32.
       You can use Microsoft’s VerFindFile() function to determine if the ActiveX files exist on the target machine.

       If files are found, go on to Step 2; otherwise, go to Step 3.

       Step 2. Compare file versions

       If step 1 found some of the NetManage files to installed already on the target machine, you will need to check the version of both the files you
       are installing and the files already on the machine. We suggest you replace the files on the target machine if the files you are installing are newer.
       Microsoft’s VerInstallFile() function can be used to install files based on the version information. This function checks the file version and can
       also install the file.

       If the files on the target machine are older, go to Step 3; otherwise, go to Step 4.

       Step 3. Install files

       As described in Step 1, the NetManage redistributable files should be installed in the Windows system directory.

       Step 4. Registration

       You must register the common DLL for the ActiveX controls. After this file is registered, you may register some or all of the controls, depending
       on your applications requirements.
       To register these controls, run the following commands from your installer.

       REGSVR32 /s NMOCOD.DLL
       REGSVR32 /s FTPCT.OCX
       REGSVR32 /s HTML.OCX
       REGSVR32 /s HTTPCT.OCX
       REGSVR32 /s HTTPSR.OCX
       REGSVR32 /s INETCT.OCX
       REGSVR32 /s INETSR.OCX
       REGSVR32 /s MIME.OCX
       REGSVR32 /s NNTPCT.OCX
       REGSVR32 /s POPCT.OCX
       REGSVR32 /s SMTPCT.OCX
       REGSVR32 /s WCGI.OCX
       REGSVR32 /s WINSCK.OCX

       You must run REGSVR32 on NMOCOD.DLL before you register any other OCX. You need not register more OCXs than those used in your
       control. For example, if you only used FTPCT.OCX, you only need to register NMOCOD.DLL and FTPCT.OCX.

-----------



 If you want to avoid using OCX, then use F.Piette's internet components, I use them too. They don't need any OCX, dll to use and are even easier then these :

http://www.rtfm.be/fpiette/indexuk.htm

Regards, Zif.
0
 
LVL 8

Expert Comment

by:ZifNab
Comment Utility
waipahu, and? Results?

your program works on pc's with delphi, because these ocx are installed when delphi is installed.

Zif.
0
 
LVL 4

Expert Comment

by:BoRiS
Comment Utility
waipahu

Yip ZifNab Said it !!! :-) he is totally correct you need to register the ocx's and dll's on the machines your app is going to be installed on, you can do it with install shield or in your application before it starts.

Just to mention that the  /s in REGSVR32 is silent mode(in the background) another param is /u to unregister the ocx or dll...

Later
BoRiS
0
 

Author Comment

by:waipahu
Comment Utility
I am a beginner. THanks for your help.
How do i use INSTALL Shield??????
Do you have example could? is it included with Delphi 3 professional? that's the version
i have.  I am upset with not being able to make my email application work on other PCs. My objective is to put my email application on the fileserver so everybody can access it. any idea?????  also i visited that website http://www.rtfm.be/fpiette/indexuk.htm
i tried that email program but it had some kind of error.
help....
I want the easiest way to install my application. I hate this OCX and dll stuff.
is there a good way in install my program????
thanks so much all that responded!!!


0
 

Author Comment

by:waipahu
Comment Utility
How do you know what OCX files you need in your program? I have no clue.
Is there a way to find out what ocx is required by my program???
HELP.....
Thanks

0
 
LVL 2

Expert Comment

by:SupWang
Comment Utility
Do you use the components on the ActiveX page? They are all the OCX components.

If a form in your delphi project had using the OCX components, It will have the OleCtrls declared in its unit uses section, maybe the OCX components declared is follow the OleCtrls declared.

0
 
LVL 2

Expert Comment

by:SupWang
Comment Utility
What's the components?
0
 
LVL 2

Expert Comment

by:SupWang
Comment Utility

hi, waipahu

Maybe the following is the easiest way to install the troublesome OCX.
You can use the MS Visual Basic 5 or Visual Basic 6 to make a empty project, include the control in it, make a setup program (use the VB setup wizard) , and then run this setup on the other computer to install the control. if your Visual Basic not have that OCX, please import it.

Regards,
SupWang

0
 

Author Comment

by:waipahu
Comment Utility
THanks again.
I use the SMTP componet..the one with the picture of the envelope.
It is an email program.
It is just a simple email program.  How do i correct the problem?
I can't run it on another program. Is it always this difficult to install applications
on other computers? And I dont have visual basic and i dont know how to use visual basic.

HELP HELP HELP.
Here is my program below, some stuff have been "xxxx" out:
Do I need .ocx files given what u see below???? why do i get the eolesyserror?

------------------------------------------
unit valuepgm;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls, OleCtrls, isp3, ComCtrls, Db, DBTables, DBCtrls;

type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    CheckBox3: TCheckBox;
    CheckBox4: TCheckBox;
    CheckBox5: TCheckBox;
    CheckBox6: TCheckBox;
    CheckBox7: TCheckBox;
    MahaloNET: TStaticText;
    Button1: TButton;
    StaticText1: TStaticText;
    StaticText2: TStaticText;
    Bevel1: TBevel;
    Bevel2: TBevel;
    StaticText3: TStaticText;
    StaticText4: TStaticText;
    StaticText5: TStaticText;
    Bevel3: TBevel;
    Bevel4: TBevel;
    Memo1: TMemo;
    StaticText6: TStaticText;
    StaticText7: TStaticText;
    DateTimePicker1: TDateTimePicker;
    SMTP1: TSMTP;
    ComboBox2: TComboBox;
    ComboBox1: TComboBox;
    StaticText8: TStaticText;
    Edit1: TEdit;
    SMTPstatus: TStatusBar;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure SMTP1StateChanged(Sender: TObject; State: Smallint);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
  NoParam: variant;
  email: string;
  values: string;
  strFormat, strProgName: String;
  begin
  {append values checked to email}
  if CheckBox1.Checked then   {Trust}
     values := values + 'Trust' + #13;
  if CheckBox2.Checked then   {Learning}
     values := values + 'Learning' + #13;
  if CheckBox3.Checked then   {Respect}
     values := values + 'Respect' + #13;
  if CheckBox4.Checked then   {Humor}
     values := values + 'Humor' + #13;
  if CheckBox5.Checked then   {Innovation}
     values := values + 'Innnovation' + #13;
  if CheckBox6.Checked then   {Integrity}
     values := values + 'Integrity' + #13;
  if CheckBox7.Checked then   {Commitment}
     values := values + 'Commitment' + #13;

  email :=  ComboBox2.text + ', ' + #13 + #13 + 'VALUES DISPLAYED'+ #13 + '----------------' + #13
            + values + '----------------' + #13 + memo1.text;
  {create document headers}
  strFormat := '%s_%s_%s';
  strProgName := Application.Title;

  with SMTP1 do
     begin
     DocInput.Headers.Add('To', ComboBox2.text);
     DocInput.Headers.Add('From', ComboBox1.text);
     DocInput.Headers.Add('CC', ' ');
     DocInput.Headers.Add('Subject', Edit1.text);
{     DocInput.Headers.Add('Message-Id', Format(strFormat, [strProgName, DateTimeToStr(Now), email]));}
     DocInput.Headers.Add('Message-Id', Format(strFormat, [strProgName, DateTimeToStr(Now), '']));
     if SMTP1.State = prcConnected then begin
     SendDoc(NoParam, DocInput.Headers, email, '', '');
     SMTPstatus.SimpleText := 'Message Sent';
     end;
     end;

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
      ComboBox1.Items.Add('xxxx');
      ComboBox1.Items.Add('xxxx');
      ComboBox1.Items.Add('xxxx');

      if SMTP1.State = prcDisconnected then begin
         SMTP1.Connect('xxx.xxx.x.xx', 'xx');
      end;
end;

procedure TForm1.SMTP1StateChanged(Sender: TObject; State: Smallint);
begin
  case State of
    prcConnecting:
       SMTPstatus.SimpleText := 'Connecting to email server';
    prcResolvingHost:
       SMTPstatus.SimpleText := 'Resolving host';
    prcHostResolved:
       SMTPstatus.SimpleText := 'Host Resolved';
    prcConnected:
       SMTPstatus.SimpleText := 'Connected to email server';
    prcDisconnected:
       SMTPstatus.SimpleText := 'Disconnected from email server';
   end;
end;

end.
0
 
LVL 2

Expert Comment

by:SupWang
Comment Utility
The Visual Basic (5) is similar to the Delphi. I dont know how to use visual basic also. But I still can make a setup disk to install the some OCX. Lets try to do that. That's not very difficulty. The import MenuItem maybe in the Proj MenuItem. I am not sure, becasue I dont have the VB English version.
Please tell me How to download the OCX.
0
 
LVL 8

Expert Comment

by:ZifNab
Comment Utility
waipahu,

read the help-files accompanied with the ActiveX files of standard Delphi components (they say which dll you need to install per component) : It's all in there, the comment I gave you explains how to install them manually. Try them out.

About F.Piette components : they work perfectly and if I can read you well, you don't like ActiveX etc.... so I suggest to use them. F.Piette also has a freeware mailing list in which you can ask q'ns about his components. It is really alive! Lot's of people are on that mailing list.

Regards, Zif.
0
Top 6 Sources for Identifying Threat Actor TTPs

Understanding your enemy is essential. These six sources will help you identify the most popular threat actor tactics, techniques, and procedures (TTPs).

 

Author Comment

by:waipahu
Comment Utility
Thanks again!!!
Hey what if I buy Install Shield Express? will that solve my problems?
Or does Delphi 4 have an option to include ocx files in my exe file so i wouldnt need
to copy ocx files on other computers that i install my program on?
HELP HELP HELP
0
 

Author Comment

by:waipahu
Comment Utility
Ok I am taking a step by step approach now.
1.  I wrote a simple program with a button that says stupid.
     I did a build all and ran it on my other computer and it runs fine.

2. I took the same program and added the SMTP component.
   I didn't write any code, i just placed the component and the form.
   I did a build all.
   I took the .exe file and tried to run it on my other computer and BOOM!!#$@$
   the eolesystem erorr, class not registered error came up.
  SO I IDENTIFIED THE ERROR TO BE WITH THE SMTP internent component.
  WHAT DO I NEED TO DO??????
HELP ME..i have been trying to figure this thing out for days now..
i am tired already
thanks again!!! :) still smiling.

0
 
LVL 2

Expert Comment

by:SupWang
Comment Utility
Have somebody understand the TRegServer supplied with Delphi in its Demos area...  \Demos\ACTIVEX\TREGSVR?

0
 
LVL 4

Expert Comment

by:dwwang
Comment Utility
If you have IinstallShield for Delphi4, things will be easy enough:

Create a new setup project, in the project window, select the "Groups and files" item, then a dialog box will appear.

Select "Insert files", in the FileOpenDialog box just select the OCX you want to register.
Then every thing will be OK, since the by default, InstallShield will register an OCX automatically.

0
 

Author Comment

by:waipahu
Comment Utility
Thanks
I don't have delphi 4.
I am using Delphi 3 Professional.
I dont have installshield, i only have a evaluation copy good for 15 days.

Try it for yourself....just put a button and the SMTP component on your form.
Don't do anything else.
And run it on a computer without Delphi on it.
It won't run.
What are the exact OCX files will I need to include with my program?????
It it's this difficult to deploy an application that will not be too good.

thanks again.

0
 

Author Comment

by:waipahu
Comment Utility
Questions about Piette components:
SMTP...can you check for BUSY or status of connection?
are all the functions the same with Delphi's SMTP?
HElp..i might just have to use Piette's one, to avoid the OCX stuff.
help
thanks
0
 
LVL 2

Expert Comment

by:SupWang
Comment Utility
hi, dwwang
Can I use the InstallShield for Delphi4 to install the Delphi 3 program?
0
 
LVL 2

Expert Comment

by:SupWang
Comment Utility
hi, dwwang
Can I use the InstallShield for Delphi4 to install the Delphi 3 program?
0
 
LVL 2

Expert Comment

by:SupWang
Comment Utility
Sorry send the same comment again.
hi, dwwang
Can you make a test for me? Make a database progarm and use the OCX.

thanks,
SupWang
0
 

Author Comment

by:waipahu
Comment Utility
This is my program, it is real simple.
Works fine on my computer with Delphi, doesn't work on a PC without Dephi:

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    SMTP1: TSMTP;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
  showmessage('this is crazy');
end;

end.

Can anybody tell me how can you tell what other files beside the *.exe file
do I need to go with this program? Do I need .ocx files and if so what files? Do
I need *.dll files? I am lost, i am stuck and almost ready to give up on delphi.
Ahhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh

your help is welcome..
i bought a lot of books and not one of them explains this.
Inprise needs to get better documentation.
HELP
0
 
LVL 3

Expert Comment

by:philipleighs
Comment Utility
OK,

Here's what to do.

You need to copy these files to every computer that will use this program.
SMTPCT.OCX
NMSCKN.DLL

WSOCK32.DLL
WS2_HELP.DLL
WS2_32.DLL

MSVCRT.DLL
MSVCRT40.DLL
MSVCIRT.DLL

These files are in the Windows system directory. Note don't put a NT version of WS2_HELP.DLL or WS2_32.DLL onto a Windows 95 computer, nor vice versa.
If you don't have appropriate versions of these files, you can download them from Microsoft.

Copy the files above into the windows system directory.

Click Start | Run

Type:
regsvr32.exe  c:\windows\system\smtpct.ocx

You will get a message saying:
"DllRegisterServer in c:\windows\system\smtpct.ocx succeeded."

If the message says "LoadLibrary failed GetLastError returned 485" or something like that, it means that either one of the dlls above is missing, or you have an NT version on 95, or a 95 version on NT. To find out where the problem is, right click the file in Windows Explorer and check the version information. It will say if the file is just for NT or just for 95.

Now run your program.

Cheers,
Phil.

0
 
LVL 2

Expert Comment

by:SupWang
Comment Utility
You can access the URL http://www.installshield.com/express, and download the installshield express version. It will solve your problem. Use the installshield express, the OCX can be self-register. Notice: to install the OCX, may require some other program(DLLs). and you may read my question history get more detail, the title is "use the MsComm32.ocx".


Hope that helps.


0
 
LVL 2

Expert Comment

by:SupWang
Comment Utility
hi, waipahu

Can you send an email with the OCX to me? or tell me how to download the OCX. I can make some test for you. My email address is ddc@188.net.
0
 

Author Comment

by:waipahu
Comment Utility
superwang....
create a new application
put the SMTP component on your form...
and tell me what files must be included with your .exe.
that's all i want to know....
only 1 component: SMTP component...


0
 
LVL 8

Expert Comment

by:ZifNab
Comment Utility
waipahu, I don't know what you want, we already told it you dozens of times :

1. this is your code :

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

---> isp3 needs an OCX driver!!!!!!!!!

 read how to install it on the other machine like I already told you!!!
---> look at the help-file of isp to which driver you have to install

With F.Piette's components you don't have to install anything

Please, READ this one carfully!

Zif.
0
 
LVL 2

Accepted Solution

by:
SupWang earned 200 total points
Comment Utility
hi, waipahu

I had made some test for you and I had success registered the OCX.You only need the following files:olepro32.dll, nmsckn.dll, nmorenu.dll, msvcrt40.dll, nmocod.dll, smtpct.ocx. If you use the InstallShield express for delphi4 or InstallShield Express 2.1, you set the olepro32.dll and smtpct.ocx to Self-register. Others not set to Self-register. Also you can use the Regsvr32.exe to register the OCX (copy all the file to target computer <Windir>\system First).

SupWang
0
 
LVL 2

Expert Comment

by:SupWang
Comment Utility
If you want to use the Regsvr32.exe to registering. Copy all the dlls and ocx to the <windir>\system and then run Regsvr32 nmocod.dll and Regsvr32 smtpct.ocx.
0

Featured Post

What Should I Do With This Threat Intelligence?

Are you wondering if you actually need threat intelligence? The answer is yes. We explain the basics for creating useful threat intelligence.

Join & Write a Comment

This article explains how to create forms/units independent of other forms/units object names in a delphi project. Have you ever created a form for user input in a Delphi project and then had the need to have that same form in a other Delphi proj…
Creating an auto free TStringList The TStringList is a basic and frequently used object in Delphi. On many occasions, you may want to create a temporary list, process some items in the list and be done with the list. In such cases, you have to…
It is a freely distributed piece of software for such tasks as photo retouching, image composition and image authoring. It works on many operating systems, in many languages.
Internet Business Fax to Email Made Easy - With eFax Corporate (http://www.enterprise.efax.com), you'll receive a dedicated online fax number, which is used the same way as a typical analog fax number. You'll receive secure faxes in your email, fr…

728 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now