[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now

x
?
Solved

registry problem

Posted on 1998-08-03
15
Medium Priority
?
251 Views
Last Modified: 2010-04-04
May i know how to register the ocx and dll used for the POP and SMTP component from Delphi 3 and NetManage ActiveX.
Are they (the component, POP and SMTP) work in winsock 2? If yes, may I know how to register them as well. thank you.
0
Comment
Question by:smile_tbw
  • 7
  • 5
  • 3
15 Comments
 
LVL 3

Expert Comment

by:Matvey
ID: 1359573
Doesn't resrv32 works?
0
 
LVL 3

Expert Comment

by:Matvey
ID: 1359574
Regsvr32.exe I mean...
0
 
LVL 4

Accepted Solution

by:
BoRiS earned 140 total points
ID: 1359575
smile_tbw

You need to register the ocx in the background for the app to work...maybe on the FormCreate procedure...

use the Regsrv32.exe file with winexec or shellexecute
the usage is like this...
   
regsvr32 [/u] [/s] <DLLname or OCXname>
                            /u - if you want to unregister COMponent
                            /s - no message (silent) //use this param for behind the scenes...

As far as I know there is no problem with winsock 2 and to register the ocx for that use the same command...
0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 

Author Comment

by:smile_tbw
ID: 1359576
I used the install shield provided by delphi 3.0 instalation CD. It should automatically register all the DLL and OCX, right?
I have included NMSCKN.DLL, NMOCOD.DLL, NMORENU.DLL, POPCT.OCX, SMTPCT.OCX and WINSCK.OCX. Is this correct? I have checked from the help file that only these files are neccessary but I will appreciate your help to indicate that any files are missing.

Thank you
0
 
LVL 4

Expert Comment

by:BoRiS
ID: 1359577
smile_tbw

The install shield will handle the ocx's and dll's, and as far as I can see all the files you have listed are the ones you need...

Later
BoRiS
0
 

Author Comment

by:smile_tbw
ID: 1359578
yes....well but it don't work. Any suggestion?
0
 

Author Comment

by:smile_tbw
ID: 1359579
for your information, it run well in the computer with delphi 3 that i used. BUT after Winsock 2 (from Microsoft) installed, it will through some exception and not working at all. It seems that the dll and ocx is not well compatible with winsock 2.
0
 

Author Comment

by:smile_tbw
ID: 1359580
The error message popup is 'Unexpected Error' during the POP.Authenticate method. Any idea?
0
 

Author Comment

by:smile_tbw
ID: 1359581
sorry, it is not POP.Authenticate, it is during the SendDoc() method.
0
 
LVL 4

Expert Comment

by:BoRiS
ID: 1359582
smile_tbw

which meathod of senddoc are using http, ftp etc..

post the code snippet of the senddoc method and lets see...

Later
BoRiS
0
 

Author Comment

by:smile_tbw
ID: 1359583
here we go.......

function NoParam: Variant;
begin
  TVarData(Result).VType := varError;
  TVarData(Result).VError := DISP_E_PARAMNOTFOUND;
end;

procedure TForm1.SendTimerTimer(Sender: TObject);
begin
  SendTimer.Interval := DisableTimer;
  if (SMTP2.State = prcConnected)and(SMTP2.ProtocolState = smtpTransaction) then
  begin
mSend1.Lines.Add('Protocol state in sendtimer = '+IntToStr(SMTP2.ProtocolState));
    try
      SMTP2.Quit;
    except
      SendTimer.Interval := EnableTimer;
    end
  end
  else
  if SMTP2.State = prcDisconnected then
    begin
      SMTPError := False;
      SendCycle := SendCycle + 1;
      Label28.Caption := 'Count = ' + IntToStr(SendCycle);
      mSend1.Lines.Add('Count = ' + IntToStr(SendCycle));
      SMTP2.Connect(NoParam, NoParam);
   end;
end;

procedure TForm1.SMTP2StateChanged(Sender: TObject; State: Smallint);
begin
  case State of
    prcConnecting:
      begin
        StatusBar7.SimpleText := 'Connecting to SMTP server: ' +
                                                         SMTP2.RemoteHost+'...';
        mSend1.Lines.Add(StatusBar7.SimpleText)
      end;
    prcResolvingHost:
      begin
        StatusBar7.SimpleText := 'Resolving Host';
        mSend1.Lines.Add(StatusBar7.SimpleText)
      end;
    prcHostResolved:
      begin
        StatusBar7.SimpleText := 'Host Resolved';
        mSend1.Lines.Add(StatusBar7.SimpleText)
      end;
    prcConnected:
      begin
        StatusBar7.SimpleText := 'Connected to SMTP server: ' +SMTP2.RemoteHost;
        mSend1.Lines.Add(StatusBar7.SimpleText);
      end;
    prcDisconnecting:
      begin
        StatusBar7.SimpleText := 'Disconnecting from SMTP server: ' +
                                                         SMTP2.RemoteHost+'...';
        mSend1.Lines.Add(StatusBar7.SimpleText)
      end;
    prcDisconnected:
      begin
        StatusBar7.SimpleText := 'Disconnected from SMTP server: ' +
                                                               SMTP2.RemoteHost;
        mSend1.Lines.Add(StatusBar7.SimpleText);
        if SendASAP.Checked then
          SendTimer.Interval := EnableTimer // enable Sending timer
        else
          SendTimer.Interval := (UDSendCycleMin.Position*60 +
                                                  UDSendCycleSec.Position)*1000;
        lEmailSentOn.Caption := 'Last Email Sent On ' +
                                                  DateTimeToStr(LatestSentStamp)
      end;
   end;
end;

procedure TForm1.SMTP2DocInput(Sender: TObject; const DocInput: DocInput);
begin
  case DocInput.State of
    icDocBegin:
      begin
        StatusBar7.SimpleText := 'Initiating document transfer';
        mSend1.Lines.Add(StatusBar7.SimpleText)
      end;
    icDocHeaders:
      begin
        StatusBar7.SimpleText := 'Sending headers';
        mSend1.Lines.Add(StatusBar7.SimpleText)
      end;
    icDocData:
      begin
        if DocInput.BytesTotal > 0 then
          StatusBar7.SimpleText := Format('Sending data: %d of %d bytes (%d%%)',
                  [Trunc(DocInput.BytesTransferred), Trunc(DocInput.BytesTotal),
                      Trunc(DocInput.BytesTransferred/DocInput.BytesTotal*100)])
        else
          StatusBar7.SimpleText := 'Sending...';
        mSend1.Lines.Add(StatusBar7.SimpleText)
      end;
    icDocEnd:
      begin
        if SMTPError then
          StatusBar7.SimpleText := 'Transfer aborted'
        else
          StatusBar7.SimpleText := Format('Mail sent to %s (%d bytes data)',
            [EmailA[CLogin, ElecAccountPos], Trunc(DocInput.BytesTransferred)]);
        mSend1.Lines.Add(StatusBar7.SimpleText);
        QuitSend.Interval := EnableTimer;
      end;
  end;
  StatusBar7.Update;
end;

procedure TForm1.SMTP2Error(Sender: TObject; Number: Smallint;
  var Description: WideString; Scode: Integer; const Source,
  HelpFile: WideString; HelpContext: Integer; var CancelDisplay: WordBool);
var
  ErrorStr: string;
begin
  SMTPError := True;
  CancelDisplay := True;
  {Get extended error information}
  mSend1.Lines.Add(Format('%d - %s%s',[Number,Description,Trim(ErrorStr)]));
  SMTP2.Cancel;
end;

procedure TForm1.SMTP2ProtocolStateChanged(Sender: TObject;
  ProtocolState: Smallint);
begin
  case ProtocolState of
  smtpTransaction:
    begin
      CreateHeaders;
      with SMTP2 do
        SendDoc(NoParam, DocInput.Headers, '', '', '');
    end;
  end;
end;

procedure TForm1.QuitSendTimer(Sender: TObject);
begin
  QuitSend.Interval := DisableTimer;
mSend1.Lines.Add('Protocol state = ' + IntToStr(SMTP2.Protocolstate));
  try
    SMTP2.Quit;
  except
    QuitSend.Interval := EnableTimer;
  end;
mSend1.Lines.Add('QuitSend out');  //************************************
end;

0
 
LVL 4

Expert Comment

by:BoRiS
ID: 1359584
smile_tbw

Is there a reason that the SendDoc() meathod is passed in the ...

procedure TForm1.SMTP2ProtocolStateChanged(Sender: TObject;
         ProtocolState: Smallint);

The SendDoc() meathod you have seems to need a filename example...

procedure TMainForm.SendFile(Filename: string);
begin
  CreateHeaders;
  with SMTP1 do
  begin
    DocInput.Filename := FileName;
    SendDoc(NoParam, DocInput.Headers, NoParam, DocInput.FileName, '');
  end;

Later
BoRiS
0
 

Author Comment

by:smile_tbw
ID: 1359585
but i have no attach file at all. so, do i need to pass a null pointer to the FileName or just DocInput.Filename := '' will do?
0
 
LVL 4

Expert Comment

by:BoRiS
ID: 1359586
smile_tbw

If you aren't attachng a file the try this and see if it works

SendDoc(NoParam, DocInput.Headers, mSend1.Text, '', '');

Later
BoRiS
0
 
LVL 3

Expert Comment

by:Matvey
ID: 1359587
See if lines in the setup script file (.ini, .inf, .ins...) include lines like "registerdll" or "registerOCX" I don't remember what exactly, but you'll see if you look at it. These lines work like regsvr32 when the installation runs.
0

Featured Post

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Objective: - This article will help user in how to convert their numeric value become words. How to use 1. You can copy this code in your Unit as function 2. than you can perform your function by type this code The Code   (CODE) The Im…
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…
This video shows how to quickly and easily deploy an email signature for all users in Office 365 and prevent it from being added to replies and forwards. (the resulting signature is applied on the server level in Exchange Online) The email signat…
We’ve all felt that sense of false security before—locking down external access to a database or component and feeling like we’ve done all we need to do to secure company data. But that feeling is fleeting. Attacks these days can happen in many w…
Suggested Courses
Course of the Month18 days, 22 hours left to enroll

834 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