DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: webb123
今日帖子: 30
在线用户: 17
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 zhouying (zy) ★☆☆☆☆ -
盒子活跃会员
2020/1/27 20:44:52
标题:
那个兄弟可以帮忙翻译成delphi格式啊 浏览:1939
加入我的收藏
楼主: 那个同学可以帮忙翻译成Delphi代码啊,谢谢

CreateAPlayerFromFile 演示了如何从文件中创建一个 APlayer 对象,
    其中 g_szAppPath 为应用程序所在目录:

    #import "../Bin/APlayer.dll"          // 导入 APlayer 引擎的类型库
    HWND g_hAxWnd = NULL;          // APlayer 控件容器
    APlayer3Lib::IPlayer * g_pPlayer = NULL; // 指向 APlayer 对象的指针

    BOOL CreateAPlayerFromFile(void)
    {
        // Get aplayer path
        TCHAR szPath[MAX_PATH];
        wsprintf(szPath, _T("%s\\APlayer.dll"), g_szAppPath);

        // Create APlayer instance
        IDispatch * pDispatch = NULL;
  HRESULT hr = CreateInstanceFromFile
          (szPath, __uuidof(APlayer3Lib::Player), __uuidof(IDispatch), NULL, (void **)&pDispatch);
  if(FAILED(hr) || pDispatch == NULL)
        {
          return FALSE;
  }

        // Create AX window
        g_hAxWnd = ::CreateWindowEx(WS_EX_TOOLWINDOW, _T(ATLAXWIN_CLASS), _T(""),
          WS_CHILD|WS_VISIBLE|WS_CLIPCHILDREN|WS_CLIPSIBLINGS,
          0, 0, 1, 1,
          m_hParentWnd, NULL, NULL, NULL);
        if(g_hAxWnd == NULL)
        {
          return FALSE;
  }

        // Attach aplayer
        hr = AtlAxAttachControl(pDispatch, g_hAxWnd, NULL);
        if(FAILED(hr))
        {
          pDispatch->Release();
          return FALSE;
        }

        hr = pDispatch->QueryInterface(__uuidof(APlayer3Lib::IPlayer), (void **)&g_pPlayer);
        if(FAILED(hr) || m_pPlayer == NULL)
        {
          return FALSE;
        }
        return TRUE;
    }

    上面函数中用到的 CreateInstanceFromFile 函数定义如下:

    HRESULT CreateInstanceFromFile(const TCHAR * pcszPath, REFCLSID rclsid, REFIID riid, IUnknown * pUnkOuter, LPVOID * ppv)
    {
        // Load the library
        HMODULE hDll = ::LoadLibraryEx(pcszPath, NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
        if(hDll == NULL)
          return TYPE_E_CANTLOADLIBRARY;

        // Get pointer of DllGetClassObject
        typedef HRESULT (STDAPICALLTYPE *_pfnDllGetClassObject)(REFCLSID, REFIID, LPVOID*);
        _pfnDllGetClassObject pfnDllGetClassObject = (_pfnDllGetClassObject)
          GetProcAddress(hDll, "DllGetClassObject");
        if(pfnDllGetClassObject == NULL)
          return CO_E_ERRORINDLL;

        // Call DllGetClassObject
        CComPtr<IClassFactory> spCF;
        HRESULT hr = (*pfnDllGetClassObject)(rclsid, IID_IClassFactory, (LPVOID*)&spCF);
        if(FAILED(hr))
          return hr;

        // Create instance
        hr = spCF->CreateInstance(pUnkOuter, riid, ppv);
        if(FAILED(hr))
          return hr;

        // Create completed
        return S_OK;
    }
----------------------------------------------
-
作者:
男 zhouying (zy) ★☆☆☆☆ -
盒子活跃会员
2020/1/28 11:00:30
1楼: 有兄弟知道吗
----------------------------------------------
-
作者:
男 emailx45 (emailx45) ▲▲▲▲△ -
普通会员
2020/1/28 11:32:16
2楼: Try this Open Source Code to Converter C Builder to Delphi dialects!

NOT PERFECT TRANSLATE OK


https://community.idera.com/developer-tools/b/blog/posts/c-to-delphi-converter-tool-can-quickly-and-easily-help-you-convert-standard-c-code-to-delphi

On GitHUB:  C-To-Delphi  by "Wouter Van Nifterick"

Description
This tool will convert most of your standard C code. .

Download executable here.

It contains a split view, with C on the left and Delphi on the right. The Delphi code gets updated in realtime when you edit the C code. The editors are kept in sync, so you can easily find how a specific piece of code was converted.

The Syntax checks of the generated code is verified. (uses DelphiAST)

You can even run the generated code by pressing F9 (uses DWS)

You can drag/drop multiple C files to the application. It'll find the .h files that belong to it, and convert all to .pas files in the same folder.

Features:
If function main exists, a program will be generated. Otherwise a pascal unit with interface/implementation sections.
Converts routines and arguments
Converts for loops
Converts case statements
Converts structs
Converts enums
Converts 1 and 2 dimensional arrays
Converts many other common routines to Delphi equivalents (strcpy,strcat,strlen,printf,argv,argc,etc)
Converts classes

按此在新窗口浏览图片

https://github.com/WouterVanNifterick/C-To-Delphi


----------

More about:  http://www.festra.com/cb/ref-cbvsdelphi.htm
----------------------------------------------
The higher the degree, the greater the respect given to the humblest!RAD 11.3
作者:
男 movedown (movedown) ★☆☆☆☆ -
普通会员
2020/1/28 12:29:55
3楼: https://www.cnblogs.com/dpower/p/6775086.html
----------------------------------------------
-
作者:
男 movedown (movedown) ★☆☆☆☆ -
普通会员
2020/1/28 21:42:06
4楼: 楼主是不知道怎样通过Delphi来用APlayer吗?直接通过Import Component把APlayer.dll和APlayerUI.dll作为ActiveX控件导入就可以了,生成APlayer3Lib_TLB.pas、APlayer3Lib_TLB.dcr和APlayerUILib_TLB.pas、APlayerUILib_TLB.dcr四个文件,加入到一个新的dpk包里,安装到Delphi的IDE里的AcitiveX控件面板就可以像一般控件一样拖入Form中使用了。简单试了一下,使用很方便。如果要COM免注册,可以参考楼上帖子。另外,APlayerUILib_TLB.pas和APlayerLib_TLB.pas同时安装的话,要注意一下APlayerUILib_TLB.pas里自动生成的类也是TPlayer,会和APlayerLib_TLB.pas里的重复,我是直接把Player全部替换成PlayerUI再编译的。
此帖子包含附件:
PNG 图像
大小:146.8K
----------------------------------------------
-
作者:
男 movedown (movedown) ★☆☆☆☆ -
普通会员
2020/1/28 22:28:42
5楼: APlayUI可以直接用,控制键什么的都有了
此帖子包含附件:
PNG 图像
大小:147.9K
----------------------------------------------
-
作者:
男 zhouying (zy) ★☆☆☆☆ -
盒子活跃会员
2020/1/29 23:59:02
6楼: 谢谢楼上的,我只在IMPORT里面看到APLAYER.DLL,没有看到APLAYERUI.DLL么,还是是不是只要装了迅雷的朋友,就会自动注册次控件?
----------------------------------------------
-
作者:
男 zhouying (zy) ★☆☆☆☆ -
盒子活跃会员
2020/1/30 0:09:20
7楼: @movedown楼上的兄弟,你说的这句我没听懂:要注意一下APlayerUILib_TLB.pas里自动生成的类也是TPlayer,会和APlayerLib_TLB.pas里的重复,我是直接把Player全部替换成PlayerUI再编译的。
确实我只能是生成TPlayer一个控件,你上面说的TplayerUI这个控件没有找到呢
----------------------------------------------
-
作者:
男 zhouying (zy) ★☆☆☆☆ -
盒子活跃会员
2020/1/30 0:28:52
8楼: 还有,兄弟,就是到时候除了注册组件之外,我还在程序相同目录下在把这2个dll放进来吗?
----------------------------------------------
-
作者:
男 dalas (dalas) ★☆☆☆☆ -
普通会员
2020/1/30 0:35:53
9楼: import component 时可以直接在 Class name 那里把 TPlayer 改成 TPlayerUI
此帖子包含附件:
PNG 图像
大小:51.1K
----------------------------------------------
-
作者:
男 dalas (dalas) ★☆☆☆☆ -
普通会员
2020/1/30 0:36:31
10楼:
此帖子包含附件:
PNG 图像
大小:63.5K
----------------------------------------------
-
作者:
男 dalas (dalas) ★☆☆☆☆ -
普通会员
2020/1/30 0:38:43
11楼:
此帖子包含附件:
PNG 图像
大小:60.0K
----------------------------------------------
-
作者:
男 keymark (嬲) ▲▲▲△△ -
普通会员
2020/1/30 9:35:48
12楼: 做各种协议播放器 用迅雷的应该是够了
----------------------------------------------
[alias]  co = clone --recurse-submodules  up = submodule update --init --recursiveupd = pullinfo = statusrest = reset --hard懒鬼提速https://www.cctry.com/>http://qalculate.github.io/downloads.htmlhttps://www.cctry.com/
作者:
男 movedown (movedown) ★☆☆☆☆ -
普通会员
2020/1/30 10:00:09
13楼: to zhouying
你不是直接在APlayer的官方网站下载的SDK和解码库吗?SDK里的bin目录就有APlayerUI.dll啊,用SDK带的install.bat安装之后,在Import里就能看到了。像 dalas 说的,导入生成pas时改下名,避免和APlayer.dll导入时生成的控件重名。我觉得吧,发布时,最简单可以把SDK的bin目录和install.bat一起发布出去,先用install.bat安装一下注册一下,光APlayer.dll和APlayerUI.dll不够,因为还要用到codecs目录下解码库里的dll,除非目标机器原来就有。如果要免注册,要自己写下代码了,参考3楼cnblogs那个链接。
此帖子包含附件:
PNG 图像
大小:90.7K
----------------------------------------------
-
作者:
男 jackalan (nVicen) ★☆☆☆☆ -
盒子活跃会员
2020/1/30 10:15:28
13楼: 要不要必须安装迅雷?
----------------------------------------------
简单做人,认真做事。
作者:
男 zhouying (zy) ★☆☆☆☆ -
盒子活跃会员
2020/2/1 17:46:23
14楼: 谢谢楼上的几位,不过刚才试了下,貌似有部分m3u8播放地址迅雷还是不支持。
----------------------------------------------
-
作者:
男 chencong5025 (Nicosoft) ▲▲▲△△ -
普通会员
2020/2/2 20:31:07
15楼: @zhouying
不能播放的发出来。

估计是 有啥中专加密之类的
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行261.7188毫秒 RSS