Encapsulate SCADA Basic logic to a library

18 Posts
3 Users
0 Likes
94 Views
(@j.becker@pcvue.de)
Posts: 0
New Member Guest
 

hi, about that code:

Sub GetSubBranch(sBranch, Index)

	Dim hbuf as long;
	Dim sSubBranch as str;
	
	hbuf = alloc_buffer(250);
	Put_Buffer(hbuf, 0, sBranch);
	
	sSubBranch = Asciifield("STR", hbuf, Index, ".");
	free_buffer(hbuf);

	return(sSubBranch);
	
End Sub

How to get the parent branch here?

 
Posted : 18/12/2017 2:21 pm
(@j.becker@pcvue.de)
Posts: 0
New Member Guest
 

ok, I got it (dont forget to check for null-result in case of out-of-range):

Sub GetSubBranch(sBranch, Index)
'Retrieve subbranch from index
'if index == 0, parent branch is returned
	Dim hbuf as long;
	Dim sSubBranch as str;
	
	hbuf = alloc_buffer(250);
	Put_Buffer(hbuf, 0, sBranch);
	
	if(Index ==0) then
		sSubBranch = Asciifield("STR", hbuf, Asciifield("COUNT", hbuf,".")-1, ".");
	else
		sSubBranch = Asciifield("STR", hbuf, Index, ".");
	end if
	
	free_buffer(hbuf);

	return(sSubBranch);
	
End Sub
 
Posted : 18/12/2017 2:33 pm
(@j.becker@pcvue.de)
Posts: 0
New Member Guest
 

Hello,

I think that is even better:

sub helper_GetSubBranch(sBranch, Index,i_dir)
'Retrieve subbranch from index
'Switch index-direction 0 = left, 1 = right
'if index == 0, parent branch is returned
	
	Dim hbuf as long;
	Dim sSubBranch as str;
	
	hbuf = alloc_buffer(250);
	Put_Buffer(hbuf, 0, sBranch);
	
	if(Index ==0) then
			sSubBranch = Asciifield("STR", hbuf, Asciifield("COUNT", hbuf,".")-1, ".");
	else
		if(i_dir ==0) then
			sSubBranch = Asciifield("STR", hbuf, Index, ".");
		else
			sSubBranch = Asciifield("STR", hbuf, Asciifield("COUNT", hbuf,".")-Index, ".");
		end if
	end if
	
	free_buffer(hbuf);

	return(sSubBranch);
	
End Sub
 
Posted : 18/12/2017 3:04 pm