World: r3wp
[Core] Discuss core issues
older newer | first last |
Guest 8-Feb-2005 [419x2] | wow, fast reply. thx sunanda. last question: what syntax I need to access e.g. object array no. 5 or 8 to write values like blk/a: recordset ? |
I have a object with - name, street, and country and a database with 50 records. I would like to store the records into a dynamic object array for later reading... | |
Anton 8-Feb-2005 [421x3] | equivalent to above, but a bit faster in execution (maybe you have a large block): |
blk: make block! 10 loop 10 [insert tail blk make object! [name: copy "<name>"]] ; COPY so all objects don't share the same string | |
objects: copy [] person: context [name: copy "<name>" address: copy "<address>"] get-record-item: func [n field][copy ""] ; <--- you have to make this function look into the database repeat n 50 [append objects make person [name: get-record-item n 'name address: get-record-item n 'address]] | |
Guest 8-Feb-2005 [424x2] | thank you anton. this is the code I was looking for :-)) |
oups, how do I read (after appending) record no. 45 ? person/name (45) ? | |
Anton 8-Feb-2005 [426x3] | objects/45/name |
record-num: 45 objects/:record-num/name ;== "aristotle" | |
That is putting a GET-WORD! in the path. (eg. :record-num ) | |
Guest 8-Feb-2005 [429] | yes, that's it ! running smoth and fast... thank you very much anton. |
Anton 8-Feb-2005 [430] | no problem at all. |
JaimeVargas 14-Feb-2005 [431x5] | ;Isn't this a bug? >> parse #{000102} [#"^@" #"^A" #"^B"] == false >> parse #{000102} ["^@^A^B"] == true |
>> parse #{000102} [#"^@" #"^A" #"^B"] == false >> parse #{000102} ["^@^A^B"] == true | |
I think AltMe is escaping some characters... I hope you guys can copy it and see the actual problem. | |
;The problem doesn't seem to exist for printable chars. >> parse #{313233} [#"1" #"2" #"3"] == true >> parse #{313233} ["123"] == true | |
;Ah. Never mind I forgot about parse/all >> parse/all #{000102} [#"^@" #"^A" #"^B"] == true | |
Ladislav 16-Feb-2005 [436x2] | is there a way how to "simplify" this? (queue is a list!) if any [error? try [tail? queue] tail? queue] [ queue: head queue ; start at a "meaningful" position in the queue ] |
(I would say it is an implementation quirk) | |
Dockimbel 16-Feb-2005 [438] | If queue is a list!, why would [tail? queue] fail ? Can 'queue refer to other kind of value than a list! value ? |
Chris 16-Feb-2005 [439] | all [series? queue tail? queue queue: head queue] |
Ladislav 16-Feb-2005 [440] | >> queue: make list! [1 2] == make list! [1 2] >> remove queue == make list! [2] >> tail? queue ** Script Error: Out of range or past end ** Near: tail? queue |
Chris 16-Feb-2005 [441x4] | all [attempt [tail? queue] queue: head queue] |
But looks like there are greater problems... | |
queue: remove queue -- would fix it too... | |
>> queue: make list! [1 2] == make list! [1 2] >> queue: remove queue == make list! [2] >> all [tail? queue queue: head queue] == none | |
Ladislav 17-Feb-2005 [445] | the last one seems to be the best |
Louis 22-Feb-2005 [446] | Is there a command to give the path to the presently used user.r file? |
Anton 22-Feb-2005 [447] | One of these will probably help you: >> system/options/path == %/D/Anton/Dev/Rebol/View/ >> system/options/home == %/D/Anton/Dev/Rebol/View/ >> system/options/boot == %/D/Anton/Dev/Rebol/View/rebview1257031e.exe |
Louis 22-Feb-2005 [448x3] | Thanks, Anton. Rebol seems to be looking for user.r in system/options/home or system/options/path. It would seem to be more practical for it to look in system/options/boot. |
But I guess each directory might need a different user.r. | |
I trying to get set up to use your dir-utils.r. Thanks for your good work on this. | |
Anton 22-Feb-2005 [451] | Louis, I think: system/options/path is the current directory of the shell environment where rebol was started from. system/options/home is the rebol starting directory, where it looks for user.r etc. In WinXP this value is taken from the registry at HKCU\Software\Rebol\View\HOME, but only for full release versions (like Rebol/View 1.2.1.3.1). I imagine there is a HOME environment var set in *nix. |
DideC 22-Feb-2005 [452] | REBOL_HOME afaik |
Geomol 23-Feb-2005 [453] | Does REBOL miss a way to go up one level of blocks within blocks? Example: >> blk: [[a b c] [d e f]] == [[a b c] [d e f]] >> p: first blk == [a b c] Now I would like to have p go up one level, so I can continue to the next block (the [d e f] block) within blk. Using blk to do it is not a solution, because we could have blocks within blocks within blocks ... to any level. What about a parent function like: >> p: parent p |
DideC 23-Feb-2005 [454] | It require bidirectinnal pointer: - parent -> child (we have that : parent/child-index) - child -> parent (we DON'T have that !) You have to hold the reference yourself. |
Volker 23-Feb-2005 [455] | you can put the same block in two others, which one is parent? |
Sunanda 23-Feb-2005 [456] | Not really possible without an extra data structure. Why not simply make the parent the 1st entry in the block? >> blk: copy [] == [] >> append/only blk blk == [[...]] >> append blk "a" == [[...] "a"] (One drawback is that this sort of recursive structure cannoy easily be molded and later loaded_ >> |
DideC 23-Feb-2005 [457] | Use a block and Push reference to the parent when you go into the child. Then Pop the reference when you want to go up one level. |
Geomol 23-Feb-2005 [458] | Volker is right! Which one is the parent? Ergo we can't have a parent function. And then again, we have to use a trick, where we store the block at any level. (You other guys are right too, and I think the actual design is the best way, I just have to keep in mind, why it is like this.) :-) |
Chris 23-Feb-2005 [459] | DideC, do you have an example? I've seen the terms 'push and 'pop before, but have not seen a comprehensive example of it... |
DideC 23-Feb-2005 [460] | There was a discussion about stack implementation the 27-jan in this group. Go up, there is the code from Robert and others |
Chris 23-Feb-2005 [461] | Thanks, missed that... |
Geomol 23-Feb-2005 [462x3] | I find this a bit strange and problematic: >> blk: [/] == [/] >> type? blk/1 == word! >> parse blk [/] == false How do I parse a slash within a block? |
Answer: parse [/] [set w word!] Sorry to bother you. ;-) | |
Well, I'm not 100% satisfied. Look at these: >> parse [a] ['a] == true >> parse [/] ['/] ** Syntax Error: Invalid word-lit -- ' ** Near: (line 1) parse [/] ['/] Shouldn't '/ be a valid lit-word? | |
Pekr 23-Feb-2005 [465] | imo Rebol is so free form, that you imo can find lot of such inconsistencies here ... |
Chris 23-Feb-2005 [466] | >> slash: to-lit-word "/" == '/ >> parse [/] [slash] == true |
Geomol 23-Feb-2005 [467] | Thank you very much! :-) |
Anton 23-Feb-2005 [468] | Careful, by default: >> slash == #"/" |
older newer | first last |