Anna Belova wrote: > Hellp Tom, > > Thank you so much! > > Several people have helped by pointing us to using R as a COM server. This > is an exciting functionality, but unfortunately we are afraid we can't use > it in this project. > > I really appreciate your thought and your time.
The solution I suggested was not using R as a COM server, but calling R directly in a thread. If you are using Delphi at all it should work. So, I consider the suggestion to be good. Besides, considering where your mail originates (a corporation), you might consider that I deserve a fee. Do you want a bank account number? Now, that might be difficult, considering that US bank systems are quite primitive by European standards, but nevertheless ... Tom > > Regards, > Anna > ----------------------------------------- > Anna Belova > Abt Associates Inc. > 4800 Montgomery Ln, St 600 > Bethesda, MD-20814 > phone: 301-347-5304 > fax: 301-652-7530 > http://www.abtassociates.com/environment > > > > > Tom Backer > Johnsen > <[EMAIL PROTECTED] To > .no> Anna Belova > <[EMAIL PROTECTED]> > 12/05/2006 12:36 cc > PM r-help@stat.math.ethz.ch > Subject > Re: [R] Calling R functions in > Delphi > > > > > > > > > > > Anna Belova wrote: >> Hello All, >> >> We would like to call quantile() function from the R-package STATS in a >> Delphi program. If this is possible, could anyone provide us with an >> example? > > It is possible, and in principle simple. The essentials: (1) Write a > file containing the something like a script in R with whatever > commands. (2) Start a process involving the execution of R with a > command line containing two arguments, the name of the command file > and the file where you want the output (results) to be. (3) wait for > the process to stop. So, here is a function (returns true if > everyhing worked OK) that does that: > > function StartRAndWait (CommandLine : string) : Boolean; > var > Proc_info: TProcessInformation; > Startinfo: TStartupInfo; > ExitCode: longword; > CreateOK : Boolean; > begin > Result := False; > > { Initialize the structures } > > FillChar(proc_info, sizeof (TProcessInformation), #0); > FillChar(startinfo, sizeof (TStartupInfo), #0); > Startinfo.cb := sizeof (TStartupInfo); > Startinfo.dwFlags := STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES; > Startinfo.wShowWindow := SW_HIDE; > > { Attempt to create the process. If successful wait for it to end} > > CreateOK := CreateProcess(Nil, PChar('R.exe ' + CommandLine), nil, > nil,False, CREATE_NEW_PROCESS_GROUP+NORMAL_PRIORITY_CLASS, nil, > nil, StartInfo, proc_info); > if (CreateOK) then begin > WaitForSingleObject (proc_info.hProcess, INFINITE); > GetExitCodeProcess(proc_info.hProcess, ExitCode); > Result := True > end; > CloseHandle(proc_info.hThread); > CloseHandle(proc_info.hProcess); > end; > > The argument for the procedure (CommandLine) is a string, created by a > statement like: > > Command := 'CMD BATCH ' + CommandFileName + ' ' + TempFileName; > > where CommandFileName is the name of the file with the script, and > TempFileName is the name of the text file containing the output. The > procedure is fairly lowlevel, but it worked for me using Delphi 7. I > do not remember how I managed to put this together (probably a mix of > help from the R and Delphi lists), so please do not ask questions > about the finer details. > > Tom > > > +----------------------------------------------------------------+ > | Tom Backer Johnsen, Psychometrics Unit, Faculty of Psychology | > | University of Bergen, Christies gt. 12, N-5015 Bergen, NORWAY | > | Tel : +47-5558-9185 Fax : +47-5558-9879 | > | Email : [EMAIL PROTECTED] URL : http://www.galton.uib.no/ | > +----------------------------------------------------------------+ > > > ----------------------------------------- > This message may contain privileged and confidential infor...{{dropped}} ______________________________________________ R-help@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.