Macro in SORT code block

This forum is for eXpress++ general support.
Post Reply
Message
Author
Janko
Posts: 111
Joined: Sat Mar 20, 2010 8:36 am
Location: Cerklje

Macro in SORT code block

#1 Post by Janko »

Roger,

I have troubles with macros in code blocks again. I'm trying to automate

Code: Select all


 FOR i:= 1 to len(aNazivi)
                DCBROWSECOL ELEMENT i HEADER aNazivi[i]  WIDTH aSir[i] ;
	SORT {||ASort(arr,,,{|a,b|a[i]<b[i]})} 	PARENT oBrowse
NEXT i
which is sorting of coures wrong. If correcting SORT code block with

Code: Select all

FOR i := 1 TO len(aNazivi)
	bSort:=("{|a,b|a["+str(i,2)+"]<b["+str(i,2)+"]}")
                DCBROWSECOL ELEMENT i HEADER aNazivi[i]  WIDTH aSir[i] ;
	SORT  {||Asort(arr,,,&(bsort) )};
	PARENT oBrowse
NEXT
sorting is performed by last column.
How should codeblock look like?

Best rgards
JAnko

User avatar
rdonnay
Site Admin
Posts: 4813
Joined: Wed Jan 27, 2010 6:58 pm
Location: Boise, Idaho USA
Contact:

Re: Macro in SORT code block

#2 Post by rdonnay »

You need to anchor each value of i with a detached codeblock:

Code: Select all

FOR i:= 1 to len(aNazivi)
                DCBROWSECOL ELEMENT i HEADER aNazivi[i]  WIDTH aSir[i] ;
   SORT SortBlock(arr,i)     PARENT oBrowse
NEXT i


STATIC FUNCTION SortBlock( arr, i )

RETURN {||ASort(arr,,,{|a,b|a[i]<b[i]})}
The eXpress train is coming - and it has more cars.

Janko
Posts: 111
Joined: Sat Mar 20, 2010 8:36 am
Location: Cerklje

Re: Macro in SORT code block

#3 Post by Janko »

Roger,

of course your solution works. Many thanks.

JAnko

Post Reply