Trying to call a .DLL from Delphi XE (used to work with Delphi 6 :-) )

Hi everyone, 
    I have a problem where perhaps some one could help point me in the right direction.
In Delphi 6 I used a stand alone package to train a neural netowrk,. The trained neural network was stored as a .DEF file. 
The standalone software provided a .DLL and Delphi code to call the network and get the prediced values from your sw. (The .DLL was created in 2002 and apparently is 32 bit.)

I have'nt used it for years but am now coming back to it.... I now use Delphi XE on Windows 7 (32 bit)
The old .exe's I had compiled from that time work fine. 

However in Delphi XE when I try to compile the code below it seems that the call to the .DLL does'nt work
Does anyone have any suggestions. I apologise for the length of this email.

Kind regards,
Adrian



unit ns2delxe;

{$F+,N+}
interface

type
  Pdouble = ^double;

function OpenNet(Path: string; var NetNum, NumInputs,
                 NumOutputs: smallint): smallint; stdcall;
function FireNet(var NetNum: smallint; InAr, OutAr: Pdouble): smallint; stdcall;
function CloseNet(var NetNum: smallint): smallint; stdcall;

implementation

function OpenNet;  external 'NS2-32.DLL';
function FireNet;  external 'NS2-32.DLL';
function CloseNet; external 'NS2-32.DLL';

end.






procedure FireNetFromDelphi2;
var
  PascalPath: string; {name of the definition file in Pascal notation}
  CPath     : Pchar;  {pointer to the name of the definition file in C notation}
  netnum    : smallint; {network number, 2-byte integer}
  inputs    : smallint; {number of inputs, 2-byte integer}
  outputs   : smallint; {number of outputs, 2-byte integer}
  ret       : smallint; {return value of a function, 2-byte integer}
  inarray   : array[0..10] of double; {input array}
  outarray  : array[0..10] of double; {output array}

begin

  {Initialize the definition file name in Pascal notation}
//   Pascalpath := networkpath + networkname;
   Pascalpath := networkname;

  {Allocate space in the memory to store the file name in C notation}
  CPath:=stralloc(Length(PascalPath));

  {Convert file name from Pascal to C notation}
  Cpath:=strpcopy(CPath, PascalPath);

  {Display file name on the form}
  Form1.lblPath.caption:=CPath;

  {Open the definition file calling the function OpenNet.
  Input parameter: pointer CPath to the definition file name in C notation.
  Output parameters: 1. 'netnum': a network number;
                     2. 'inputs': the number of inputs in the network;
                     3. 'outputs': the number of outputs in the network.
  Return value: 0=no error, >0=an error occurred.
  In this case: CPath='saddle.def\0', netnum=0, inputs=2, outputs=1}
  ret:=OpenNet(CPath, netnum, inputs, outputs);
  //showmessage('Ret = ' + IntToStr(ret));
  //showmessage('netnum = ' + IntToStr(netnum));
  //showmessage('inputs = ' + IntToStr(inputs));
  //showmessage('outputs = ' + IntToStr(outputs));
  {Display the number of network inputs/outputs on the form}

   {nonzero ret means file not found or not NS2 def-file}
  if ret<>0 then
    begin
      MessageDlg('File not found: '+PascalPath, mtError, [mbOK], 0);
      showmessage(IntToStr(ret));
      {Quit the program}
      halt;
    end;

  Form1.lblInputs.caption:=IntToStr(inputs);
  Form1.lblOutputs.caption:=IntToStr(outputs);

  {Fill in the input array 'inarray'. The user must allocate and initialize
  himself the input array in his application program. Number of elements
  in the input array must be no less than the number of inputs
  returned by the OpenNet function in the variable 'inputs'.
  Input array is zero-based. In this case there are 2 inputs
  which we are filling in by random numbers.}
  inarray[0]:=random;
  inarray[1]:=random;

  {Fire the net calling the function FireNet.
  Input parameters:
        1. 'netnum': the network number returned by the OpenNet function;
        2. 'inarray': array of inputs for which we want to generate
                      the network predictions;
  Output parameters:
        1. 'outarray': the array which receives the network predictions.
                       The user must allocate enough space in 'outarray'
                       in his application program. The number of elements
                       in the 'outarray' must be no less than the number
                       of outputs, returned by the OpenNet function in
                       the variable 'outputs'.
  Return value: 0=no error, >0=an error occurred.
  The function FireNet takes values from 'inarray', applies the
  network to them and stores the resulting answers in the output array
  'outarray'.}
  ret:=FireNet(netnum, @inarray, @outarray);

  {Display the network predictions. In this case the network has
  the only one output, so the network prediction is in the very
  first element of 'outarray'}
  Form1.lblOutput.caption:=FloatToStr(outarray[0]);

  {Close the network and release the memory occupied by it.}
  ret:=CloseNet(netnum);
