Got a LiveCode personal license? Are you a beginner, hobbyist or educator that's new to LiveCode? This forum is the place to go for help getting started. Welcome!
	Moderators: FourthWorld, heatherlaine, Klaus, kevinmiller
			
		
		
			- 
				
																			 MaxV
- Posts: 1580
- Joined: Tue May 28, 2013 2:20 pm
- 
				Contact:
				
			
						
						
													
							
						
									
						Post
					
								by MaxV » Thu May 30, 2013 5:06 pm
			
			
			
			
			Hi,
I'm working on a scientific calculator, and I'm using 
value like this:
If the string is not correct, like 
"oops+3+3", it crashes!
How can I test if the string is a valid script for 
value or for 
do functions?
Livecode Wiki: http://livecode.wikia.com
My blog: https://livecode-blogger.blogspot.com
To post code use this: http://tinyurl.com/ogp6d5w
						 
		 
				
		
		 
	 
	
				
		
		
			- 
				
																			 jmburnod
- VIP Livecode Opensource Backer
  
- Posts: 2729
- Joined: Sat Dec 22, 2007 5:35 pm
- 
				Contact:
				
			
						
						
													
							
						
									
						Post
					
								by jmburnod » Thu May 30, 2013 5:26 pm
			
			
			
			
			Hi MaxV,
don't work for me
You have to change it to:
Code: Select all
put THE value of "3+3" into myresult
You can test if a string is a number like that:
Code: Select all
put isNumber("oops+3+3") return false
I hope this help
Best regards
Jean-Marc
					Last edited by 
jmburnod on Thu May 30, 2013 9:50 pm, edited 1 time in total.
									
https://alternatic.ch
						 
		 
				
		
		 
	 
	
				
		
		
			- 
				
																			 bn
- VIP Livecode Opensource Backer
  
- Posts: 4189
- Joined: Sun Jan 07, 2007 9:12 pm
						
						
													
							
						
									
						Post
					
								by bn » Thu May 30, 2013 6:07 pm
			
			
			
			
			Hi Max,
(salut Jean-Marc)
As Jean-Marc said.
from the dictionary:
value
Type: function
Syntax: 
the value of expression
value(expression[,object])
You have two ways to invoke a in-built function in Livecode. The "normal" way with parenthesis or "the value of xxx". In the second case you have to use "the" and "of" otherwise the compiler does not know what you mean.
here are some ways to add 2 numbers.
Code: Select all
on mouseUp
   put the value of "3+3" into field 1
   
   put cr & value("3+3") after field 1
   
   put cr & 3 + 3 after field 1
   
   put 3 into tVar1
   put 3 into tVar2
   put cr & tVar1 + tVar2 after field 1
   
   put cr & myAddingFunction(tVar1,tVar2) after field 1
   
   put cr & myAddingFunctionWithErrorChecking(tVar1, tVar2) after field 1
   
   put "oops" into tVar2
   put cr & myAddingFunctionWithErrorChecking(tVar1, tVar2) after field 1
end mouseUp
function myAddingFunction param1, param2
   return param1 + param2
end myAddingFunction
function myAddingFunctionWithErrorChecking param1, param2
   if not (param1 is a number) or not(param2 is a number) then return "error, must be numbers"
   return param1 + param2
end myAddingFunctionWithErrorChecking
put this into a button and make a field.
Kind regards
Bernd
 
		 
				
		
		 
	 
	
				
		
		
			- 
				
																			 jmburnod
- VIP Livecode Opensource Backer
  
- Posts: 2729
- Joined: Sat Dec 22, 2007 5:35 pm
- 
				Contact:
				
			
						
						
													
							
						
									
						Post
					
								by jmburnod » Thu May 30, 2013 6:35 pm
			
			
			
			
			Simple, clear, useful... Berndly
			
			
									
									https://alternatic.ch
						 
		 
				
		
		 
	 
	
				
		
		
			- 
				
																			 MaxV
- Posts: 1580
- Joined: Tue May 28, 2013 2:20 pm
- 
				Contact:
				
			
						
						
													
							
						
									
						Post
					
								by MaxV » Fri May 31, 2013 11:09 am
			
			
			
			
			Thank you very much 
jmburnod.
Now, I solved for my calculator, but is there  a  check or parse function that control if statement is correct?
I was used to work with Rebol language (very similar to LiveCode) and there was a 
try function that you could use this way:
Code: Select all
if  try (do "put 3 into b")
 then 
  do "put 3 into b" 
  else 
  answer "WRONG CODE"
 end if
