Hello.
It seams to me that i monopolize the forum here.
Please advice if it borrow you, i will stop directly... ;-)
I still fight with cmem and trust me, it is a hard battle. Mainly because the debugger gives me very few infos and because, if i do not use cmem, all examples are working perfectly, the debugger is happy and do not gives me any warning, only lot of "OK" ...
So difficult to understand why LCL+cmem do not like uos library.
I follow the advices of Tomas and the debugger gives me a (very) few more infos. One is that:
#8 0x0000000000426ae6 in fpc_ansistr_decr_ref ()
So i isolate the only function who gives as result string (and is working without cmem):
function uos_GetInfoDeviceStr() : String ;
var
myresult : string;
begin
...
result := myresult;
end;
I changed with
function uos_GetInfoDeviceStr() : PChar ;
var
myresult : string;
begin
...
result := @myresult;
end;
And that is ok, no more crash and debugger is happy...
But now, when i try to retrieve the result with, for example :
procedure getinfo ;
var
mystring : string;
begin
mystring := uos_GetInfoDeviceStr();
end;
I get:
=> mystring = '' (empty string).
How must i do to retreive the data of Pchar (the result of uos_GetInfoDeviceStr()) ?
PS : It seams that cmem prefers pointers as result, so, maybe i have to change all functions to give pointers as result (yes/no?).
Many thanks.