end;
0
Adrian
6/1/2012 2:59:05 PM
embarcadero.delphi.general 4258 articles. 0 followers. Follow

2 Replies
2411 Views

Similar Articles

[PageSpeed] 0

Adrian Knowles wrote:

> Hi everyone, 
>     I have a problem where perhaps some one could help point me in
> the right direction.  In Delphi 6 I used a stand alone package to
> train a neural netowrk,. The trained neural network was stored as a
> .DEF file.  The standalone software provided a .DLL and Delphi code
> to call the network and get the prediced values from your sw. (The
> .DLL was created in 2002 and apparently is 32 bit.)
> 
> I have'nt used it for years but am now coming back to it.... I now
> use Delphi XE on Windows 7 (32 bit) The old .exe's I had compiled
> from that time work fine.
> 
> However in Delphi XE when I try to compile the code below it seems
> that the call to the .DLL does'nt work Does anyone have any
> suggestions. I apologise for the length of this email.
> 
> Kind regards,
> Adrian
> 
> 
> 
> unit ns2delxe;
> 
> {$F+,N+}
> interface
> 
> type
>   Pdouble = ^double;
> 
> function OpenNet(Path: string; var NetNum, NumInputs,
>                  NumOutputs: smallint): smallint; stdcall;
> function FireNet(var NetNum: smallint; InAr, OutAr: Pdouble):
> smallint; stdcall; function CloseNet(var NetNum: smallint): smallint;
> stdcall;

You are having a Ansi/Unicode problem here. String is now
Unicodestring, but the DLL expects Ansistring. But just changing all
instances of String to Ansistring in the DLL import unit will not solve
your problem. The old (D6) Ansistring type the DLL expects is not
binary compatible with the XE Ansistring type. The DLL interface is
flawed anyway, since one cannot pass Delphi-specific data types to a
DLL unless exe and dll share the same memory manager.

However, judging from the way the code you posted calls OpenNet the
declaration is simply wrong to start with. It should be

function OpenNet(Path: PAnsichar; var NetNum, NumInputs,   NumOutputs:
smallint): smallint; stdcall;

To call that function you do not need to mess around with StrAlloc and
StrPCopy etc. (even in D6, by the way). Just assemble the path to pass
to the function in a normal String variable. Then pass that using the
following syntax:

   ret:=OpenNet(PAnsichar(Ansistring(PascalPath)), netnum, inputs,
outputs);

This assumes that the function only *reads* the passed string and not
tries to write to the passed memory.


-- 
Peter Below (TeamB)  
Don't be a vampire (http://slash7.com/pages/vampires), 
use the newsgroup archives :
http://codenewsfast.com
http://groups.google.com
0
Peter
6/1/2012 3:23:16 PM
Many many thanks Peter. Have a great weekend.


