Tag: delphi

Delphi XE5可以编译一个可以使用’System.loadLibrary以Java加载的.so库吗?

我之前使用Free Pascal FPC编译器成功编译了一个用Pascal编写的.so库。 该库使用System.loadLibrary在Android Java中成功加载,并且其方法可以通过Android Java代码中的JNI成功使用。 但是,使用Delphi XE5编译并且与FPC不兼容的新代码需要集成到我的项目中。 我重写了我的代码,以便Delphi XE5可以编译它。 当尝试使用Java中的System.loadLibrary加载新的XE5编译库时,会发生分段错误,更准确地说: 09-24 11:04:20.271: D/dalvikvm(4800): Trying to load lib /data/app-lib/com..so 0x41059e68 09-24 11:04:20.281: A/libc(4800): Fatal signal 11 (SIGSEGV) at 0x5da58480 (code=1), thread 4800 (ic.) 09-24 11:04:20.881: I/DEBUG(123): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** 09-24 11:04:20.881: I/DEBUG(123): […]

Delphi Dll函数中的Java JNA映射

如何使用JNA映射此function: Delphi Dllfunction代码: function send_command (const command : byte; var size : byte; var data : pbyte) : integer; stdcall external ‘comunication.dll’; 使用Delphi示例程序中的示例: send_command(cmdCLOCK_ADJUST,tam,pb); 哪里: const cmdCLOCK_ADJUST = $18; var tam : byte; pb, p : pbyte; begin … tam = 7; p:= pb; for i:= 1 to tam do begin p^:= Dados [i]; inc […]

用于检查数字是否在特定范围内的位

我在ICU库(International Components for Unicode)的”source\common\unicode\utf.h”文件中发现了一个有趣的小问题。 钻头用于检查数字是否在特定范围内。 // Is a code point in a range of U+d800..U+dbff? #define U_IS_LEAD(c) (((c)&0xfffffc00)==0xd800) 我已经想出了幻数(0xfffffc00)来自: MagicNumber = 0xffffffff – (HighBound – LowBound) 但是,我还发现该公式不适用于每个任意范围。 这里有人知道公式在什么情况下起作用? 是否有另外一点麻烦来检查一个数字是否在特定范围内?

我如何使用JNA映射此Delphi函数

我有以下Delphi函数: function DoX(const InputBuffer: Pointer; const InputBufferSize: longword; OutputBuffer: Pointer; var OutputBufferSize: longword): longbool; OutputBuffer和OutputBufferSize将作为结果的一部分在函数中设置,并使用布尔返回来指示方法是否成功(InputBuffer和OutputBuffer将是字节数组)。 我已经设法从dll映射我的一些所需的function与JNA,他们工作正常,但这一个给我的问题,任何帮助将不胜感激。

如何获取对DLL的Java JNA调用以获取参数中返回的数据?

我有这个java测试 package ftct; import com.sun.jna.Library; import com.sun.jna.Native; import com.sun.jna.Platform; import com.sun.jna.win32.StdCallLibrary; import java.util.Date; public class LibFTCT { public LibFTCT() { } public interface LibFTCTLib extends StdCallLibrary { LibFTCTLib INSTANCE = (LibFTCTLib) Native.loadLibrary( “FTCTLib”, LibFTCTLib.class); int a(int x); int DoCommand(int Command, int Param); int GetDataRecord(int RecordNum, int StreamNum, Date ReadingTime, double AIN1, double AIN2, double AIN3, […]

从SOAP请求中删除命名空间

我已导入WSDL并使用它来发送SOAP请求。 它看起来像这样: …More XML… 问题是Calculate元素中的xmlns=”urn:xx.WSDL.xxxxxWebService”部分。 Web服务无法接受此操作。 Web服务不喜欢这样的命名空间…… 使用SoapUI我发现这个请求工作正常: …More XML… 那么,如何将请求从第一个版本更改为第二个版本? (不使用肮脏的技巧!) (如果这会导致正确的请求格式,则重新导入不是问题。) 再次:不允许任何肮脏的技巧,比如黑客攻击请求流来修改它! 虽然我还没有完全测试过,但似乎C#/ VS2010和Delphi 2010也无法使用我想要调用的Web服务。 似乎是用Java编写的Web服务。 SoapUI恰好用Java编写,因此我们有一个Java客户端与Java服务通信,这似乎工作得很好。 但任何其他客户? 无论如何,还有时间添加两个标签:“Java”,因为它是一个Java服务,而“vs2010”因为.NET也不喜欢这个服务。 我正准备在.NET中编写一个包含此服务的包装器,希望能够正常工作……但事实并非如此。 所以这是一个非常严重的缺陷,可能是Java缺陷……

使用Delphi的java类

我需要使用一些java类中包含的逻辑。 我找到了JNI,但该项目最近似乎没有更新。 有没有办法在Delphi本机应用程序中使用它? 我使用Delphi 2009。