Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Executing Code From A Memo Field?
Message
From
30/03/1998 11:03:45
Cetin Basoz
Engineerica Inc.
Izmir, Turkey
 
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Miscellaneous
Thread ID:
00085742
Message ID:
00088127
Views:
42
>>>>>>>>>Michael,
>>>>>>>>>
>>>>>>>>>>Hmm..that was too easy. Why didn't I think of that? Sometimes I wonder if I'm not going through premature senility.
>>>>>>>>>
>>>>>>>>>That method will work, but only if you are running within VFP - a distributed executable doesn't have access to the compiler so cannot compile and run a prg file.
>>>>>>>>>
>>>>>>>>>If you want to re-distibute you could look for something called CodeBlock (which may be in the library here).
>>>>>>>>
>>>>>>>>If the code in his memo filed is a one liner, he could get the contents into a memvar and use either &Memvar or EVAL() to execute the one line of code..
>>>>>>>
>>>>>>>If it's multi-line memo then you can go through the loop:
>>>>>>>
>>>>>>>for n=1 to memlines(memofield)
>>>>>>> cCommand=mline(memofield,n)
>>>>>>> &cCommand.
>>>>>>>endfor
>>>>>>>
>>>>>>
>>>>>>Good point Ed... Hadn't thought of that..
>>>>>
>>>>>Ed,
>>>>>
>>>>>Would loop processing work with that setup? Something like:
>>>>>DO WHILE ...
>>>>>.
>>>>>.
>>>>>ENDDO
>>>>>
>>>>>I'm curious rather than accusatory. This would be great if it works, but I've always been under the impression that you're limited to 1 line commands with macro expansion.
>>>>
>>>>But number of these commands in your program is unlimited, right? So, it should work.
>>>
>>>Ed,
>>>
>>>So you're saying that if I had a memo field with the following in it:
>>>SELECT foobar
>>>ln_count = 0
>>>SCAN WHILE foobar.item = "TEST"
>>> ? foobar.description
>>> ln_count = ln_count + 1
>>>ENDSCAN
>>>? ln_count
>>>
>>>That the following code would run it correctly through macro expansion?
>>>
>>>for n=1 to memlines(memofield)
>>> cCommand=mline(memofield,n)
>>> &cCommand.
>>>endfor
>>>
>>>I tried something similar, but it didn't work. It generates an error when you try to macro expand the initial loop line. Any way around that?
>>
>>This code was tested before posted. You probably have syntax error inside memo field code.
>
>Ed,
>
>Actually, I just tested the following code:
>
>Memo field:
>lnCount = 0
>FOR i = 1 TO 14
> ? i
> lnCount = lnCount + i
>ENDFOR
>? lnCount
>
>
>Program code:
>SELECT file1
>for n=1 to memlines(memofield)
> cCommand=mline(memofield,n)
> &cCommand.
>endfor
>
>I receive a nesting error on the code when it gets to the "FOR i = 1 TO 14" line. The code within the memo field works correctly until I try to macro convert the lines one at a time. This is what I was getting at the loops will not work correctly within a memo field if you try to macro convert them.
>
>Rod
Rod,
Loops like in interactive sessions would cause it to fail. But I think there is a workaround that's not so easy. Capture nesting commands with wrapper function, and send the the block seperately to appropriate "nesting" subfunction.
Cetin
Çetin Basöz

The way to Go
Flutter - For mobile, web and desktop.
World's most advanced open source relational database.
.Net for foxheads - Blog (main)
FoxSharp - Blog (mirror)
Welcome to FoxyClasses

LinqPad - C#,VB,F#,SQL,eSQL ... scratchpad
Previous
Reply
Map
View

Click here to load this message in the networking platform