Discussions related to Visual Prolog
User avatar
Tonton Luc
VIP Member
Posts: 204
Joined: 16 Oct 2001 23:01

Start JScript

Unread post by Tonton Luc »

Hi,

My JScript :

Code: Select all

curl -k -o result.txt https://www.google.fr
When I put it in a bat file (or js file or cmd file) and start it manually => works fine.
But when I start it programmatically using platformSupport5x::system or shell_native::shellExecute or useExe => doesn't works.
:?:
User avatar
Thomas Linder Puls
VIP Member
Posts: 1398
Joined: 28 Feb 2000 0:01

Unread post by Thomas Linder Puls »

It is always a good idea to describe what happens; "doesn't work" does not give much info. Are there for example any error messages, or exception dumps?

It is of course also a good idea to show how you have attempted to solve the problem (how did you use useExe and shellExecute).

Anyway, I guess that useExe will need the full path to the curl program, and shellExecute may also need that and it will most likely also need an appropriate verb ("run" I think).
Regards Thomas Linder Puls
PDC
User avatar
Tonton Luc
VIP Member
Posts: 204
Joined: 16 Oct 2001 23:01

Unread post by Tonton Luc »

Hi,

When I start manually (double-clic) a bat file with :
all works fine - I recover the contain of this page in result.txt file.

Using this VP7 following code, any result file is created, any error message, a Dos window opened and closed rapidly (I haven't the time to read it) :

Code: Select all

constants     fic_result = "result.txt". clauses     onFileNew(_Source, _MenuTag):-           Fic_js = "recup_url.bat",         Fic_url = "url.txt", % this file contain only https://www.toernooiklapper.nl/tools/index.php         if file::existFile(fic_result) then             try                 file::delete(fic_result) % to clean the result of the preceeding test             catch _ do                 succeed()             end try         end if,         if file::existFile(Fic_js) then             try                 file::delete(Fic_js)             catch _ do                 succeed()             end try         end if,                 if file::existFile(Fic_url) then             try                 file5x::file_str(Fic_url,URL),                 Syntax = string::format("curl -k -o % %",fic_result,URL),                 file5x::file_str(Fic_js,Syntax), % the bat file is created here, and if (after my application is closed) I double-clic manually on it, the command works fine                 if file::existFile(Fic_js) then                     platformSupport5x::system(Fic_js,1,_),                     stdio::write("ok"),stdio::nl % this line works fine but the batch command (started by platformSupport5x::system) doesn't recover the contain of the html page                 end if             catch _ do                 succeed()             end try         else             vpiCommonDialogs::note("Traitement impossible :",string::format("Il manque le fichier suivant :\n\n%",Fic_url))         end if,         !.     onFileNew(_Source, _MenuTag).
User avatar
Thomas Linder Puls
VIP Member
Posts: 1398
Joined: 28 Feb 2000 0:01

Unread post by Thomas Linder Puls »

platform5x should never be used for new code, it is only there for migration purposes. Please focus on the other methods.
Regards Thomas Linder Puls
PDC
User avatar
Tonton Luc
VIP Member
Posts: 204
Joined: 16 Oct 2001 23:01

Unread post by Tonton Luc »

Hi,

Tks for your help.

This following code works fine but only if I add "curl.exe" file in the same folder of my application :

Code: Select all

constants     fic_result = "result.txt". clauses     onFileNew(_Source, _MenuTag):-         Fic_url = "url.txt",         if file::existFile(Fic_url) then             try                 file5x::file_str(Fic_url,URL),                 Syntax_cmd = string::format("start curl -k -o % %",fic_result,URL),                 Exe = useExe::new(string::concat("cmd /c ",Syntax_cmd)),                 Exe:setShowWindow(false),                 Exe:run(),                 stdio::write("ok"),stdio::nl             catch _ do                 succeed()             end try         else             vpiCommonDialogs::note("Traitement impossible :",string::format("Il manque le fichier suivant :\n\n%",Fic_url))         end if.
User avatar
Thomas Linder Puls
VIP Member
Posts: 1398
Joined: 28 Feb 2000 0:01

Unread post by Thomas Linder Puls »

5x stuff is only for migration not for new code (in 7.3 the socket+... is an exception to this).

Have you tried:

Code: Select all

        Exe = useExe::new(string::format(@"c:\somewhere\curl.exe -k-o % %", fic_result, URL)),
Or perhaps:

Code: Select all

        Exe = useExe::new(string::format(@"-k-o % %", fic_result, URL)),         Exe:setApplicationName(@"c:\somewhere\curl.exe"),
The important part in both cases is to write a path to the exe.
Regards Thomas Linder Puls
PDC
User avatar
Tonton Luc
VIP Member
Posts: 204
Joined: 16 Oct 2001 23:01

Unread post by Tonton Luc »

Hi,

Your code doesn't works (maybee for security reasons), but it's nothing because I've a solution with added "curl.exe" file in the same folder of my application.

Many tks to you.
:wink:
User avatar
Thomas Linder Puls
VIP Member
Posts: 1398
Joined: 28 Feb 2000 0:01

Unread post by Thomas Linder Puls »

I undstand that you are satisfied with the solution you have found.

But the much simpler solution works fine for me. The attached project is made with vip 7.3.

To make it difficult I even use the 64bit version of CURL from the 7.3 program (which is obviously itself 32 bit).

Code: Select all

clauses     run():-         console::init(),         CURL = useExe::new(@"C:\Program Files\cURL\bin\curl.exe -k -o result.txt http://www.visual-prolog.com"),         CURL:run(),         _ = CURL:wait().
Attachments
useCURL.zip
useCURL project
(5.42 KiB) Downloaded 426 times
Regards Thomas Linder Puls
PDC
Post Reply