Build 1D array using for loop
Hi guys,
I am testing out array. How do I create a 1D array of x-y using for loop?
Nextal wrote:
I am testing out array. How do I create a 1D array of x-y using for loop?
OK, first of all you did not say what the array should contain. If you want an array that has one array element for each iteration of the while loop, you need to first think a bit harder. Your outer loop has no wait, thus it will spin millions of times per second and you will run out of memory soon, no matter how much memory you have. How many times should the while loop iterate? If you know the number before the program starts, you would use a FOR loop and autoindex at the loop boundary.
If you want to use a whiile loop, you need a mechanism to keep the array size reasonable. For small final arrays, you can just build the array in a shift register if you need it updated as it happens. If you only need the array after the loop stops, you can autoindex at the right loop boundary.
In any case, you should take a step back and decide what you really want. Currently the specifications are very vague and unreasonable.
LabVIEW Champion . Do more with less code and in less time .
Similar Messages
-
I stuck with a problem that I am using FOR loop for generating repeating nodes.
Now when I concat the generated node in the main node then I got only last iteration of that FOR loop.
can anybody suggest me a way to handle this error....
FOR i IN 1..pl_phone_tab.Count
LOOP
SELECT xmlelement("Phone"
,xmlelement("PHONETYPE",xmlattributes('01' AS "dmnADRP_PHONETYPE"),pl_phone_tab(i).p_phtype_tab)
,xmlelement("PHONENUM",pl_phone_tab(i).p_phnum_tab)
,xmlelement("PRIMARY_CONTACT",pl_phone_tab(i).p_prcon_tab)
INTO p_phone_xml
FROM dual; END LOOP;
SELECT xmlelement("PhoneInfo"
,xmlconcat(p_phone_xml))
INTO p_phone_info_xml
FROM dual;
here I am getting only one node but there has to be two nodes for PHONE nodeNot that I'm encouraging you but here are two standalone examples explaining how to do what you want :
1) Loop through the input collection and append each node to its target container :
SQL> declare
2
3 type t_emp_tab is table of scott.emp%rowtype;
4
5 emp_tab t_emp_tab;
6 emp_info_xml xmltype;
7 emp_xml xmltype;
8
9 begin
10
11 -- filling emp_tab with data
12 select e.*
13 bulk collect into emp_tab
14 from scott.emp e
15 where e.deptno = 10;
16
17 emp_info_xml := xmltype('<EmpInfo/>');
18
19 -- looping through emp collection and appending to EmpInfo element
20 for i in 1 .. emp_tab.count loop
21 select appendchildxml(
22 emp_info_xml
23 , '/*'
24 , xmlelement("Emp"
25 , xmlattributes(emp_tab(i).empno as "id")
26 , xmlforest(
27 emp_tab(i).ename as "Name"
28 , emp_tab(i).job as "Job"
29 )
30 )
31 )
32 into emp_info_xml
33 from dual;
34 end loop;
35
36 dbms_output.put_line(emp_info_xml.getclobval(1,2));
37
38 end;
39 /
<EmpInfo>
<Emp id="7782">
<Name>CLARK</Name>
<Job>MANAGER</Job>
</Emp>
<Emp id="7839">
<Name>KING</Name>
<Job>PRESIDENT</Job>
</Emp>
<Emp id="7934">
<Name>MILLER</Name>
<Job>CLERK</Job>
</Emp>
</EmpInfo>
PL/SQL procedure successfully completed
2) Build a secondary collection of XML nodes and use XMLAgg to aggregate them in one go :
SQL> declare
2
3 type t_emp_tab is table of scott.emp%rowtype;
4
5 emp_tab t_emp_tab;
6 emp_info_xml xmltype;
7 emp_xml_tab xmlsequencetype := xmlsequencetype();
8
9 begin
10
11 -- filling emp_tab with data
12 select e.*
13 bulk collect into emp_tab
14 from scott.emp e
15 where e.deptno = 10;
16
17 -- looping through emp collection and appending to the collection of Emp nodes
18 for i in 1 .. emp_tab.count loop
19
20 emp_xml_tab.extend;
21
22 select xmlelement("Emp"
23 , xmlattributes(emp_tab(i).empno as "id")
24 , xmlforest(
25 emp_tab(i).ename as "Name"
26 , emp_tab(i).job as "Job"
27 )
28 )
29 into emp_xml_tab(i)
30 from dual;
31
32 end loop;
33
34 select xmlelement("EmpInfo", xmlagg(t.column_value))
35 into emp_info_xml
36 from table(emp_xml_tab) t ;
37
38 dbms_output.put_line(emp_info_xml.getclobval(1,2));
39
40 end;
41 /
<EmpInfo>
<Emp id="7782">
<Name>CLARK</Name>
<Job>MANAGER</Job>
</Emp>
<Emp id="7839">
<Name>KING</Name>
<Job>PRESIDENT</Job>
</Emp>
<Emp id="7934">
<Name>MILLER</Name>
<Job>CLERK</Job>
</Emp>
</EmpInfo>
PL/SQL procedure successfully completed
Both solutions give the same output.
Test them both and see which one fits better into your scenario. -
Is there arrays or FOR loops in ABAP?
Hi everyone!
Is there an array and FOR loops in ABAP similar to the C Language?
If there is, please give example. _
Thanks a lot!Hi,
There is no array concept in ABAP but there are field-symbols which are same as pointers in C.As for the FOR loop there is no such command in SAP/ABAP but we do have the do..while and loop...endloop commands.There is also CASE statements and if..endif commands.
Thanks,
Sandeep. -
How do i sweep two voltage at the same time by using for loop ?
Hello, Can anyone help me on this topic ?
My problem is to sweep Vds and Vgs as same time vs Id in MOSFET by using for loop. I also use the Agilent power supply source. Let me tell a litle bit about what i'm doing. For different value of Vds, i will get Vgs vs Id curve. (The x axis is Vgs, the y-axis is Id).
I started to create two for-loop, the inner to sweep Vgs, and the outer one to sweep Vds. My problem is don't know how to connect all the wire in the for loop.
In the for loop i saw N, i icon. Suppose I have the two variable for Vgs such as Vgs start and Vgs_stop. Should the Vgs_start( or Vgs_stop) be connected to N or leave it in the for_loop ?
for example: I want to sweep Vgs from 0(for Vgs_start) to 5(Vgs_strop) V, and the step increment is .5V how do i connect these variables in the for loop ?
Thank you for your time
Ti NguyenIt is easier to use a while loop. Dennis beat me to the punch. Here is my solution:
You can remove the flat sequence structure if you use Error In and Error Out to ensure the execution flow will occur in the proper order. Be sure to include the delay time in the loop so that your vi doesn't hog all the CPU time.
Message Edited by tbob on 10-17-2005 01:00 PM
- tbob
Inventor of the WORM Global
Attachments:
RampVoltage.PNG 8 KB -
Will using for loop decrease the performance
Hi,
Will using for loop with a query decrease the performance.
for r_row in (select * from table) Loop
end loop.
This is done inside another for loop, most of the cases it returns only one value.
will it decrease the peformance of the procedure.
kindly advice.......
Regards,
Baluuser575682 wrote:
Will using for loop with a query decrease the performance.
for r_row in (select * from table) Loop
end loop.
This is done inside another for loop, most of the cases it returns only one value.
will it decrease the peformance of the procedure.Perhaps it is better to understand just what this PL/SQL loop construct does.
PL/SQL is two languages. It is PL (programming logic code) like Pascal or C or Java. You can use a 2nd language inside it called SQL. The PL engine is clever enough to recognise when the 2nd language is used. And it compiles all the stuff that is needed for the PL engine to call the SQL engine, pass data to the SQL engine and get data back, etc. (compare this with the complexity of using the SQL language in Pascal or C or Java).
So what does that loop do? The PL engine recognises the SQL SELECT statement. It creates an implicit cursor by calling the SQL engine to parse it (hopefully a soft parse) and then execute it.
As part of the PL loop, the PL engine now calls the SQL engine to fetch the data (rows) from the cursor. With 10g and later, the PL engine is smart enough to use implicit bulk processing.
Prior to 10g it used to fetch a row from the SQL engine, do the loop, fetch the next row, do the loop, etc. This means if there is a 1000 rows to fetch, it will call the SQL engine a 1000 times.
With 10g and later it will fetch a 100 rows, store that in an internal buffer and then do the loop a 100 times. With a 1000 rows to fetch, it now only requires 10 bulk fetches instead of a 1000 single row fetches.
These fetches require a context switch - as the PL engine has to step out and into the SQL engine and back, to fetch a row. This is an overhead and thus can become slow the more context switching there is.
And this is the basics for this loop (and most other cursor loops) construct in PL/SQL.
The ideal is to reduce the number of context switches. This is an overhead that can impact on performance.
What about using a loop within a loop. Also "bad". This uses the outer loop to fetch data. This data is then used to drive the fetch in the inner or nested loop. So the outside loop pulls data from the SQL engine into PL variables. The inside loop pushes that very same data back to the SQL engine.
Why? It would have been a lot faster no to pull and push that data between the loops using PL.
It will be a lot faster doing it via SQL only. Write both loops as a single SQL statement and have the SQL engine directly drive these loops itself. This is called a JOIN in SQL. And the SQL engine can do it not only faster, but it has some froody algorithms that can be used that are even faster than a nested loop process (called merge joins, hash joins, etc).
Bottom line. Maximise SQL. Minimise PL.*
Do as much of your data crunching in SQL as possible. SQL is the best and fastest "place" to process data. Not PL (or Pascal/C/Java). -
Procedure to insert same record for 30 times in a table using for loop
Hi,
I need to insert a record in a table which has to be iterated using for loopI think you are in the wrong forum. You can do that like this:
CREATE TABLE my_table (my_column NUMBER);
BEGIN
FOR i IN 1 .. 30
LOOP
INSERT INTO my_table
(my_column
VALUES (i
END LOOP;
END;
/Denes Kubicek
http://deneskubicek.blogspot.com/
http://www.apress.com/9781430235125
http://apex.oracle.com/pls/apex/f?p=31517:1
http://www.amazon.de/Oracle-APEX-XE-Praxis/dp/3826655494
------------------------------------------------------------------- -
How to iterate List in jsp without using for loop
Hi,
I am developing a small application is struts. I have one ActionForm file which contain one List like getEmployeeDetailsList(). When I am using this list in jsp page for displaying data. I want to display it as employee name, employee address, employee designation and employee contact no. These all fields are available in the above list. Now what is the problem is that I am using logic:iterate method to iterate data. but this is not sufficient to display all records in order. like employee name should be in one table and they can be vertical not horizontal, employee address is also should be seperate. and same thing with employee designation and contact no. I don't want to use for loop to iterate this list. Please tell me about optionCollection for this list. only employee names should be one drop down and employee designation is also in another drop down.
Please help. It is really urgent.
Any help will be appreciated.
Thanks in advance.
ManveerI'm not sure what you problem is, but one thing you can do is to create a new class and pass the list into its constructor (and store it as a private variable). Then, provide a set of functions in the new class that extracts data from the list and returns it in a form that the various parts of the JSP page wants. For example, one function may return a sorted list of just the employee names. In this way, all the business logic for formatting the data into a form that JSP page likes is hidden inside the new class.
-
Incrementing var_(x) to var_(y) using FOR loop
How can i keep incrementing var_(x) to var(y) using FOR loop.
I want variables var_1 to var_3 displayed. So I tried the below mentioned method. But i got error.
SQL> set serveroutput on
declare
var_1 number;
var_2 number;
var_3 number;
begin
var_1:=884;
var_2:=646;
var_3:=213;
for i in 1..3 loop
dbms_output.put_line(var_(i));
end loop;
end;
SQL> /
dbms_output.put_line(var_(i));
ERROR at line 10:
ORA-06550: line 10, column 26:
PLS-00201: identifier 'VAR_' must be declared
ORA-06550: line 10, column 5:
PL/SQL: Statement ignoredThank you Padders. I have a complex requirement involving an UPDATE. To avoid unnecessary lines/repeat of UPDATE statements i somehow have to increase the variable number from var_(x) to var_(y)
-
How do i use Arrays and For Loops in Loading Multiple Images?
I am struggling to load a sequential array of images to appear like a moving image. So when u click the button the images load one after the other.
The code below is what i have so far, but it fails to do what i seek in that there's only one image loading which is the last image in the array, so either because the images are stacking up atop each other, or because i simply dont understand the basics...
And, i am unclear about what you said kglad, that my solution will be more complicated because i need to preload my image sequence and then use a loop to load it?
import flash.net.URLRequest;
import flash.display.Loader;
var count:int = 0;
var imageArray:Array=["1.jpg","2.jpg","3.jpg","4.jpg","5.jpg","6.jpg","7.jpg",
"8.jpg","9.jpg","10.jpg","11.jpg","12.jpg","13.jpg"];
for(var i:uint=0;i<imageArray.length;i++){
var btn:YourButton=new YourButton();
btn.ivar=i;
addChild(btn);
btn.x=0;
btn.y=0;
btn.addEventListener(MouseEvent.CLICK,clickF);
var ldr:Loader=new Loader();
addChild(ldr);
ldr.x=20;
ldr.y=20;
function clickF(e:MouseEvent){
ldr.load(new URLRequest("D:/flash cs5.5/image_sequence/twirlSeq/"+imageArray[e.currentTarget.ivar]));
function loadComplete(e:Event){
// first process loaded image, then...
count++;
if(count < imageArray.length){
loadCurrentImage(); // load the next image
} else {
// sequencial loading complete, carry on to next activity
function loadCurrentImage(){
ldr.load(imageArray[count]);
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);create a new fla, add btn and add the code i suggested. test.
var count:int;
var imageArray:Array=["1.jpg","2.jpg","3.jpg","4.jpg","5.jpg","6.jpg","7. jpg",
"8.jpg","9.jpg","10.jpg","11.jpg","12.jpg","13.jpg"];
var ldr0:Loader=new Loader();
ldr0.contentLoaderInfo.addEventListener(Event.COMPLETE,loadCompleteF);
var ldr1:Loader=new Loader();
ldr1.contentLoaderInfo.addEventListener(Event.COMPLETE,loadCompleteF);
btn.addEventListener(MouseEvent.CLICK,clickF);
function clickF(e:MouseEvent):void{
// initialize count
count=0;
// call loadF
loadF();
function loadF():void{
// add one of the loaders to the top of the displaylist and load the next image
addChild(this["ldr"+count%2])
this["ldr"+count%2].load(new URLRequest(imageArray[count]));
function loadCompleteF(e:Event):void{
// increment count
count++;
// check if the last has loaded
if(count<imageArray.length){
// if not clear the content out of the next loader.
if(this["ldr"+count%2].content){
this["ldr"+count%2].unloadAndStop();
// and call loadF so the next loader can load the next image in the array
loadF();
} else {
// if the last has loaded.
// last load completed -
Question about using for-loop to generate array from DAQmx. Thanks!
I have a laser system with a frequency of 1kHz, I am using this 1kHz signal to trigger the DAQmx and get the data from a photodetector, e.g. I will get 1000 data points during 1 second from DAQmx, but I need to separate this 1000 data points into the even and odd list, which is two list of 500 data points, e.g.. The 1st, 3rd, ... 99th data is one array, the 2nd, 4th,... 10th data is another array, then I will do further calculations based on these two arrays.
To seperate the even and odd data, the only way I can find is put these 1000 points into an array and then seperate them afterwards.
Can I do things like this pic?
I don't know the speed of the for loop, because the 1kHz trigger is always there, once it is triggered, the DAQmx read will give a data point, if the speed of the for-loop( the time from the end of a loop to the beginning of the next loop) is slower than the 1kHz trigger, then the for-loop will miss data point, then the ordering of the 1000 points in 1 second will be changed.
Or I need to put everything, e.g. AI Voltage, Trigger, sample clock, into the for-loop and then return a Y? Thanks!Clarification:
The VI you have posted will work as following:
1) The task will read 2 analog inputs (ai0, ai3).
2) The acquisition starts, oncece digital signal (trigger) is detected on PFI0
3) The sampling rate will be as specified in "rate" control - it is continuous analog input acquisition, which means that after trigger is received (point 2), the board will start to generate hardware clock with frequency you specify as "rate"
4) with each rising edge of that hardware clock, the measurement is taken, and stored into buffer of driver.
5) DAQmx read will try to read "number of samples per channel" number of samples each time is called - and if there is not enough measurement stored in buffer (step 4), then DAQmx read will wait until DAQ card will measure reaquested number of samples (or timeout occurs before requested number of samples has been acquired)
6) DAQmx read will be then called 1000 times - so totaly you will read 1000 * "number of samples per channel" number of samples.
You do not have to be worried about speed of the loop. In fact, if you need to read just 1000 samples, with 1kS/s, then you can remove for loop and you can change measurement mode from continuous to finite samples, and specify number of samples to read to be 1000. You will read them all properly. I recomend you to read User Manual for your DAQ device - lets say M Series User Manual.
I hope it is clear now.
regards,
stefo -
How to build an array using incoming stream of data?
I am programming in VBAI but use LV as my Inspection Interface. The VBAI program will go in a finite loop (1000x) and feed the numeric indicator with dbl vaule in the front panel of LV. So the dbl value is in sequence.
In LV, how do I build an array (index 0 - 999) with this stream of data?
Solved!
Go to Solution.altenbach wrote:
You can eliminate that useless FOR loop by using a globally initialized feedback node instead of a shift register.
You also need a mechanism to reset the shift register contents.
What are you doing up at this hour? Don't you sleep? Per your advice. The OP will still need to code in an initial state for the array.
Reese, (former CLAD, future CLD)
Some people call me the Space Cowboy!
Some call me the gangster of love.
Some people call me MoReese!
...I'm right here baby, right here, right here, right here at home -
How do I use For loop to check each node and import them to a new document?
In my function I would like to use a For loop to get all the statutes (xml) inside the object
objXmlBcaResponseDoc. In my case there are 2 statutes. I would like the output to look like the one I have posted here below. I am not sure how to do the For loop. The commented For loop is from another function but it is not working inside
this function.
The output is added into the **objXmlResponseMessageDoc** object and should look like this with 2 statutes (ns1:Statute) and a totalCount=2
<BasicSearchQueryResponse xmlns="http://crimnet.state.mn.us/mnjustice/statute/service/4.0">
<StatutesXml>
<Statutes runType="Request" runDateTime="2015-03-17T10:23:04" totalCount="2">
<ns1:Statute xmlns:ns1="http://crimnet.state.mn.us/mnjustice/statute/messages/4.0">
<StatuteId xmlns="http://crimnet.state.mn.us/mnjustice/statute/4.0">8471</StatuteId>
<Chapter xmlns="http://crimnet.state.mn.us/mnjustice/statute/4.0">60</Chapter>
<Section xmlns="http://crimnet.state.mn.us/mnjustice/statute/4.0">55</Section>
<Subdivision xmlns="http://crimnet.state.mn.us/mnjustice/statute/4.0"/>
</ns1:Statute>
<ns1:Statute>
<StatuteId xmlns="http://crimnet.state.mn.us/mnjustice/statute/4.0">9722</StatuteId>
<Chapter xmlns="http://crimnet.state.mn.us/mnjustice/statute/4.0">90</Chapter>
<Section xmlns="http://crimnet.state.mn.us/mnjustice/statute/4.0">25</Section>
<Subdivision xsi:nil="true" xmlns="http://crimnet.state.mn.us/mnjustice/statute/4.0"/>
</ns1:Statute>
</Statutes>
</StatutesXml>
</BasicSearchQueryResponse>
My xml doc is found inside objXmlBcaResponseDoc Here is xml inside
objXmlBcaResponseDoc object
<BasicSearchQueryResponse xmlns="http://crimnet.state.mn.us/mnjustice/statute/service/4.0">
<ns1:Statutes xmlns:ns1="http://crimnet.state.mn.us/mnjustice/statute/messages/4.0">
<ns1:Statute>
<StatuteId xmlns="http://crimnet.state.mn.us/mnjustice/statute/4.0">8471</StatuteId>
<Chapter xmlns="http://crimnet.state.mn.us/mnjustice/statute/4.0">60</Chapter>
<Section xmlns="http://crimnet.state.mn.us/mnjustice/statute/4.0">55</Section>
<Subdivision xsi:nil="true" xmlns="http://crimnet.state.mn.us/mnjustice/statute/4.0"/>
</ns1:Statute>
<ns1:Statute>
<StatuteId xmlns="http://crimnet.state.mn.us/mnjustice/statute/4.0">9722</StatuteId>
<Chapter xmlns="http://crimnet.state.mn.us/mnjustice/statute/4.0">90</Chapter>
<Section xmlns="http://crimnet.state.mn.us/mnjustice/statute/4.0">25</Section>
<Subdivision xsi:nil="true" xmlns="http://crimnet.state.mn.us/mnjustice/statute/4.0"/>
</ns1:Statute>
</BasicSearchQueryResponse>
Here is my function
Function GetStatutesByChapter(ByVal aobjXmlGetStatuteRequestNode As XmlNode, ByVal aobjXMLNameSpaceManager As XmlNamespaceManager, ByVal aobjBroker As ServiceCatalog.Library.v4.Broker) As XmlDocument
Dim objXmlRequestMessageDoc As XmlDocument
Dim objXmlResponseMessageDoc As XmlDocument
Dim intCount As Integer
aobjBroker.PostMessageWarehouseInformationalMessage("Chapter found.", 1)
objXmlResponseMessageDoc = New XmlDocument
'Add the first element into the document GetStatuteByChapter with its namespace
objXmlResponseMessageDoc.AppendChild(objXmlResponseMessageDoc.CreateElement("BasicSearchQueryResponse", "http://crimnet.state.mn.us/mnjustice/statute/service/4.0"))
'Build the initial response document
objXmlResponseMessageDoc = New XmlDocument
'Add the first element into the document GetStatutesResponse with its namespace
objXmlResponseMessageDoc.AppendChild(objXmlResponseMessageDoc.CreateElement("GetStatutesResponse", "http://www.courts.state.mn.us/StatuteService/1.0"))
'Add a child node to the GetStatutesResponse node
objXmlResponseMessageDoc.SelectSingleNode("ss:GetStatutesResponse", aobjXMLNameSpaceManager).AppendChild(objXmlResponseMessageDoc.CreateElement("StatutesXml", "http://www.courts.state.mn.us/StatuteService/1.0"))
objXmlResponseMessageDoc.SelectSingleNode("ss:GetStatutesResponse/ss:StatutesXml", aobjXMLNameSpaceManager).AppendChild(objXmlResponseMessageDoc.CreateElement("Statutes", "http://www.courts.state.mn.us/StatuteService/1.0"))
'Convert the node Statutes into an element and set the runType attribute (runType="Request") by adding it's value Request
CType(objXmlResponseMessageDoc.SelectSingleNode("ss:GetStatutesResponse/ss:StatutesXml/ss:Statutes", aobjXMLNameSpaceManager), System.Xml.XmlElement).SetAttribute("runType", "Request")
'Convert the node Statutes into an element and set the attribute (runDateTime="2015-03-05T10:29:40") by adding it
CType(objXmlResponseMessageDoc.SelectSingleNode("ss:GetStatutesResponse/ss:StatutesXml/ss:Statutes", aobjXMLNameSpaceManager), System.Xml.XmlElement).SetAttribute("runDateTime", Format(Now, "yyyy-MM-ddTHH:mm:ss"))
'Create the BCA request message
objXmlRequestMessageDoc = New XmlDocument
objXmlRequestMessageDoc.AppendChild(objXmlRequestMessageDoc.CreateElement("ns:BasicSearchQueryRequest", aobjXMLNameSpaceManager.LookupNamespace("ns")))
objXmlRequestMessageDoc.SelectSingleNode("ns:BasicSearchQueryRequest", aobjXMLNameSpaceManager).AppendChild(objXmlRequestMessageDoc.CreateElement("ns1:BasicSearchCriteria", aobjXMLNameSpaceManager.LookupNamespace("ns1")))
objXmlRequestMessageDoc.SelectSingleNode("ns:BasicSearchQueryRequest/ns1:BasicSearchCriteria", aobjXMLNameSpaceManager).AppendChild(objXmlRequestMessageDoc.CreateElement("ns2:Chapter", aobjXMLNameSpaceManager.LookupNamespace("st")))
objXmlRequestMessageDoc.SelectSingleNode("ns:BasicSearchQueryRequest/ns1:BasicSearchCriteria", aobjXMLNameSpaceManager).AppendChild(objXmlRequestMessageDoc.CreateElement("ns2:Section", aobjXMLNameSpaceManager.LookupNamespace("st")))
objXmlRequestMessageDoc.SelectSingleNode("ns:BasicSearchQueryRequest/ns1:BasicSearchCriteria", aobjXMLNameSpaceManager).AppendChild(objXmlRequestMessageDoc.CreateElement("ns2:Subdivision", aobjXMLNameSpaceManager.LookupNamespace("st")))
'Uncomment last working section below
objXmlRequestMessageDoc.DocumentElement.SelectSingleNode("ns1:BasicSearchCriteria/st:Chapter", aobjXMLNameSpaceManager).InnerText = aobjXmlGetStatuteRequestNode.SelectSingleNode("ss:Statute/ss:Chapter", aobjXMLNameSpaceManager).InnerText
'check if there is a section and or subdivision if it is there then set the value
If Not (aobjXmlGetStatuteRequestNode.SelectSingleNode("ss:Statute/ss:Section", aobjXMLNameSpaceManager) Is Nothing) Then
objXmlRequestMessageDoc.DocumentElement.SelectSingleNode("ns1:BasicSearchCriteria/st:Section", aobjXMLNameSpaceManager).InnerText = aobjXmlGetStatuteRequestNode.SelectSingleNode("ss:Statute/ss:Section", aobjXMLNameSpaceManager).InnerText
End If
If Not (aobjXmlGetStatuteRequestNode.SelectSingleNode("ss:Statute/ss:Subdivision", aobjXMLNameSpaceManager) Is Nothing) Then
objXmlRequestMessageDoc.DocumentElement.SelectSingleNode("ns1:BasicSearchCriteria/st:Subdivision", aobjXMLNameSpaceManager).InnerText = aobjXmlGetStatuteRequestNode.SelectSingleNode("ss:Statute/ss:Subdivision", aobjXMLNameSpaceManager).InnerText
End If
'check if there is a section and or subdivision if it is there then set the value
aobjBroker.PostMessageWarehouseSnapshot(objXmlRequestMessageDoc.OuterXml, "Request Message", 1)
'Call the BCA service
intCount = 0
'This is where I want to use a For loop to check for the statutes found using the Chapter
'Loop through each Id
'For Each objXmlStatuteIdNode In aobjXmlGetStatuteRequestNode.SelectNodes("ss:Statute/ss:StatuteId/ss:Id[string-length(.)>0]", aobjXMLNameSpaceManager)
'Create the BCA request message
'objXmlRequestMessageDoc = New XmlDocument
'objXmlRequestMessageDoc.AppendChild(objXmlRequestMessageDoc.CreateElement("ns:SingleStatuteRequest", aobjXMLNameSpaceManager.LookupNamespace("ns")))
'objXmlRequestMessageDoc.SelectSingleNode("ns:SingleStatuteRequest", aobjXMLNameSpaceManager).AppendChild(objXmlRequestMessageDoc.CreateElement("ns:statuteId", aobjXMLNameSpaceManager.LookupNamespace("ns")))
'objXmlRequestMessageDoc.DocumentElement.SelectSingleNode("ns:statuteId", aobjXMLNameSpaceManager).InnerText = objXmlStatuteIdNode.InnerText aobjBroker.PostMessageWarehouseSnapshot(objXmlRequestMessageDoc.OuterXml, "Request Message", 1)
'intCount = intCount + 1
'objXmlBcaResponseDoc = New XmlDocument
'File name is BCASearchQueryResponse.xml
'objXmlBcaResponseDoc.Load("\\j00000swebint\mscapps\deve\appfiles\temp\BCASearchQueryResponse.xml")
'objXmlResponseMessageDoc.DocumentElement.SelectSingleNode("ss:StatutesXml/ss:Statutes", aobjXMLNameSpaceManager).AppendChild(objXmlResponseMessageDoc.ImportNode(objXmlBcaResponseDoc.DocumentElement.SelectSingleNode("ns1:Statute", aobjXMLNameSpaceManager), True))
'Next
'Count how many Statute nodes found
CType(objXmlResponseMessageDoc.SelectSingleNode("ss:BasicSearchQueryResponse/ss:StatutesXml/ss:Statutes", aobjXMLNameSpaceManager), System.Xml.XmlElement).SetAttribute("totalCount", CStr(intCount))
Return objXmlResponseMessageDoc
End FunctionWhat is XPath and what does it do that you're impressed with?
Yes, I see your link, but give me the abbreviated elevator speech on what it is please. It has me curious.
http://searchsoa.techtarget.com/definition/XPath
http://www.techrepublic.com/article/easily-navigate-xml-with-vbnet-and-xpath/
http://www.techrepublic.com/article/using-xpath-string-functions-in-xslt-templates/
The way that all this is being used by me now on a project is the HTML controls on the screen are built by XML not only about what the controls are and their attributes, but the data from from the database is XML too with both going through transfermations
vis XSLT as the HTML controls are built dynamically by XML data for the controls and the XML database data with decision being made in the transfermation on the fly.
There are many usages with Xpath not just this one I am talking about with Xpath. You can do the same kind of thing with XAML and WPF forms as they are dynamically built. But it goes well beyond what I am talking about and the usage of Xpath. Xpath 3.0
is the latest version.
http://www.balisage.net/Proceedings/vol10/html/Novatchev01/BalisageVol10-Novatchev01.html
Thanks - I'll look into that at some point.
Still lost in code, just at a little higher level. -
Remove text field from Array via for loop
Hi,
i have a problem to remove text fields added via for loop.
That im doing is, via for loop im dynamically creating menu with 10 buttons.
Each button contain, dynamically created, background (shape) and text field.
And everything is fine.
But when im try to remove text fields then i got this error:
- Im using button to remove text fields - lang_btn.addEventListener(MouseEvent.CLICK, clickHandler);
ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller.
at flash.display::DisplayObjectContainer/removeChild()
at Loading_Img_fla::MainTimeline/xmlLoaded()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at flash.net::URLLoader/onComplete()
In the script bellow marked with red is what should remove text fields from an Array, instead giving me error.
Here is my script
// Create for loop
for (var i:int = 0; i < 10; i++)
for each (xml in listItems)
if (i == xml.attribute("Id"))
// Add MovieClip to stage to hold the data
addChild(lmHolder);
lmHolder.x = 0;
lmHolder.y = 0;
// Create new MovieClip to hold buttons
lmButtonsMCArray[i] = new MovieClip();
lmButtonsMCArray[i].buttonMode = true;
lmButtonsMCArray[i].mouseChildren = false;
lmButtonsMCArray[i].x = 20;
lmButtonsMCArray[i].y = 20 + btCount * buttonSpace;
// Add each button MovieClip to lmHolder MovieClip
lmHolder.addChild(lmButtonsMCArray[i]);
// Create Background to buttons
lmButtonsArray[i] = new Shape();
lmButtonsArray[i].graphics.beginFill(lmBgColor0, 1);
lmButtonsArray[i].graphics.drawRect(0, 0, 230, 85);
lmButtonsArray[i].x = 0;
lmButtonsArray[i].y = 0;
// <<-- Add Background shape to the buttons MovieClips
lmButtonsMCArray[i].addChild(lmButtonsArray[i]);
// Create a new array to preserve data from XML List
lmNameArrayEG = new Array();
lmNameArrayUS = new Array();
// Create local variable to hold
var lmTxtFieldContentUS:String;
var lmTxtFieldContentEG:String;
var lmTxtContent:String;
// If clicked button is EG then make array with Arabic text
// If clicked button is US then make array with English text
if (footer.lang_btn.langState == "EG")
for each (var leftMenuName:XML in egLanguageList)
lmNameArrayEG.push(leftMenuName);
lmTxtFieldContentEG = lmNameArrayEG[i];
lmTxtContent = lmTxtFieldContentEG;
else
for each (var leftMenuNameUS:XML in usLanguageList)
lmNameArrayUS.push(leftMenuNameUS);
lmTxtFieldContentUS = lmNameArrayUS[i];
lmTxtContent = lmTxtFieldContentUS;
// Setup new text field each time script is executed
lmTxtFieldsArray[i] = new TextField();
lmTxtFieldsArray[i].width = 110;
lmTxtFieldsArray[i].border = false;
lmTxtFieldsArray[i].wordWrap = true;
lmTxtFieldsArray[i].multiline = true;
lmTxtFieldsArray[i].selectable = false;
lmTxtFieldsArray[i].embedFonts = true;
lmTxtFieldsArray[i].antiAliasType = AntiAliasType.ADVANCED;
lmTxtFieldsArray[i].autoSize = TextFieldAutoSize.CENTER;
lmTxtFieldsArray[i].text = lmTxtContent.toUpperCase();
lmTxtFieldsArray[i].x = 10;
lmTxtFieldsArray[i].name = "lmTxtFieldName" + i;
// <<-- Add Text fields to the Movie Clip
lmButtonsMCArray[i].addChild(lmTxtFieldsArray[i]);
// If clicked button is EG then set Arabic text format, and make array with Arabic text fields
// If clicked button is US then set English text format, and make array with Egnlish text fields
if (footer.lang_btn.langState == "EG")
lmTxtFieldsArray[i].setTextFormat(txtFormat_lm_eg);
// Make array from text fields;
pushEgTFintoArray.push(lmTxtFieldsArray[i]);
else
lmTxtFieldsArray[i].setTextFormat(txtFormat_lm_us);
// Make array from text fields;
pushUsTFintoArray.push(lmTxtFieldsArray[i]);
// If clicked button is EG then loop thrue the for loop and remove English text fields from array
// If clicked button is EG then loop thrue the for loop and remove Arabic text fields from array
if (footer.lang_btn.langState == "EG")
for (var rNr_us:Number = 0; rNr_us < pushUsTFintoArray.length; rNr_us++)
//remove the text field array from the display
removeChild(pushUsTFintoArray[rNr_us]);
//clear the array
pushUsTFintoArray = [];
else
for (var rNr_eg:Number = 0; rNr_eg < pushEgTFintoArray.length; rNr_eg++)
//remove the text field array from the display
removeChild(pushEgTFintoArray[rNr_eg]);
//clear the array
pushEgTFintoArray = [];
btCount++;it looks like those tf's are children of lmButtonsMCArray[i], not the current scope. use:
if (footer.lang_btn.langState == "EG")
for (var rNr_us:Number = 0; rNr_us < pushUsTFintoArray.length; rNr_us++)
//remove the text field array from the display
lmButtonsMCArray[rNr_us].removeChild(pushUsTFintoArray[rNr_us]);
//clear the array
pushUsTFintoArray = [];
else
for (var rNr_eg:Number = 0; rNr_eg < pushEgTFintoArray.length; rNr_eg++)
//remove the text field array from the display
lmButtonsMCArray[rNr_eg].removeChild(pushEgTFintoArray[rNr_eg]);
//clear the array
pushEgTFintoArray = []; -
How to use for loops with Multiple Initializers and Incrementers
I found that my for loop is printing out wrong, because I am using two for loops. I have searched but all I can find out is you can't use multiple inializers and increments, does anyone know how to get around this? How would I use an array for this?
Thanks very much for your help.
import java.util.Random;
import java.util.Arrays;
/** Generate numnodes value for random integers in the range 0..499. */
public final class RandomInteger {
public static final void main(String... aArgs){
log("Generating 6 random integers in range 0..499.");
int numnodes = 6;
//Randomly generate a number between 0 and 499 for the x and y coordinates for the nodes
Random randomGenerator = new Random();
for (int x = 0; x < numnodes; ++x) {
int randomInt = randomGenerator.nextInt(500);
Random randomGenerator2 = new Random();
for (int y = 0;y < numnodes; ++y) {
int randomInt2 = randomGenerator2.nextInt(500);
log("Generated : " + randomInt + " " + randomInt2);
log("Done.");
}Sorry that code works, but I want to use both my x and y coordinates to get a random number from 0 to 499 in both of them, then I want to do some comparisons of the values, then return it to another function. As it stands now, I get the wrong results when I run it, as you can see at the bottom.
Thanks very much for your help. I have been stumped all mornign on this and have looked everywhere trying to find an example. I don't won't to use math random. I am on a tight deadline to finish and at the rate I am going, I will not complete it.
/** Generate numnodes value for random integers in
the range 0..499. */
public final class RandomInteger {
public static final void main(String... aArgs){
log("Generating 6 random integers in range
0..499.");
int numnodes = 6;
//Randomly generate a number between 0 and 499 for
the x and y coordinates for the nodes
Random randomGenerator = new Random();
for (int x = 0; x < numnodes; ++x) {
int randomInt = randomGenerator.nextInt(500);
Random randomGenerator2 = new Random();
for (int y = 0;y < numnodes; ++y) {
int randomInt2 = randomGenerator2.nextInt(500);
log("Generated : " + randomInt + " " + randomInt2);
log("Done.");
private static void log(String aMessage){
System.out.println(aMessage);
Output:
--------------------Configuration:
<Default>--------------------
Generating 6 random integers in range 0..499.
Generated : 98 254
Generated : 98 347
Generated : 98 359
Generated : 98 25
Generated : 98 277
Generated : 98 148
Generated : 416 401
Generated : 416 165
Generated : 416 354
Generated : 416 169
Generated : 416 144
Generated : 416 354
Generated : 295 158
Generated : 295 138
Generated : 295 349
Generated : 295 324
Generated : 295 18
Generated : 295 193
Generated : 197 451
Generated : 197 416
Generated : 197 480
Generated : 197 33
Generated : 197 490
Generated : 197 494
Generated : 324 412
Generated : 324 490
Generated : 324 213
Generated : 324 386
Generated : 324 467
Generated : 324 163
Generated : 379 180
Generated : 379 446
Generated : 379 314
Generated : 379 52
Generated : 379 113
Generated : 379 271
Done.
Process completed. -
I want to build an array using the data that I get through the serial port
I am reading data through the serial port, but I want to buffer these data. I have seen a function, but i think that i can use this if I am reading data from I/O intrument, so I don´t how can I fill an array, with the data that I am reading!!!
Thank you!!!I'll hazard a guess that you are reading data with VISA as a string. Then you want to convert that (probably with Scan From String) into a number. Then, you want to collect those numbers into an array.
We don't really have enough information to tell you the best way to do this. Here are some ideas.
If you are reading all the numbers from the instrument at once (e.g., a waveform from a scope), you might consider using "Spreadsheet string to array". Most scopes return the data as ASCII with commas between the values, so you'd wire a "," to the "delimiter" input of the "Spreadsheet string to array" function.
If, however, the instrument is returning a single point at a time, there are more questions. Do you want to do this continuously, or do you want t
o collect only a certain number of data points, and then process them as a block?
If the latter, then you'd just acquire each data point, convert it to a number, and then use output indexing on the for loop to create your array.
If the former, then you may want to store the data in a queue, and read it from the queue elsewhere in your program.
If you let us know what you want to do, we can probably provide more precise help.
Brian
Maybe you are looking for
-
OVM local drives not seen - SAS drive issue
OVM 3.1.1 Dell R510 12 SAS Drives in Raid 5 I'm trying to set up an r510 for a test env, and after reading through the forums, I found that it says SAS drives can't be used. 6.4.3. Local SAS Hard Disks Not Supported for Storage But that seems crazy.
-
Editing in Photoshop Elements 4.0 from Iphoto
I want to edit photos in PSE 4.0. Iphoto help says for me to choose Preferences, under edit photo, select "in application". I did so and selected PSE 4.0. In doing so, a secondary screen opens and wants me to select an internal folder of PSE, which c
-
when i start firefox i get a message that asks if i want to install an update, then it says it cannot install and asks me to close an other firefox progams and try again. there are no other firfox program runing and the the loops starts over.
-
I would like to set up a tooltip popup that displays alternate text on an image rollover. I am using Dreamweaver CC. Used to be a Spry widget, but those options seem to be gone. Not looking for anything elaborate, just a simple tooltip message box.
-
Software Update Availability for Lumia 710
When updates are available for lumia 710 Moderator's notes: Appropriate subject provided