Thanks. What happens if you do this instead?
(loop with ptr = (make-pointer :address result-ptr :type :unsigned-short) for index from 0 below (1- result-size) for char across string do (setf (dereference ptr :index index) (char-code char)) finally (loop for i from index to (1- result-size) do (setf (dereference ptr :index i) #\Null)))
(Can't test myself. I don't have a machine with FM on it anymore.)
On Sun, Dec 22, 2013 at 8:31 PM, Jens Teich info@jensteich.de wrote:
result-size is 256 always.
Am 22.12.13 13:40, schrieb Edi Weitz:
@Jens: At first sight, the code looks right to me - or I'm not seeing the forest for the trees. It could be that FileMaker (maybe only in a specific version or maybe only on the Mac?) ignores the terminating NUL character at the end of the string and expects us to fill the whole buffer? (Do you happen to know or can you figure out the value of RESULT-SIZE when the function is called?
@Russell: We're not as dumb as you might think. The mailing list information used to be correct and will be correct again. We're just having a transition phase in which some things are out of sync due to problems with the guy who maintained the common-lisp.net servers.
Cheers, Edi.
On Sun, Dec 22, 2013 at 12:49 PM, Jens Teich info@jensteich.de wrote:
-------- Original-Nachricht -------- Betreff: Re: Bug in RegExPlugin Datum: Sun, 22 Dec 2013 12:38:59 +0100 Von: Jens Teich info@jensteich.de An: Russell Watson russell@mrwatson.de, FM-Lisp+help@common-lisp.net
Hi Russel,
thanks for the bug report. This is a tough one (for me). The source of the problem seems to be here:
(Defun handle-get-string-message (which-string result-size result-ptr) "Handles `kFMXT_GetString' messages from FileMaker. WHICH-STRING is the ID for the information FileMaker wants to have, RESULT-PTR is where the answer string is supposed to be stored, and RESULT-SIZE is the maximal size of the result." (when-let (string (case which-string (#.+k-fmxt-name-str+ *plugin-name*) (#.+k-fmxt-app-config-str+ *plugin-help-text*) (#.+k-fmxt-options-str+ (create-options-string)))) #+:win32 (convert-to-foreign-string string :limit (1- result-size) :external-format :unicode :into (make-pointer :address result-ptr :type :wchar-t)) #-:win32 (loop with ptr = (make-pointer :address result-ptr :type :unsigned-short) for index from 0 below (1- result-size) for char across string do (setf (dereference ptr :index index) (char-code char)) finally (setf (dereference ptr :index index) #\Null))))
;; from fm-plugin-tools, file main.lisp
The variable *plugin-name* contains the string "RegExPlugin" and is 11 characters long.
On Win the problem does not occur so the problem is in the branch after #-:win32.
I played a bit with the name of the plugin. When I make it very long, more unwanted additional characters appear:
RegexPlugIn***********************************************************
********************************************* ￿￿篇ͨe;0.2.4;Disabled
Maybe the author of this code (Edi Weitz) reads this and can help or I will ask for help on the LispWorks mailing list.
~Jens
ps Russel: why do you use this old version of the plugin? I improved the plugin in the current version according to your input at the FileMaker Stammtisch some time ago. The RegP-Positions Function has two additional parameters now:
Positions ( regex ; target {; flags ; pairInnerDelimiter ; pairOuterDelimiter } )
Am 19.12.13 22:01, schrieb Russell Watson:
Hallo Jens / Lisp-developers / RegEx Plugin Entwickler,
OK - so this is the message in german:
ich habe bemerkt, dass unter fm12 liefert das RegExPlugin bei der Get( InstalledPlugins ) Funktion das folgende zurück
^
Der kleine Diamant am ende vom Pluginname scheint eine ASCII( 1 ) zu sein. Ich nehme an, dass das einen Fehler ist und es in dieser Stelle keine ASCII(1) sein soll.
Grüße
Russell Watson (aka MrWatson)
and here again in case you guys only speak english:
Hi,
I use the RegExp FileMaker Plugin, that is available from Jens Teichs website under the URL http://jensteich.de/wp-content/regex-plugin/RegexPlugIn.zip.
I noticed today, that the plugin returns an ASCII(1) character (the little diamond in the picture) in its reply to the FileMaker Get( InstalledPlugins ) function.
That I presume is a bug and an undesired character in the plugins string.
An (important) aside:
It is not explicitly clear from the combination of Jens Teichs website and the linked Common Lisp "mailing list Informartion" page (http://common-lisp.net/cgi-bin/mailman/listinfo/fm-lisp)
- if this is the correct email adress that I am writing to
- what the <listname> is of the mailing list for the RegExp plugin - is
it RegExp? is it FM-List*? is it something else? 3) which is the correct form of the emailadress: it is mentioned on thesss page if it is possible to just write to <listname>@common-lisp.net http://common-lisp.net
I hope that all helps.
Thanks for the Plugin.
Russell Watson (aka MrWatson)
- ...I have just noticed that fm-list is in the url, which PROBABLY
means that <listname>="fm-list" ... but it needs to be EXPLICIT in at least one of the pages ... otherwise you're only going to get emails from real nerds. ;-)