Tag: delphi

命名管道性能问题

我正在使用命名管道进行C#和Delphi之间的程序间通信。 C#使用System.IO.Pipes包,而Delphi使用Libby’s pipes.pas 。 不幸的是,通信几乎都是高性能的:分析表明通信占整个运行时间的72%,其余的则用于计算。 我找到了一个可能占用资源的问题:如果我没有在Delphi中明确断开发送客户端的连接, C#根本就不会收到任何数据 。 delphi(发送) FClient1.Write(msg[1], Length(msg)); FClient1.FlushPipeBuffers; FClient1.WaitForReply(20); FClient1.Disconnect; // disconnect to signalize C# that the writing is finished FClient1.Connect; // connect again to prevent synchronization problems C#(接收) // Wait for a client to connect stc.pipeServer.WaitForConnection(); while (reconnect_attempts < MAX_RECONNECT_ATTEMPTS) // { string tmp = sr.ReadLine(); // if result is […]

将Delphi Real48转换为C#double

我需要能够从Delphi Real48转换为C#double。 我有转换所需的字节,但我正在寻找一个优雅的解决方案。 问题。 以前有人不得不这样做吗? 我需要在C#中进行转换 提前致谢

在C#中使用Delphi 7中编译的DLL

我需要在我的C#应用​​程序中使用Delphi 7中的DLL(硬件ID提取器)。 此DLL导出的函数是: 导出function: // CPU function GetCPUSpeed: Double; function CPUFamily: ShortString; { Get cpu identifier from the windows registry } function GetCpuTheoreticSpeed: Integer; { Get cpu speed (in MHz) } function IsCPUIDAvailable: Boolean; Register; function GetCPUID (CpuCore: byte): ShortString; Function GetCPUVendor: ShortString; // RAM function MemoryStatus (MemType: Integer): cardinal; { in Bytes } function […]

列出Windows计算机上安装的所有Web浏览器

是否有一个常用的方法/ api列出我的机器(和每个用户)上安装的所有Web浏览器(名称,可执行文件,默认是/否),以及如何找出哪个是默认的Web浏览器? 我看到了这个问题: 如何找到机器上安装的所有浏览器 在MSDN上: 如何使用Windows开始菜单注册Internet浏览器或电子邮件客户端,该菜单指出Web浏览器应在HKLM\SOFTWARE\Clients\StartMenuInternet (和HKCU )下注册自己 这真的是常见/正确的方法吗? (如果是的话,那里有任何可靠的实施吗?) 我的目标是创建一个下拉菜单,其中列出了安装在用户计算机上的所有Web浏览器(指示默认值),并允许用户使用其中一个外部Web浏览器浏览其HTML文件/ URL。

如何从WebBrowser控件获取XML(RAW / SOURCE)

我在我的Delphi和.Net C#测试项目中使用WebBrowser控件导航到本地测试XML文件,并尝试将内容保存回.Net DocumentCompleted Event和Delphi onNavigateComple2事件中的XML文件。 问题是我总是得到HTML,它将被浏览器转换为查看(检查我的输出:我使用以下代码保存了它) procedure TForm1.SaveHTMLSourceToFile(const FileName: string; WB: TWebBrowser); var PersistStream: IPersistStreamInit; FileStream: TFileStream; Stream: IStream; SaveResult: HRESULT; begin PersistStream := WB.Document as IPersistStreamInit; FileStream := TFileStream.Create(FileName, fmCreate); try Stream := TStreamAdapter.Create(FileStream, soReference) as IStream; SaveResult := PersistStream.Save(Stream, True); if FAILED(SaveResult) then MessageBox(Handle, ‘Fail to save source’, ‘Error’, 0); finally FileStream.Free; end; […]

将结构数组从c#传递给delphi

我在VS2010中使用Robert Giesecke Unmanaged Exports 1.2.6 ,我的目标是将一系列结构从c#(.NET 3.5)传递给delphi(D7) 。 我不得不承认,我对delphi并不熟悉。 我已经阅读过这篇文章 ,但建议的答案对我不起作用:在delphi中调用func时,CPU调试窗口打开,如果我继续应用程序退出,无exception且没有所需的结果。 这是我试过的代码: C#平台x86 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.InteropServices; using RGiesecke.DllExport; namespace ArrayTest { public class Class1 { public struct Sample { [MarshalAs(UnmanagedType.BStr)] public string Name; } [DllExport] public static int func( [Out, MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 1)] Sample[] samples, ref int […]

c#键入别名/自定义类型

我试图将一些Delphi代码转换为c#,我遇到了一个问题…… 在Delphi中,我已经推出了一种新类型 Type TData = Array of Extended 在哪里我可以访问返回此类型的函数的结果与语句,如 Function TMyObject.ReadData:TData; begin … end; Data := MyObject.ReadData; Result = Data[7] + Data[12] 现在,如果我最初将其声明为Array of Single那么我可以改变这一行来改变精度。 (我可能不久要将它降低到Double以便任何结果与c#版本完全匹配。 所以问题是我可以在c#中做类似的事吗? 就像是 class Data : Double[] 虽然不完全像这样,因为它不编译,或者我会这样做 class DataEntry : Double … public DataEntry[] Read { … }

将C#double转换为Delphi Real48

我发现以下问题将Delphi Real48转换为C#double,但我想转向其他方式,C#转向Delphi。 有谁知道如何做到这一点? 我试过逆向工程代码,但没有太多运气。 更新: 我正在使用C#代码,它将采用double并将其转换为Real48(大小为6的byte [])。 谢谢

如何从C#调用这个delphi .dll函数?

// delphi代码(delphi版本:Turbo Delphi Explorer(它是Delphi 2006)) function GetLoginResult:PChar; begin result:=PChar(LoginResult); end; //使用上面的delphi函数的C#代码(我使用的是unity3d,在C#中) [DllImport (“ServerTool”)] private static extern string GetLoginResult(); // this does not work (make crash unity editor) [DllImport (“ServerTool”)] [MarshalAs(UnmanagedType.LPStr)] private static extern string GetLoginResult(); // this also occur errors 在C#中使用该function的正确方法是什么? (也用于delphi,代码就像if(event = 1)和(tag = 10)然后writeln(’Login result:’,GetLoginResult);)

C#将delphi TColor转换为颜色(Hex)

这些数字存储在数据库中。 它们起源于Delphi代码。 虽然我认为他们遵循某种标准。 我试过Color.FromArgb(255); 但我知道第一个是RED(在delphi方面),在ASP.NET中,它认为它的蓝色Color [A=0, R=0, G=0, B=255] 无论如何,我希望这些数字成为Hexidecimal。 即#000000,#FFFF99等等 任何人都知道如何将这些整数(参见DB图片)转换为hex。