If I have two tables Table1 and Table2, how can I insert one item of Table2 into Table1 after every 4 items
T1 T2
1 A
2 B
3 C
4 D
... ...
New Table1
1
2
3
4
A
...
Mark
Professional Software Development Tools
If I have two tables Table1 and Table2, how can I insert one item of Table2 into Table1 after every 4 items
T1 T2
1 A
2 B
3 C
4 D
... ...
New Table1
1
2
3
4
A
...
Mark
Someone will probably come up with a more stream-lined way of doing this, but for a quick down and dirty, this should work.
Code:--Initiate tables tblNum={"1","2","3","4"} tblAlph={"A","B","C","D"} --Initiate base variables blnDone = false nInsertPos = 5 nCtr = 0 --loop until we say we're done while blnDone == false do if Table.Count(tblNum) >= (nInsertPos -1) then nCtr = nCtr + 1 if Table.Count(tblAlph) >= nCtr then Table.Insert(tblNum, nInsertPos, tblAlph[nCtr]) nInsertPos = nInsertPos + 5 else blnDone = true end else blnDone = true end end
Last edited by Worm; 08-18-2004 at 08:44 AM.
This should work as well, not quick enough on the draw (code) to beat work. Need more coffee.
After posting this looks like a lot of code, the code that inserts your information from table two into the new table is this code:Code:--initialize tables --table 1 table1 = {}; for x = 1,20 do Table.Insert(table1, x, x); end t1display = "" for y = 1,Table.Count(table1) do t1display = t1display .." ".. table1[y] end Dialog.Message("Table1", t1display) --table two this uses the ascii decimal values to for A-E table2 = {}; for x = 65,69 do Table.Insert(table2, x - 64, String.Char(x)); end t2display = ""; for t2i, t2v in table2 do t2display = t2display .." ".. t2v; end Dialog.Message("Table2", t2display); --Check that the tables exist. if table1 and table2 then --create a new table and copy the contents from the table1 to the new table newtable = {}; for index,value in table1 do Table.Insert(newtable, index, value); end --This is what inserts the contents of table2 into the fourth position in the newtable. for i,v in table2 do Table.Insert(newtable, (4*i)+i, v) end --display for the new table tndisplay = ""; for tni, tnv in newtable do tndisplay = tndisplay .." ".. tnv; end Dialog.Message("NewTable", tndisplay); else Dialog.Message("Notice", "Your tables are not complete. Click the two table buttons to create those tables first"); end
I hope that helps.Code:for i,v in table2 do Table.Insert(newtable, (4*i)+i, v) end
Last edited by TJ_Tigger; 08-18-2004 at 09:20 AM.
TJ-Tigger
"A common mistake that people make when trying to design something completely foolproof was to underestimate the ingenuity of complete fools."
"Draco dormiens nunquam titillandus."
Map of IR Forum Users - IR Project CodeViewer - Online Help - TiggTV - QuizEngine
Thats just what I was looking for.
If I create a table from one listbox and a second from another listbox how can I use the example above to fill in the third listbox with the combined data?
after you get the table set to the values you want, then do something like this.
Code:--clear the listbox ListBox.DeleteItem("Listbox3", LB_ALLITEMS) --add the elements from the table to the listbox for n, Table.Count(tblNum) do ListBox.AddItem("Listbox3", tblNum[n]) endOriginally Posted by markstaylor
When I use that example I get compiling error so I changed it to
for n, v in newtable do
ListBox.AddItem("Listbox1", newtable[n]);
end
But I get a "Argument 2 must be of type String" error
Sorry, I typed that one out. There I go thinking I had the syntax down when I didn't. I didn't have n=1 in the for statement
Code:--clear the listbox ListBox.DeleteItem("Listbox3", LB_ALLITEMS) --add the elements from the table to the listbox for n=1, Table.Count(tblNum) do ListBox.AddItem("Listbox3", tblNum[n]) end