?
Solved

registry problem

Posted on 1998-08-03
15
Medium Priority
?
230 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 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

New benefit for Premium Members - Upgrade now!

Ready to get started with anonymous questions today? It's easy! Learn more.

Question has a verified solution.

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

Introduction The parallel port is a very commonly known port, it was widely used to connect a printer to the PC, if you look at the back of your computer, for those who don't have newer computers, there will be a port with 25 pins and a small print…
Introduction I have seen many questions in this Delphi topic area where queries in threads are needed or suggested. I know bumped into a similar need. This article will address some of the concepts when dealing with a multithreaded delphi database…
Sometimes it takes a new vantage point, apart from our everyday security practices, to truly see our Active Directory (AD) vulnerabilities. We get used to implementing the same techniques and checking the same areas for a breach. This pattern can re…
In this video, Percona Solution Engineer Dimitri Vanoverbeke discusses why you want to use at least three nodes in a database cluster. To discuss how Percona Consulting can help with your design and architecture needs for your database and infras…
Suggested Courses
Course of the Month10 days, 18 hours left to enroll

770 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