问题标签 [pascal]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
4263 浏览

string - 如何在 Pascal 中使用字符串集?

我正在编写一个小游戏,在其中询问用户的种族和班级。string[5] 有五种可能的种族和 string[9] 的四种可能类别。

我如何将 pascal 编程为 1. 将五个种族和四个类定义为常量, 2. 检查用户输入以查看输入是否在可能的种族和类中 - 不使用多个 IF 语句?

任何提示将不胜感激。

0 投票
5 回答
1082 浏览

delphi - How to convert OWL/BP7 application to Delphi?

Which tool/approach would you suggest to convert of a large 16bit Windows GUI application, written in old Borland Pascal 7 / OWL, to Delphi?

Understanding the pretty heavy differences between OWL and VCL, as well as the differences between the pointer manipulations in 16bit pascal and the state-of-art using of strings and objects in Delphi - are there any ways/tools which could help to avoid almost complete rewrite of the application?

0 投票
8 回答
18266 浏览

delphi - Delphi/Pascal 有静态代码分析工具吗?

Delphi/Pascal 有静态代码分析工具吗?

我已经看到很多 C++ 和 .NET 的选项,但对于 Delphi/Pascal 却没有。

理想情况下,可以集成到持续集成系统中。

0 投票
5 回答
4520 浏览

delphi - 如何在 Mac 的 Lazarus 中执行相当于 shellexecute() 的操作?

如何shellexecute()在 Mac 上执行与 Lazarus 中的等效操作?

0 投票
4 回答
16990 浏览

delphi - Delphi - 从由无类型指针填充的动态数组访问数据

我使用的是Delphi 2009,并不是说它对我正在做的事情有很大影响。如果我还在2007 年,我想我会遇到同样的情况。

我有一个将数据输出到指针的 scsi 调用(错误的查看方式,但我无法解释)。

最初我使用Move用返回的数据填充静态字节数组,但我想切换到在调用时已知长度的动态数组。我已经尝试了几件事,结果各不相同,有些得到了数据,但有疯狂的访问冲突,有些没有错误,但得到了无效的数据。

setlength添加到数组,然后使用move,首先导致设置长度为空数组,然后第二次无法通过像OutputData[0]那样访问数据,就像我在静态时所做的那样,在移动后的调试器中一切都显示为无价之宝或其他任何东西。

下面是我在阅读一篇文章后尝试的,该文章确实反对采用动态数组并给出了该地址的指针。它提到了像孤立数据这样的错误。

输出数据还有很多其他用途,因为它以字符串和十六进制等形式输出。

无论如何,我如何使用指针将该数据放入动态数组中,然后以您寻址数组的方式获取该数据。

谢谢。

0 投票
2 回答
1746 浏览

delphi - WMDeviceChange函数调用其他函数/过程时的Delphi Pascal问题

解决了

我正在使用 delphi 2009。我的程序会监听 USB 驱动器的连接和移除。在过去的一年里,我在 10 个应用程序中使用了非常相似的代码。它一直很完美。当我迁移时,我不得不放弃使用 thddinfo 来获取驱动器型号。这已被 WMI 取代。WMI 查询需要物理磁盘号,而我恰好在应用程序中已经有一个功能可以做到这一点。

当我测试时,我将它放在一个按钮中并运行它,它成功确定 psp 是物理驱动器 4 并返回模型(全部在调试器中检查,在另一个示例中使用显示消息):

它工作得很好,直到我允许我使用了一年的 WMDeviceChange 调用 getphysicaldisknumber 和 wmi 查询语句。我自己试过了,它们都是一个问题。GetPhysicalDiskNumber 在逻辑磁盘上执行 CloseHandle 时冻结非常糟糕,但最终确实返回了数字。WMI 查询失败且没有错误,只是将“调试器点”返回到从未发生连接的 wbemscripting_tlb 中。请记住,一年中唯一改变的是我调用什么来获取我正在使用 api 调用的模型,而现在我正在使用其他东西。

以下是此时涉及的其余代码,没有上面显示的 ispsp:

Rob 在下面说了一些关于我没有调用继承的消息处理程序的内容,我阅读了文档,我看到了一些我可以返回的东西......但我不确定我是否理解,但我会调查它。我不是一个非常好的 Pascal 程序员,但我学到了很多东西。到 2009 年的过渡也有一些困难。

USB 驱动器检测和所有这些都可以完美运行。如果我从 is psp 中删除这两个东西,那么用户会立即用 wis this yourwhat 向用户致意,并将 I:\ 添加到列表中。它只是在应用程序中发生变化的两个新事物在被 wmdevicechange 调用时失败,并且正如在它们自己工作之前所说的那样。

编辑 - 已解决

好吧,我按照建议使用计时器,问题似乎已经解决。需要注意的是,在 wmdevicechange 获取物理磁盘号后不久被计时器调用时,它似乎仍然很慢。我将此归因于仍连接到系统的设备。

在那张纸条上,我经常使用 P2 450。我将 PSP 和应用程序连接到一台 1.8Ghz 双核笔记本电脑,程序检测到 psp 并很快通知用户。因此,除非在非常慢的计算机上,否则该应用程序不会冻结,并且在这种缓慢的 onw 上它只会持续几秒钟,并且不会影响程序的运行,尽管不是很酷。但我觉得所有现代计算机都会快速运行检测,特别是因为它们可以更快地连接设备。

0 投票
1 回答
1056 浏览

delphi - Delphi - 在 Windows 中枚举 SATA IO 端口号

给你一个新的。我准备帮助另一个程序员将​​他的程序从 C# 移植到 Delphi。我不能真正阅读 C#,他也没有在这一点上给我发送实际的源代码,所以从讨论中我认为我将在一个时间点从一个函数处理大部分问题。

我需要能够获取连接到系统的所有 SATA 设备(我相信我的意思是设备)的 IO 端口号。我知道 WMI 不会这样做,所以我不知道从哪里开始。我知道这个应用程序的 C# 版本使用基本上解析注册表的 C# 类。我一直很讨厌直接从注册表中读取。如果可能的话,我觉得从 windows api 或相关信息获取信息在 windows 版本之间更可靠。

0 投票
1 回答
191 浏览

xml - 将结果存储到记录中

我正在解析一个 XML 文件并将结果存储在记录中,但是遇到了一些麻烦。

我试图将结果(我的 XML 标记的内容)存储到我的记录字段中。

我的记录(目前只有一组 XML 元素)。我认为 Parser.curconten 导致了问题......

以下是我的解析器代码;

程序解析器很好,标签的内容显示在 memo1 中......有什么想法为什么记录没有拾取内容的结果?谢谢, Lazerspewpew

0 投票
3 回答
396 浏览

xml - 帕斯卡 - 回复:用途

我有以下程序,它几乎可以工作,但是当我尝试编译时会产生以下错误,我不知道如何修复它!有任何想法吗?

表格,'mainform.pas'中的mainform ...

"unit1.pas(9): , or ; 预期但发现'IN'; "project1 无法编译 unit1.pas

0 投票
4 回答
7454 浏览

delphi - Delphi中如何使用单元文件

我只是想掌握单独的单元以使我的代码更加封装。我正在尝试整理我的方法的公共/私有声明,以便我可以从其他使用testunit. 在这个例子中,我想hellofromotherunit公开,但不stickletters公开。

我似乎无法从其他单位复制私有/公共结构,如下所示: