很抱歉这个问题,但我对Delphi有点菜鸟。我正在使用DejanTComport组件从串行端口获取数据。连接到该端口的一盒设备向串口发送大约100字节的二进制数据。我想要做的是将字节作为数值提取到一个数组中,以便我可以对它们执行计算。TComport有一个Read(buffer,Count)方法,它从输入缓冲区读取数据。functionRead(varBuffer;Count:Integer):Integer;帮助说明Buffer变量必须足够大以容纳Count个字节,但没有提供任何如何使用此函数的示例。我可以看到Count变量保存接收到的字节数,但我找不到访问Buffer中字节的方法。
我有一个Delphi应用程序,它从一个文件中读取数据并将其存储在一个数组中。文件中的每一行都包含一个地址、lineTypeIndicator和数据。这是算法(包含我认为很关键的代码):AssignFile(inputFile,inFileName);Reset(inputFile);whilenotEOF(inputFile)dobeginReadln(inputFile,fileLineBuffer);ifCopy(fileLineBuffer,8,2)='01'then//Nevermanagedtocatchtheerrorherebeginbreak;end;//extract
我正在尝试从mqoa.tlb或mqoa.dll的Delphi7>Project>ImportTypeLibrary创建单元,在WinXP和Win2003上,甚至在Win7x64上(都是mqoa30.tlb和mqoa.tlb(或*.dll),代表MSMQ4.0)-每次它都失败并出现错误“找不到元素”。根据MSMQ版本,在Windows2003和WindowsXP上安装了“MSMQ3.0”,但在我的旧项目中,我从mqoa20.tlb("C:\WINDOWS\system32\mqoa20.tlb”)。我想切换到MSMQ3.0接口(interface),但我不能。有什么建议吗?顺便说一下,曾
当您编译并运行Delphi“Metro”应用程序时,它会从Windows8的桌面运行。哪些Windows8API可以使Delphi应用程序从开始屏幕运行?我指的不是WindowsRT。 最佳答案 那是不可能的。Delphi无法生成WinRT应用程序。 关于windows-从开始屏幕而不是桌面运行Delphi应用程序需要什么API,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/21
我正在使用Window的API,尤其是“WaveIn”函数。我想知道我的笔记本电脑的输入音频设备支持的格式。因此,我使用了函数“waveInGetDevCaps”。此函数调用一旦被调用,就会用有关音频设备的信息填充WAVEINCAPS结构。到目前为止,这是我的代码:procedureTForm1.Button4Click(Sender:TObject);varwc:WAVEINCAPS;//structuretobefilledwithaudiodeviceinfobeginwaveInGetDevCaps(WAVE_MAPPER,&wc,sizeof(WAVEINCAPS));Sho
我正在使用delphi在桌面上进行开发。我想用ToastGeneric类型通知创建toast通知LToastFactory.CreateToastNotification(LXMLTemplate);此外,我正在使用xml,如https://learn.microsoft.com/en-us/windows/uwp/controls-and-patterns/tiles-and-notifications-adaptive-interactive-toasts我的问题是如何让delphi接受这个xml,我还没有找到将该字符串转换为Xml_Dom_IXmlDocument类型的方法。
我有一个程序使用UDP将数据从一台电脑发送到另一台电脑(数据大小为150字节)。那程序是用delphi7编写的(TldUDPClient和TldUDPServer组件使用发送和接收数据)。我需要在30%的丢包率上测试这个程序。我在Windows上使用ipfw(从sourceforge下载):ipfw-fflushipfwaddpipe1ipfromanytoanyoutipfwpipe1configplr0.3当我使用ping时,我发现有30%的数据丢失。当我启动我的delphi程序时,经过一段时间后它返回一个错误:套接字错误10004。错误的描述是:函数调用中断。调用WSACance
我正在使用的应用程序中有几个线程。这些线程设置为FreeOnTerminate,我不允许更改此行为。我看到老开发人员在主线程中等待某些信号的方式有些奇怪,如下所示:让:varFWaits:arrayofTEvent;varFThreads:arrayofTBkgThread;constC=10;对于每个线程,我们有一个事件,然后Length(Threads)=Length(FWaits)forI:=0toC-1dobeginFWaits[I]:=TSimpleEvent.Create;FThreads[I]:=TBkgThread.Create(FWaits[I]);//Thehand
我在Delphi中有一个程序,它以25赫兹(每秒25次)的速度从外部应用程序接收帧,然后通过创建1-2个额外的帧将其转换为60赫兹(每秒60帧)。我需要通过不断构建帧缓冲区并从此处从单独的线程输出帧来输出这些额外的帧。问题是1000/60是16.66667,这意味着我不能只在16或17毫秒的“间隔”中发送帧,我需要它更精确。我如何在Delphi/Windows中执行此操作? 最佳答案 使用multimediatimer通过Win32APItimeSetEvent()或CreateTimerQueueTimer()功能。
这个问题在这里已经有了答案:Whydofilesgetplacedin"C:\Users\AppData\Local\VirtualStore\ProgramFiles(x86)"?(2个答案)关闭4年前。我有以下32位Delphi项目源:programTestApp;usesSysUtils,Dialogs,Windows;varfilename:String='C:\ProgramFiles(x86)\SomeApplication\foo.txt';fd:TWIN32FindData;h:THandle;beginFillChar(fd,SizeOf(fd),0);h:=Find