Mailing List Archive: 49091 messages
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

[REBOL] inserting blocks in nested blocks (was making objects from block content

From: moeller_thorsten::gmx::de at: 27-Jun-2002 15:41

Hi, first, thanks to Gregg for his working sample for my question. trying it out i ran out of global variable space. Searching in escribe brought up some threads on this, but no solution. So, am going to do it with blocks and nested blocks. I made a large container block to put all the records in. Every record starts with an record id, followed by a nested block containing up to several blocks with date-informations, followed by three other values. sample!! allorders:[ "3465436" [[["1.6.2002" "20:00:00" "1,00" "98,10"]] "1,00" "98,10" 3004 ] ] now i have another record with the same id like this, read from a file: 3465436;20.06.2002 15:00:00;1,00;98,10;3004 if there is already a record in "all" i just want to add a new block like this ["20.06.2002" "15:00:00" "1,00" "98,10"] to the nested block in the existing record and add 1,00 to the existing 1,00 and the 98,10 to the existing 98,10. the final record should look like this: 3465436 [[["1.6.2002" "20:00:00" "1,00" "98,10"]["20.06.2002" "15:00:00" 1,00 "98,10"]] "2,00" "196,20" "3004"] what happend is, for some reason i cannot find out, that the added block overrides the existing one and is inserted a second time and the values are not added. so that the result is: 3465436 [[["20.06.2002" "15:00:00" "1,00" "98,10"]["20.06.2002" "15:00:00" 1,00 "98,10"]] "1,00" "98,10" "3004"] Here is the code Rebol [] orders: read/lines %AusgabeCSV.txt if exists? %allorders.txt [delete %allorders.txt] allorders: [] clear allorders dates: [] date:[] foreach full orders [ line: parse full ";" head allorders clear dates clear date either find allorders pick line 1 [ insert date pick line 5 insert date pick line 4 insert date pick line 3 insert date pick line 2 insert/only dates date sec: second allorders append/only sec/1 reduce dates sec/2: (to-integer sec/2) + (to-integer pick line 4) sec/3: (to-money sec/3) + (to-money pick line 5) ][ nom: pick line 1 insert date pick line 5 insert date pick line 4 insert date pick line 3 insert date pick line 2 insert/only dates date totquantity: pick line 4 totamount: pick line 5 info: pick line 6 insert/only allorders to-block reduce [:dates :totquantity :totamount :info] insert allorders nom ] ] print "Finished" Any ideas Thorsten