开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 2025|回复: 7
收起左侧

[易语言] 一小段C翻译到易语言 我被困住了 求高手指点。

[复制链接]
结帖率:17% (1/6)
发表于 2012-9-14 19:01:12 | 显示全部楼层 |阅读模式   四川省泸州市
50精币
最近在研究bass.dll的东西,应该很多人研究吧。目前我卡在用bassasio.dll读取ASIO设备信息那里了,官方的C语言例子写得很简单那,我找着翻译成易语言的但是执行结果不对。说下具体的问题:

有一个数据类型,在C里是这样的:
  1. typedef struct {
  2.         char name[32];        // driver name
  3.         DWORD version;        // driver version
  4.         DWORD inputs;        // number of inputs
  5.         DWORD outputs;        // number of outputs
  6.         DWORD bufmin;        // minimum buffer length
  7.         DWORD bufmax;        // maximum buffer length
  8.         DWORD bufpref;        // preferred/default buffer length
  9.         int bufgran;        // buffer length granularity
  10.         DWORD initflags; // BASS_ASIO_Init "flags" parameter
  11. } BASS_ASIO_INFO;
复制代码
我翻译成易语言是这样的:
  1. .版本 2

  2. .数据类型 BASS_ASIO_INFO, , 使用BASS_ASIO_GetInfo时存储的设备信息
  3.     .成员 name, 文本型, , , 设备或驱动的名称
  4.     .成员 version, 整数型, , , 驱动版本
  5.     .成员 inputs, 整数型, , , 可用的输入通道数量
  6.     .成员 outputs, 整数型, , , 可用的输出通道数量
  7.     .成员 bufmin, 整数型, , , 最小缓冲长度
  8.     .成员 bufmax, 整数型, , , 最大缓冲长度
  9.     .成员 bufpref, 整数型, , , The buffer length granularity, that is the smallest possible length change... -1 = the possible buffer lengths increase in powers of 2.
  10.     .成员 bufgran, 整数型, , , The buffer length granularity, that is the smallest possible length change... -1 = the possible buffer lengths increase in powers of 2
  11.     .成员 initflags, 整数型, , , 初始化标记。
复制代码
调用时C里是这样的:
  1.     BASS_ASIO_INFO i;
  2.                                 BASS_ASIO_GetInfo(&i);
复制代码
然后就能用i.name这样的形式读出内容。

我在易语言里是这样的:
  1. .版本 2

  2. .DLL命令 BASS_ASIO_GetInfo, 逻辑型, "bassasio.dll", "BASS_ASIO_GetInfo", , 取正在使用的ASIO设备信息
  3.     .参数 info, 整数型, , 用于存放设备信息的变量指针。


  4. .版本 2
  5. .支持库 shellEx

  6.     输出调试文本 (BASS_ASIO_GetInfo (取指针地址 (局部_ASIO设备信息.name)))
  7.     输出调试文本 (局部_ASIO设备信息.name)
  8.     输出调试文本 (局部_ASIO设备信息.version)
  9.     输出调试文本 (局部_ASIO设备信息.inputs)
  10.     输出调试文本 (局部_ASIO设备信息.outputs)
  11.     输出调试文本 (局部_ASIO设备信息.bufmin)
  12.     输出调试文本 (局部_ASIO设备信息.bufmax)
  13.     输出调试文本 (局部_ASIO设备信息.bufpref)
  14.     输出调试文本 (局部_ASIO设备信息.bufgran)
  15.     输出调试文本 (局部_ASIO设备信息.initflags)
复制代码
这样运行的结果“局部_ASIO设备信息.name”是对的,其他都是错的。

BASS_ASIO_GetInfo (取指针地址 (局部_ASIO设备信息))、BASS_ASIO_GetInfo (取变量地址(局部_ASIO设备信息))、BASS_ASIO_GetInfo (取变量数据地址 (局部_ASIO设备信息))什么的都不行。

不知道问题出在哪里,还望会的朋友多多指点。


回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳
结帖率:100% (12/12)
发表于 2012-9-14 19:23:48 | 显示全部楼层   广东省珠海市
树{

名字[ 32 ];/ /驱动程序名称

双版本;/ /驱动程序版本

双输入;/ /输入数量

双输出;/ /输出数

双bufmin;/ /最小缓冲区长度

双bufmax;/ /最大缓冲区长度

双bufpref;/ /优先/默认缓冲区长度

国际bufgran;/ /缓冲区长度的粒度

双initflags;/ / bass_asio_init“旗帜”参数

} bass_asio_info;


版本2。

数据类型。bass_asio_info,使用,bass_asio_getinfo时存储的设备信息

成员名字。文本型,,,,设备或驱动的名称

成员版本。整数型,,,,驱动版本

成员投入。整数型,,,,可用的输入通道数量

成员输出。整数型,,,,可用的输出通道数量

成员。bufmin整数型,,,,最小缓冲长度

成员。bufmax整数型,,,,最大缓冲长度

成员bufpref整数型。,,,,缓冲区的长度,是最小的长度变化…- 1 =可能缓冲区长度增加2的力量。

成员bufgran整数型。,,,,缓冲区的长度,是最小的长度变化…- 1 =可能缓冲区长度增加2的力量

成员。initflags整数型,,,,初始化标记。

} bass_asio_info;

bass_asio_info我;

bass_asio_getinfo(和我);
回复

使用道具 举报

结帖率:17% (1/6)
 楼主| 发表于 2012-9-14 19:44:15 | 显示全部楼层   四川省泸州市
...谷歌翻译的?
回复

使用道具 举报

头像被屏蔽
结帖率:84% (16/19)
发表于 2012-9-14 20:43:31 | 显示全部楼层   新疆维吾尔自治区吐鲁番市
楼上的板凳好猛...
回复

使用道具 举报

结帖率:50% (1/2)

签到天数: 3 天

发表于 2012-9-14 23:00:25 | 显示全部楼层   浙江省杭州市
比忘了C 有个神奇的指针。。。
回复

使用道具 举报

结帖率:17% (1/6)
 楼主| 发表于 2012-9-18 19:41:30 | 显示全部楼层   四川省泸州市
楼上多指点一点啊~~数据类型成员用指针吗?
回复

使用道具 举报

结帖率:86% (6/7)
发表于 2012-9-18 20:45:04 | 显示全部楼层   湖北省荆州市
指针是C语言里面最难的东东。你说要是E语言里面也加指针那就爽YY了
回复

使用道具 举报

结帖率:43% (3/7)
发表于 2012-9-18 22:03:27 | 显示全部楼层   湖南省衡阳市
& 引用,是变量数据地址,易语言自定义成员上按4字节对齐,可能要改成1字节对齐,把自定义数据改成字节集,直接作参数应当没问题。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表