> {quote:title=Peter Below wrote:}{quote}
> Adrian Knowles wrote:
> 
> > Hi everyone, 
> >     I have a problem where perhaps some one could help point me in
> > the right direction.  In Delphi 6 I used a stand alone package to
> > train a neural netowrk,. The trained neural network was stored as a
> > .DEF file.  The standalone software provided a .DLL and Delphi code
> > to call the network and get the prediced values from your sw. (The
> > .DLL was created in 2002 and apparently is 32 bit.)
> > 
> > I have'nt used it for years but am now coming back to it.... I now
> > use Delphi XE on Windows 7 (32 bit) The old .exe's I had compiled
> > from that time work fine.
> > 
> > However in Delphi XE when I try to compile the code below it seems
> > that the call to the .DLL does'nt work Does anyone have any
> > suggestions. I apologise for the length of this email.
> > 
> > Kind regards,
> > Adrian
> > 
> > 
> > 
> > unit ns2delxe;
> > 
> > {$F+,N+}
> > interface
> > 
> > type
> >   Pdouble = ^double;
> > 
> > function OpenNet(Path: string; var NetNum, NumInputs,
> >                  NumOutputs: smallint): smallint; stdcall;
> > function FireNet(var NetNum: smallint; InAr, OutAr: Pdouble):
> > smallint; stdcall; function CloseNet(var NetNum: smallint): smallint;
> > stdcall;
> 
> You are having a Ansi/Unicode problem here. String is now
> Unicodestring, but the DLL expects Ansistring. But just changing all
> instances of String to Ansistring in the DLL import unit will not solve
> your problem. The old (D6) Ansistring type the DLL expects is not
> binary compatible with the XE Ansistring type. The DLL interface is
> flawed anyway, since one cannot pass Delphi-specific data types to a
> DLL unless exe and dll share the same memory manager.
> 
> However, judging from the way the code you posted calls OpenNet the
> declaration is simply wrong to start with. It should be
> 
> function OpenNet(Path: PAnsichar; var NetNum, NumInputs,   NumOutputs:
> smallint): smallint; stdcall;
> 
> To call that function you do not need to mess around with StrAlloc and
> StrPCopy etc. (even in D6, by the way). Just assemble the path to pass
> to the function in a normal String variable. Then pass that using the
> following syntax:
> 
>    ret:=OpenNet(PAnsichar(Ansistring(PascalPath)), netnum, inputs,
> outputs);
> 
> This assumes that the function only *reads* the passed string and not
> tries to write to the passed memory.
> 
> 
> -- 
> Peter Below (TeamB)  
> Don't be a vampire (http://slash7.com/pages/vampires), 
> use the newsgroup archives :
> http://codenewsfast.com
> http://groups.google.com
0
Adrian
6/1/2012 4:17:47 PM
Reply:

Similar Artilces:

Calling Delphi 6 DLL from Delphi 2010
We have a Delphi 6 dll that has a PChar passed to it. The dll function then does a search and returns a PCHar. This works good using Delphi 6 to call and recieve the dll result. We have upgraded our calling program to Delphi 2010 and most of the time, the value is passed back just fine. However, we do have times when we get an access violation, when calling the dll. The dll does process the request. Below is the code. Has anyone had a similar issue using an older version Delphi Dll with Delphi 2010? I am sure that Unicode has something to do with it, but not sure how to fix th...

Is dll developed in Delphi 6 works on Delphi 2?
I have a one dll, whose work is to creates a form with some normal vcl controls, print selected tables and email some reports. It was developed in Delphi 6. Can any other application which was developed in Delphi 2 use that dll.? If not, please let me know in which areas i need change. The dll work is only to print and email. With regards, Srikanth Varma Srikanth varma wrote: > I have a one dll, whose work is to creates a form with some normal > vcl controls, print selected tables and email some reports. It was > developed in Delphi 6. Can any other application which was developed > in Delphi 2 use that dll.? Delphi 2, really? That version is, what, 15 years out of date... It all depends on the DLL interface, which types of parameters are passed to the DLL, whether it needs to use a shared memory manager with the host exe, or even share packages with the host. If the DLL was build using Windows API compatible parameter types only it should work. -- Peter Below (TeamB) Don't be a vampire (http://slash7.com/pages/vampires), use the newsgroup archives : http://codenewsfast.com http://groups.google.com > It all depends on the DLL interface, which types of parameters are > passed to the DLL, whether it needs to use a shared memory manager with > the host exe, or even share packages with the host. If the DLL was > build using Windows API compatible parameter types only it should work. The dll work is to create a...

