I'm trying to eliminate an array from my script (which I used to generate Filter statements), below is the test code.
the first loop does it using the vLogData Array and the second loop is me trying to replicate it but using the collection. I am getting in real muddle, can anyone point out the error of my ways.
the resultant VfilterTxt array should be the same for both !!!!!!!
thanks
p.s.
I should add that as I can only use 1024 characteres for each filter statement, I am trying to split then up into blocks of 64 (which just happens to be the closest to 1024 characters in this instance)
the first loop does it using the vLogData Array and the second loop is me trying to replicate it but using the collection. I am getting in real muddle, can anyone point out the error of my ways.
Code:
dim vlogText as c = <<%a% CE02||BELGIUM|19/07/2017|01|FAIRFORD FA101||BELGIUM|19/07/2017|01|FAIRFORD FA124|GE-S|BELGIUM|19/07/2017|01|FAIRFORD FA57|MN-L|BELGIUM|19/07/2017|01|FAIRFORD 130612|612|CANADA|19/07/2017|01|FAIRFORD 140112|112|CANADA|19/07/2017|01|FAIRFORD E-191||DENMARK|19/07/2017|01|FAIRFORD ET-197||DENMARK|19/07/2017|01|FAIRFORD CC-2||FINLAND|19/07/2017|01|FAIRFORD HN-406|06|FINLAND|19/07/2017|01|FAIRFORD HN-428|28|FINLAND|19/07/2017|01|FAIRFORD M-519||DENMARK|19/07/2017|01|FAIRFORD 125|XO|FRANCE|19/07/2017|01|FAIRFORD 5847|61-PP|FRANCE|19/07/2017|01|FAIRFORD E113|8|FRANCE|19/07/2017|01|FAIRFORD E127|5|FRANCE|19/07/2017|01|FAIRFORD E129|6|FRANCE|19/07/2017|01|FAIRFORD E139|3|FRANCE|19/07/2017|01|FAIRFORD E146|2|FRANCE|19/07/2017|01|FAIRFORD E20|4|FRANCE|19/07/2017|01|FAIRFORD E44|1|FRANCE|19/07/2017|01|FAIRFORD E46|7|FRANCE|19/07/2017|01|FAIRFORD E68|0|FRANCE|19/07/2017|01|FAIRFORD E87|9|FRANCE|19/07/2017|01|FAIRFORD 1219|DAZ|FRANCE|19/07/2017|01|FAIRFORD 4053|GBE|FRANCE|19/07/2017|01|FAIRFORD 87||FRANCE|19/07/2017|01|FAIRFORD 3025||GERMANY|19/07/2017|01|FAIRFORD 3067||GERMANY|19/07/2017|01|FAIRFORD 3117||GERMANY|19/07/2017|01|FAIRFORD 3144||GERMANY|19/07/2017|01|FAIRFORD 4325||GERMANY|19/07/2017|01|FAIRFORD 4605||GERMANY|19/07/2017|01|FAIRFORD 4649||GERMANY|19/07/2017|01|FAIRFORD 5428||GERMANY|19/07/2017|01|FAIRFORD 6001||GERMANY|19/07/2017|01|FAIRFORD 8310||GERMANY|19/07/2017|01|FAIRFORD 036||GREECE|19/07/2017|01|FAIRFORD 345||JORDAN|19/07/2017|01|FAIRFORD RJF-01||JORDAN|19/07/2017|01|FAIRFORD RJF-02||JORDAN|19/07/2017|01|FAIRFORD RJF-03||JORDAN|19/07/2017|01|FAIRFORD RJF-04||JORDAN|19/07/2017|01|FAIRFORD 06 BLUE||LITHUANIA|19/07/2017|01|FAIRFORD 01||NATO|19/07/2017|01|FAIRFORD N-227||NETHERLANDS|19/07/2017|01|FAIRFORD D-661||NETHERLANDS|19/07/2017|01|FAIRFORD G-273||NETHERLANDS|19/07/2017|01|FAIRFORD J-368||NETHERLANDS|19/07/2017|01|FAIRFORD J-646||NETHERLANDS|19/07/2017|01|FAIRFORD S-453||NETHERLANDS|19/07/2017|01|FAIRFORD 687||NORWAY|19/07/2017|01|FAIRFORD 691|FN-K|NORWAY|19/07/2017|01|FAIRFORD 3766||PAKISTAN|19/07/2017|01|FAIRFORD 1115||POLAND|19/07/2017|01|FAIRFORD MAB||QATAR|19/07/2017|01|FAIRFORD MAH|211|QATAR|19/07/2017|01|FAIRFORD 2706||ROMANIA|19/07/2017|01|FAIRFORD 6807||ROMANIA|19/07/2017|01|FAIRFORD 6824||ROMANIA|19/07/2017|01|FAIRFORD 1962||SLOVAKIA|19/07/2017|01|FAIRFORD 39227|227|SWEDEN|19/07/2017|01|FAIRFORD 39268|268|SWEDEN|19/07/2017|01|FAIRFORD 39816|816|SWEDEN|19/07/2017|01|FAIRFORD 39 BLUE||UKRAINE|19/07/2017|01|FAIRFORD 71 BLUE||UKRAINE|19/07/2017|01|FAIRFORD 76683||UKRAINE|19/07/2017|01|FAIRFORD CSX62219|RS-50||19/07/2017|01|FAIRFORD MM54505|9||19/07/2017|01|FAIRFORD MM54510|7||19/07/2017|01|FAIRFORD MM54517|3||19/07/2017|01|FAIRFORD MM54518|2||19/07/2017|01|FAIRFORD MM54534|4||19/07/2017|01|FAIRFORD MM54539|8||19/07/2017|01|FAIRFORD MM54551|1||19/07/2017|01|FAIRFORD %a% trace.clear() delete myCollection dim global MyCollection as U dim entry_count as n = *count(vLogText) myCollection.initialize("1|2|3|4|5|6","1","1|2|3|4|5|6",vLogText) dim vLogData[entry_count] as p vLogData.initialize_properties("reg|Code|Country|SeenDate|SeenOrder|SeenWhere",vLogText) dim vFilterTxt[0] as c dim index as n for block = 0 to round_up(entry_count/64,0) vFilter = "" for iteration = 1 to 64 index = block * 64 + iteration if index > entry_count then exit for end if vFilter = vFilter + "reg='"-vLogData[index].reg-"'.or." next iteration vFilterTxt[]=left(vFilter,len(vFilter)-4) next Block block = vFilterTxt.first_empty()-1 vFilterTxt.resize(block) showvar(vFilterTxt.dump()) ' ' ' ' ' ' ' ' ' ' keyval = mycollection.first() loop = .T. while loop vFilter = "" for iteration = 1 to 64 currentval = mycollection.get(keyval) vFilter = vFilter - "reg='"-left(currentval,at("|",currentval)-1)-"'.or." trace.writeln("("-iteration-") = "+vFilter) if (typeof( mycollection.next(keyval) ) = "Z" ) then loop = .f. else keyval = mycollection.next(keyval) end if next iteration vFilterTxt[]=left(vFilter,len(vFilter)-4) end while block = vFilterTxt.first_empty()-1 vFilterTxt.resize(block) showvar(vFilterTxt.dump())
thanks
p.s.
I should add that as I can only use 1024 characteres for each filter statement, I am trying to split then up into blocks of 64 (which just happens to be the closest to 1024 characters in this instance)