Is there any similar in LiveCode?
Livecode Wiki: http://livecode.wikia.com
My blog: https://livecode-blogger.blogspot.com
To post code use this: http://tinyurl.com/ogp6d5w
						 
		 
				
		
		 
	 
	
				
		
		
			- 
				
																			 MaxV
- Posts: 1580
- Joined: Tue May 28, 2013 2:20 pm
- 
				Contact:
				
			
						
						
													
							
						
									
						Post
					
								by MaxV » Fri May 31, 2013 11:21 am
			
			
			
			
			No, I didn't resolve even for my calculator:
 return false
I tried also:
 but it returns false
Any suggestions?
Livecode Wiki: http://livecode.wikia.com
My blog: https://livecode-blogger.blogspot.com
To post code use this: http://tinyurl.com/ogp6d5w
						 
		 
				
		
		 
	 
	
				
		
		
			- 
				
																			 Klaus
- Posts: 14255
- Joined: Sat Apr 08, 2006 8:41 am
- 
				Contact:
				
			
						
						
													
							
						
									
						Post
					
								by Klaus » Fri May 31, 2013 11:28 am
			
			
			
			
			Hi Max,
why don't you take a look into the dictionary?
It ain't really THAT bad 
 
Sure there is a "TRY" structure in Livecode, but is is not a function as in your Rebol example.
Code: Select all
...
  try
    do "put 3 into b"
    
    ## Catch possible error
  catch errornum
  ## ERROR happened!
  ## Now do what you need in this case
  answer "WRONG CODE!"
  ## Exit htis handler or do whatever you need
  exit HANDLER_NAME
  end try
  ## Success, cary on with your script...
...
Best
Klaus
 
		 
				
		
		 
	 
	
				
		
		
			- 
				
																			 bn
- VIP Livecode Opensource Backer
  
- Posts: 4189
- Joined: Sun Jan 07, 2007 9:12 pm
						
						
													
							
						
									
						Post
					
								by bn » Fri May 31, 2013 12:04 pm
			
			
			
			
			Hi Max,
if you code
it returns TRUE
if you just put 
then it returns FALSE since it is in quotes which means in Livecode that it is a string/literal.
if you put
then it returns TRUE since Livecode "sees" that it is numbers and does the right thing.
returns TRUE since you force the evaluation before passing the parameter to the function isNumber. Without evaluation first isNumber "thinks" it is a string literal because of the quotes, see above.
Kind regards
Bernd
 
		 
				
		
		 
	 
	
				
		
		
			- 
				
																			 MaxV
- Posts: 1580
- Joined: Tue May 28, 2013 2:20 pm
- 
				Contact:
				
			
						
						
													
							
						
									
						Post
					
								by MaxV » Fri May 31, 2013 12:47 pm
			
			
			
			
			Klaus wrote:Hi Max,
why don't you take a look into the dictionary?
It ain't really THAT bad 

...
Best
Klaus
 
Thank you Klaus!!!  I searched 
try in the dictionary without finding it, but I found it in the User Guide! Yes!
I'll publish my scientific calculator very soon!
Thank you, thank you, thank you, thank you! 

Livecode Wiki: http://livecode.wikia.com
My blog: https://livecode-blogger.blogspot.com
To post code use this: http://tinyurl.com/ogp6d5w
						 
		 
				
		
		 
	 
	
				
		
		
			- 
				
																			 Klaus
- Posts: 14255
- Joined: Sat Apr 08, 2006 8:41 am
- 
				Contact:
				
			
						
						
													
							
						
									
						Post
					
								by Klaus » Fri May 31, 2013 12:51 pm
			
			
			
			
			Hm, it IS in fact in my dictionary... 

 
		 
				
		
		 
	 
	
				
		
		
			- 
				
																			 jacque
- VIP Livecode Opensource Backer
  
- Posts: 7403
- Joined: Sat Apr 08, 2006 8:31 pm
- 
				Contact:
				
			
						
						
													
							
						
									
						Post
					
								by jacque » Fri May 31, 2013 5:59 pm
			
			
			
			
			Also, I'd avoid the "vaule" or "do" functions here. They both have some overhead because the engine needs to load the compiler every time either one is used, and LiveCode syntax makes them unnecessary most of the time. The examples Bernd gave that don't use "value" or "do" will work fine.
There are very few cases where scripts need those functions, the engine is pretty smart.
			
			
									
									Jacqueline Landman Gay         |     jacque at hyperactivesw dot com
HyperActive Software           |     http://www.hyperactivesw.com