delphi Win32 using delphi .NET dll
Hi, I'm trying to use a delphi.NET dll in delphi.WIN32. I am currently using CodeGear Delphi 2007 with version2(base version) of .NET I can get the dll to import into the WIN32 application the only problem is when i include things such as: "using Classes,DateUtils, SysUtils" in the .NET dll the win32 application will instantly hang when any of the dll functions are called. Any help would be great thanks. Also I have tried this example and it also crashes for me? http://cc.embarcadero.com/Item/22688 -Braden I also found this.. "The problem is that, wehn you instal...

Error on Delphi 6 but not on Delphi Xe for Ftp
I am Experimenting with get a file from our webside server via Ftp. I have 2 Machines 1 a laptop runing XP Delphi 6 Indy 10.5.8.0 An a machine runing Window 7 Delphi XE2 with Indy 10.5.8.0. I am using the Same Code on Both. procedure TFrmMain.ProcessItemDalySpecial; var PathDest : String; FileName : String; begin with FrmTb2 do begin if ReadIniBoolean(IniCfg,'FTP','UseFtpDaly') then begin Ftp.Host := ReadIniStr(IniCfg,'FTP','HostDaly'); Ftp.Port := ReadIniInt(IniCfg,'FTP'...

Migrating from Delphi 6 to Delphi XE 3! [Edit]
All, I am a Delphi developer working in an windows form application developed using Delphi 6. Now, we are planning to upgrade the development tool. Can anyone provide me information related to major roadblocks that we can face while migrating from Delphi 6 to Delphi XE 3? Should we migrate to Delphi XE 3 or any other preferred version of Delphi based on the fact that our target users will be using Windows 7 or Windows 8? Do we have any tools or utilities to migrate the source code from Delphi 6 to higher version of Delphi? Also, any suggestions related to best practices are welcome....

Delphi XE / Delphi 2010
Hello! I noticed that Embarcadero® Delphi® 2010 Version is not on the list of products on Embarcadero page. Or is it still possible to buy it? Will RAD Studio XE compile programs written in Delphi 2010 without problems.? Thanks. Am 13.09.2010 09:04, schrieb Petra Nemec: > Will RAD Studio XE compile programs written in Delphi 2010 without problems.? As always you will probably have to recreate the projects as the import is still a bit -- special. Christian Hello! Does anybody know if it is still possible to get a Delphi2010 trial version (if yes where)? ...

from delphi 6 to delphi 2010
Hi. It is possible, with component RX, dxforumlibrary, InfoPower3000Pro, StringAlignGrid. Accepts communication BDE. Thank by comments. excequiel arostica wrote: >Hi. > It is possible, with component RX, dxforumlibrary, >InfoPower3000Pro, StringAlignGrid. Accepts communication BDE. > >Thank by comments. Rx is dead and sources are taken over by jcl/jvcl. I dont know about the rest of the components and i have no experiences with bde over the last 9 years. excequiel arostica wrote: > Hi. > It is possible, with component RX, dxforumlibrary,...

Delphi 5 to Delphi 6 and up
Dear List, Trying to add 7Zip compression support to my delphi application. I am using the ported 7Zip sdk (see their website, they have a link). I am stumped on how to rewrite a single function: function ReverseDecode(var Models: array of SmallInt; ....): ..... where the input is mostly a fixed size array of SmallInt. This code perfectly compiles and functions in Delphi 6 and up, but in Delphi 5 I get the error: There is no overloaded version of 'ReverseDecode' that can be called with these arguments And obviously, the input (fixed) isn't the same as the param definition (dynamic sized). However, my question is just as obvious: How do I rewrite this function so it will behave correctly in Delphi 5? (If this is even possible) I hope I don't have to overload it to something like: function ReverseDecode(var Models: array[0..xxx] of SmallInt....... Thanks in advance for any assistance, Rory Rory Slegtenhorst wrote: > Dear List, > > Trying to add 7Zip compression support to my delphi application. > I am using the ported 7Zip sdk (see their website, they have a link). > > I am stumped on how to rewrite a single function: > > function ReverseDecode(var Models: array of SmallInt; ....): ..... > > where the input is mostly a fixed size array of SmallInt. > This code perfectly compiles and functions in Delphi 6 and up, but in > Delphi 5 I get the error: There is no overloaded version...

Delphi 7 to Delphi XE
Have been using Delphi 7 for many moons ( have got later versions but never upgraded to ) My first problem is: Component Palette. in XE it is a small toolbar docked in top right in Delphi 7 it gives a large view of all the components. I am struggling to be able to cope/access my components.in Delphi XE. Can I make the component pallette tool bar the same size as Delphi 7, or is there a fast way to view/choose all available components in XE, that I have not spotted yet? Kind Regards, Robert. Hi, What I know is that in Delphi 2010 and XE you can choose between t...

MOVED: Use Delphi XE TLB importer in Delphi 2007?
....to the ActiveX group: https://forums.embarcadero.com/thread.jspa?threadID=47170 -- Craig Stuntz · Vertex Systems Corp. · Columbus, OH Delphi/InterBase Weblog : http://blogs.teamb.com/craigstuntz/ ...

dll fails when compiled with delphi 2010, but works with delphi 7
I may be doing good if someone can just point me to the right forum I have not created a dll for some time and have not written one with 2010 before. The dll I am creating will be called as a cfx function by either a ColdFusion or BlueDragon webserver. I have written cfx DLLs in the past. The function declaration is below, it is the standard declaration from ColdFusion or Bluegradon documention on creating a CFX. procedure ProcessTagRequest(Request: TCFXRequest); export; cdecl; Since this was the first time using 2010 I wrote a very basic function to build off that was not much mor...

Need help to allow a working Delphi 3 project to build on Delphi XE
How do I adjust this working Delphi 3 program that uses OLEAUTO and OLE2 to work on the newer Delphi XE, Program code is below this, errors are here : Checking project dependencies... Compiling admn_api.dproj (Debug, Win32) dcc command line for "admn_api.dpr" c:\program files (x86)\embarcadero\rad studio\8.0\bin\dcc32.exe -$O- -$W+ --no-config -M -Q -AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE; DbiProcs=BDE;DbiErrs=BDE -DDEBUG -I"c:\program files (x86)\embarcadero\rad studio\8.0\lib\Win32\release";"C:\Users\Administrator\Documents\RAD Studio...

Delphi and Delphi for .Net
It seems that Delphi for .Net is slower than Delphi Win32 native applicaiton. I would like to know is it true all .Net application is slower than Win32 native applicaiton or it is Delphi for .Net only. Your information is great appreciated, Inung On 2011-06-21 18:20:17 +0100, Inung Huang said: > It seems that Delphi for .Net is slower than Delphi Win32 native applicaiton. > I would like to know is it true all .Net application is slower than > Win32 native applicaiton or it is Delphi for .Net only. If you are only running the code in the application once then, yes, yo...

Using Delphi 7 and Delphi 2010
I had a project in Delphi 7. I worked on it in Delphi 2010. When I try to open the .dpr again in Delphi 7, the IDE toolbar widens across both monitors, and Delphi 7 locks up. It appears that Delphi 2010 modifies the .dpr in a way that makes Delphi 7 unable to open it again. All my forms & units appear to open fine in D7 after D2010, except for the warnings on the ExplicitHeight and ExplicitWidth properties being missing... I can easily recreate the .dpr, but is this expected behavior? Thanks. Tom Field wrote: > I had a project in Delphi 7. > > I worked o...

Delphi 5 to Delphi 6 conversion
Hi We are moving our product from D5 to D6. I have dealt with all the deprecated functions. However, we are getting various platform specifc warnings. These include: Symbol 'FileGetAttr' is specific to a platform Symbol 'FileSetAttr' is specific to a platform Symbol 'faReadOnly' is specific to a platform We want this conversion to be carried out correctly. We don't view the simple solution of switching off those warnings or symbols as being the correct way. What we want is the same platform independence as other functions. For example, all o...

Migrate from Delphi 2007 for Win32 to Delphi XE
we use Delphi 2007 for Win32 to support legacy (32Bit) OWL-based pascal applications (yes i know it was a mistake not to switch to VCL 15 years ago). could our applications still be opened and compiled with Delphi XE? The existing projects are all plain Pascal-Code, coming back from the times of Turbo Pascal for Windows and later on Borland Pascal. Are there any improvements we could profit from (i.e IDE, Debugger)? Thanks Andrej > {quote:title=Andrej Dimic wrote:}{quote} > could our applications still be opened and compiled with Delphi XE? I'm not sure, but I guess ...

Migrating to Delphi XE from Delphi 7.0
Below is my code in Delphi 7.0, this is how to call another units in webmodule... Hello All, I create a web application in Delphi 7.0, using the Web Server Application, CGI, IntraWeb 7.0.15. And I used TIWPageProducer to view like this url "http://localhost/mcr/mcr.exe/main". I built and run. I viewed in thru IIS and it is running... This is my code in Delphi 7.0 .... .... procedure TWebModule1.proMainGetForm(ASender: TIWPageProducer; AWebApplication: TIWApplication; var VForm: TIWPageForm); begin VForm := TfrmMain.Create(AWebApplication); end; procedure TWebModule1....

ShareMem Delphi 6 --> Delphi 2009
I have just upgraded from Delphi 6 to Delphi 2009. My software uses about 20 files, plus literally dozens more plug-ins. Every project has ShareMem as its first unit and borlndmm.dll is distributed with the software. I am aware that the Borland Memory Manager was replaced to use FastMM quite some time ago. Will I have to rebuild every EXE and DLL in DElphi 2009 that uses ShareMem, or will supplying the new borlndmm.dll be enough? i.e. I would like to just update the main application EXEs and DLLs, but leave the plug-ins alone. Will this work? Thanks, Jason. -- Jason Sweby ...

Delphi 6 and Delphi 2010 Install same machine
I'm currently still on Delphi 6 for some legacy software, but I'm looking at installing Delphi 2010 on my Windows XP machine. Are there any known issues with installing D2010 on an XP machine that already has Delphi 6 installed? (I'm not talking about updating the projects code/controls/etc, just running the IDE's). > I'm currently still on Delphi 6 for some legacy software, but I'm > looking at installing Delphi 2010 on my Windows XP machine. > > Are there any known issues with installing D2010 on an XP machine that > already has Delphi 6 i...

Why does this work fine in Delphi 2009, but not in Delphi 2010
I've been racking my head trying to figure this out and can't understand what is wrong, TFileStream.ReadComponentRes fails when I try to read a component containing a record, it works fine in Delphi 2009 and Delphi 2007, but fails with Delphi 2010 Here is the unit source and DFM *+//UnitSource+* unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TThresholdMode = (tm0,tm1,tm2,tm3,tm4,tm5); TThreshold = Record Mode:TThresholdMode; Filter,Start,Stop:Integer; end; TTextOffset = record Left, Top : Integer; Angle : Double; bAbsolute, Outline : Boolean; end; TMyObject = class( TGraphicControl ) private FThreshold:TThreshold; FTextOffset:TTextOffset; procedure ReadTextOffset(Reader: TReader); procedure ReadThreshold(Reader: TReader); procedure WriteTextOffset(Writer: TWriter); procedure WriteThreshold(Writer: TWriter); { Private declarations } protected procedure DefineProperties(Filer: TFiler); override; published property Threshold:TThreshold read FThreshold write FThreshold; property TextOffset:TTextOffset read FTextOffset write FTextOffset; end; TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button2Click(Send...

Language like Delphi 6 or Delphi 7
Hi I like to make application what will connect to web services(SOAP or REST) and send data to server via HTTPS. I have previous experience with Delphi 6 and Delphi 7.I know that language in Delphi 2009 is changed. Which is the last Delhi(Delphi 2005, Delphi 2009) what have the languages like Delphi 6 or Delphi 7. Additional ,which edition(home,professional ,architect) I should use if i like to achieve my task? Pero perov wrote: > I know that language in Delphi 2009 is changed. That is not true. > Which is the last Delhi(Delphi 2005, Delphi 2009) what > have the lan...

ShareMem Delphi 6 --> Delphi 2009
I have just upgraded from Delphi 6 to Delphi 2009. My software uses about 20 files, plus literally dozens more plug-ins. Every project has ShareMem as its first unit and borlndmm.dll is distributed with the software. I am aware that the Borland Memory Manager was replaced to use FastMM quite some time ago. Will I have to rebuild every EXE and DLL in DElphi 2009 that uses ShareMem, or will supplying the new borlndmm.dll be enough? i.e. I would like to just update the main application EXEs and DLLs, but leave the plug-ins alone. Will this work? Thanks, Jason. -- Jason Sweby So...

Migrating to Delphi XE from Delphi 7.0
Below is my code in Delphi 7.0, this is how to call another units in webmodule... Hello All, I create a web application in Delphi 7.0, using the Web Server Application, CGI, IntraWeb 7.0.15. And I used TIWPageProducer to view like this url "http://localhost/mcr/mcr.exe/main". I built and run. I viewed in thru IIS and it is running... This is my code in Delphi 7.0 .... .... procedure TWebModule1.proMainGetForm(ASender: TIWPageProducer; AWebApplication: TIWApplication; var VForm: TIWPageForm); begin VForm := TfrmMain.Create(AWebApplication); end; procedure TWebModule1.proLogInGetForm(ASender: TIWPageProducer; AWebApplication: TIWApplication; var VForm: TIWPageForm); begin VForm := TfrmLogIn.Create(AWebApplication); end; ..... .... Now I Upgrade to Delphi XE.... Below is my Code in Delphi XE and There is no IWTPageProducer instead I used TPageProducer... {*************************************************} unit uWebModule; interface uses SysUtils, Classes, HTTPApp, HTTPProd, SOAPHTTPDisp, WebBrokerSOAP, IWAppForm, IWApplication; type TfrmWebModule = class(TWebModule) PageProducer1: TPageProducer; . . . private public end; var WebModuleClass: TComponentClass = TfrmWebModule; AWebApplication: TIWApplication; implementation uses uMain; {$R *.dfm} procedure TfrmWebModule.frmWebModuleactMainAction(Sender: TObject; Request: TWebRequest; Response: TWebRes...

ShareMem Delphi 6 --> Delphi 2009
I have just upgraded from Delphi 6 to Delphi 2009. My software uses about 20 files, plus literally dozens more plug-ins. Every project has ShareMem as its first unit and borlndmm.dll is distributed with the software. I am aware that the Borland Memory Manager was replaced to use FastMM quite some time ago. Will I have to rebuild every EXE and DLL in DElphi 2009 that uses ShareMem, or will supplying the new borlndmm.dll be enough? i.e. I would like to just update the main application EXEs and DLLs, but leave the plug-ins alone. Will this work? Thanks, Jason. -- Jason Sweby ...