World: r3wp
[SDK]
older newer | first last |
[unknown: 5] 24-Mar-2006 [462] | It was a strange problem I think. I think I had a pro key and an sdk key - that is my only explaination for the problem because Cindy sent me a copy of my original SDK download and that key worked on the newer one so I think I may have been using the wrong key file. |
Louis 28-Mar-2006 [463] | The main problem I have with the SDK is that it makes it harder to find bugs. Does anyone have any idea what is causing this error message: ** Script Error: bind expected known-word argument of type: word ** Near: ctx-text: context bind ctx-text system/view ** Press enter to quit... |
Graham 28-Mar-2006 [464] | you can optionally output your prerebol source and run that. then no question of encap being involved. |
Gabriele 29-Mar-2006 [465] | louis, my guess is that the encap version you are running is older than the version that code is expecting. (bind allowing objects is a rather new thing) |
BrianH 10-Apr-2006 [466x3] | JeffM wrote in Core: Can REBOL/SDK define functions that will be called from C and passed to a C function? For example: c-logger: make routine! [ "Define the callback function for error tracking." logger: [string!] "using string! since a function ptr is just a pointer" return: [integer!] ] my-lib "C_Logger" rebol-logger: func [s] [ print s ] c-logger :rebol-logger |
; Try this: c-logger: make routine! [ "Define the callback function for error tracking." logger: [callback! [string!]] ; Here is the fix return: [integer!] ] my-lib "C_Logger" rebol-logger: func [s] [ print s ] c-logger :rebol-logger | |
Be careful though: The current implementation of callbacks in REBOL limits you to defining 16 per REBOL process. I'm not sure whether it is the making of the routine or the calling of the routine that establishes the callback though, so test to be sure. Most scripts I've seen use callbacks for logging, like your example, and so only call the routine once. Once the callback is established, there shouldn't be any limitation to the number of times the C code can call the REBOL function, in theory. | |
Anton 10-Apr-2006 [469] | The rebol function must complete before the C function tries to call it again - or there will be fireworks. Even a short rebol function can take 40ms to complete (for example), and if the C function tries to call it every 20ms that will stuff up the rebol interpreter. |
JeffM 11-Apr-2006 [470x3] | okay. this is good to know. thanks, guys. something else i couldn't find in the documentation was a method of getting a values returned by a pointer. for example, void get_value(int field, float *value); In this case, "value" is an output parameter. Does REBOL have a method of correctly passing a buffer and having it get filled in? |
I've already tried the following: foo: 16#{00000000} C_get_pointer: make routine! [ "Returns pointer to structure." dummy [string!] "Pass 'foo' here" return: [integer!] ] my-lib "c_get_pointer" foo: 16#{00000000} I know this is a trivial example. In this one, calling c_get_pointer with foo does in fact fill foo in with 4 bytes of data (presumably the correct address), but all calls to other functions which make use of that pointer crash. I can only assume that the pointer is wrong (byte swapped perhaps) or that I'm doing something not quite right? | |
(ignore the second foo: 16#{00000000} -- it was a pasting error | |
BrianH 11-Apr-2006 [473] | ; Try this C_get_pointer: make routine! [ "Returns pointer to structure." ip [struct! [[integer!]]] "Pass 'foo' here" ] my-lib "c_get_pointer" foo: make struct! [val [integer!]] none C_get_pointer foo foo/val |
JeffM 11-Apr-2006 [474] | That's working well. Thanks |
AndrewL 18-Jun-2006 [475] | I've been reading the docs both for the preprocessor and for the newer include.r script but I'm a bit confused, I wonder if someone could help clear it up for me. Here's my situation. I have view and/or SDK installed on a PC and a script sitting on my desktop. This script needs one or more library scripts which are available from web servers. How do i write the start of the script so that I can do all of; 1) Double click and have it run in view 2) Run the preprocessor so that I have an all in one script ready to run/copy somewhere 3) Encap it by dragging and driopping it on encmdview.exe or similar I want to be able to do this without changing a single character of the script. I want to access the library files from a web server because here at work I often write scripts on various different servers and prefer to keep one copy of the libs centrally and not downloaded onto each machine. |
Gabriele 19-Jun-2006 [476x2] | one trick is to use something like: |
x: #do [1] either tuple? x [ ; script has been run directly do %include1.r do %include2.r ] [ ; script is being preprocessed/encapped #include %include1.r #include %include1.r ] | |
Anton 19-Jun-2006 [478] | don't you mean: either issue? x [... |
Gabriele 19-Jun-2006 [479x4] | about include files being on a web server, the official prebol does not support that; i think that Ladislav's INCLUDE does, and I have a patched prebol.r that does support including from urls too. |
Anton, of course i meant ISSUE?. sorry. | |
let me repeat it to avoid confusion: | |
x: #do [1] either issue? x [ ; script has been run directly do %include1.r do %include2.r ] [ ; script is being preprocessed/encapped #include %include1.r #include %include1.r ] | |
AndrewL 19-Jun-2006 [483] | Great, that works perfectly, as you said for local files.. I haven't managed to get include to work yet for remote files, is the patched prebol.r available somewhere? (your rebsite is down) |
Volker 19-Jun-2006 [484x2] | ; would this work? files: [#include %include1.r #include %include2.r] foreach files[if file? files/1[change files load files/1] do files |
at least tihis version is buggy.. | |
Ladislav 19-Jun-2006 [486x3] | I haven't managed to get include to work yet for remote files - interesting, what did you try? |
would this work? - how would you like it to work? | |
(#include is a preprocessor instruction, so it is being preprocessed usually) | |
Volker 19-Jun-2006 [489] | it read all filenames in the block and inlines them. after preprocessing there are no filenames, so it replaces nothing. without preprocessing there is all the files content. in both cases i can do it. |
Ladislav 19-Jun-2006 [490] | hmm, files/1 may be a file! even in case the source was preprocessed |
Volker 19-Jun-2006 [491] | eeks, another bug.. |
Ladislav 19-Jun-2006 [492] | ...and if won't be a file! in case the source wasn't preprocessed |
Volker 19-Jun-2006 [493x2] | and the 'change inserts multiple items. should change position. |
the äinclude would not, but the %include1.r would. | |
Ladislav 19-Jun-2006 [495x2] | did you read http://www.fm.tul.cz/~ladislav/rebol/include.html |
btw: foreach files [if file?...] is clearly not what you wanted it to be... | |
Volker 19-Jun-2006 [497x2] | i guess i trash that version completely :) |
the question was more aboutthe concepts than the implementation *whistle* | |
Ladislav 19-Jun-2006 [499] | so, did you read the above mentioned description? |
Volker 19-Jun-2006 [500x3] | Can your include also expand blocks? then this would work if not value? 'include[do 5ladislavs-include.r] include[ all the main code ] |
Not yet, thought its like prebol. sorry. | |
did now. | |
Ladislav 19-Jun-2006 [503] | Can your include expand blocks? - INCLUDE takes only FILE! or URL! argumenta |
Volker 19-Jun-2006 [504] | than my exapmle needs an extra file |
Ladislav 19-Jun-2006 [505] | it is easy to allow blocks, though, because I implemented this functionality anyway |
Volker 19-Jun-2006 [506x3] | when 'include is inbuild it is no problem. but if the main script must include to include something and want own content too, would help. |
; 'do of course.. rebol[] if not value? 'include[do %ladislavs-include.r] do include[ all the main code ] | |
no, then the include/link would be confused. | |
Ladislav 19-Jun-2006 [509x2] | I am using the mouse-click method when I want to INCLUDE something. Don't you want to describe how it can be done e.g. in Linux? |
(I mean whether you want to write a section describing how to do the same in Linux)? | |
Volker 19-Jun-2006 [511] | i would try a bash-script and do the same as with the windows-shortcut. |
older newer | first last |