[fpc-pascal] Array as result in function.

silvioprog silvioprog at gmail.com
Sat Jan 21 01:06:10 CET 2017


On Fri, Jan 20, 2017 at 7:36 PM, fredvs <fiens at hotmail.com> wrote:

> Re-hello.
>
> Ok, thanks Silvio, I will take this one from your advice, it works like
> charm:
>
> type
>   TOggOpusFile = THandle;
>

Hm... you should keep the same C data types. :-) I took a look at
`OggOpusFile` type, it is a struct:

https://github.com/gcp/opusfile/blob/9a9825df0319138fe845cbb19c250b642965c4b1/include/opusfile.h#L133

so on Pascal it makes more sense declared as:

type
  POggOpusFile = ^OggOpusFile;
  OggOpusFile = record
  end;

and finally:

op_read: function(OpusFile: POggOpusFile; ...

`PDArFloat` seems OK to `op_read_float`, but notice last comment regarding
`_pcm`.

"li: pointer" should be "li: pcint" in both funcs.

go slowly: these changes can raise new errors on your code. :-)

  TDArFloat = array of cfloat;
>   PDArFloat = ^TDArFloat;
>
> op_read: function(OpusFile: TOggOpusFile; pcm : PDArFloat; SampleCount:
> Integer; li: pointer): Integer;
>

`_pcm` on original code is an `int16` buffer... consider to using `cint16`:

https://github.com/gcp/opusfile/blob/9a9825df0319138fe845cbb19c250b642965c4b1/include/opusfile.h#L1873

op_read_float: function(OpusFile: TOggOpusFile; pcm : PDArFloat;
> SampleCount: Integer; li: pointer): Integer;
>
> Many thanks.
>
> Fre;D


-- 
Silvio Clécio
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freepascal.org/pipermail/fpc-pascal/attachments/20170120/36d0d82d/attachment.html>


More information about the fpc-pascal mailing list