问题标签 [pchar]
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.
delphi - PChar('') 是否保证是指向 #0 的指针(不是 nil)?
我知道在 Delphi 中,一个空字符串(AnsiString 或 WideString)可以用一个 nil 指针表示,也可以用一个指向实际空字符串的指针表示。
通过实验,我已经在 Delphi XE2(具有特定的编译器设置)中证明了这一点PChar('') <> nil
。但这是否得到保证,或者它可能会在未来的版本中发生变化,或者取决于某些编译器设置?
我正面临信任危机。如果有人能给我一个明确的答案,我将不胜感激。
string - 如何将字符串变量传递给需要 PChar 的函数?
我有这个代码:
如何用字符串变量替换第三个参数中的文字?如果我使用下面的代码,它不会编译。
c# - 将 Delphi PChar 传递给 C#
我在 c# 环境中为 delphi 导入的 activeX 控件传输数据时遇到了一些问题。
我在 delphi 端有一个函数,它接受并返回 PChar。我可以修改它或用它做任何我想做的事情。
在程序的 C# 端是一个函数,它调用 delphi 函数,给它一个字符串参数来咀嚼。
我已经对其进行了测试,显然一切都很顺利,直到 C# 收到返回的 PChar。然后整个应用程序停止响应并退出。我尝试实现 try-catch 块以查看异常消息,但应用程序在显示任何内容之前就崩溃了。
我想它崩溃是因为变量不是同一类型。或者因为残酷的软件版本不匹配:Delphi 5 + Visual Studio 2012。我用谷歌搜索了这个,但到目前为止没有运气。
任何帮助表示赞赏:)
delphi - ((Pointer)(P)+1)^ 什么时候可以工作?
我正在研究 delphiXE2,我正在研究 PInteger。如果我在我的德尔福代码中这样做
我得到了这个错误。
PS:testInt := (P+1)^;
是第23行
但是,当我尝试这个
它运作良好!控制台可以打印'b'!
我不清楚这怎么会发生,什么时候 ((Pointer)(P)+1)^ 可以工作?
c++ - 如何在没有任何内存泄漏的情况下创建和编辑全局 PCHAR
这似乎是一个基本问题,但我无法在任何地方找到解决方案。
我必须从内核模式中获取信息。因此,我与 IOCTL 合作。我的用户模式应用程序使用 DeviceIoControl 和 METHOD_OUT_DIRECT 发送此 IOCTL,因为我需要传输大量数据。这会向我的驱动程序发送一个字符指针。
Driver 获取 IOCTL 并可以在中断请求中对其进行响应。
代码如下所示:
但我需要从内核模式的另一部分复制信息。
我试图像这样创建一个全局 PCHAR:
头文件(声明):extern PCHAR g_pDataPack;
源文件(定义):PCHAR g_pDataPack = "IOCTL DEFINITION";
编辑(其他源文件):*g_pDataPack++ = 'some stuff';
我的问题是,在中断将全局 PCHAR 复制到本地 PCHAR 并将其发送回我的用户模式应用程序之前,我必须多次编辑和放大全局 PCHAR。我试图每 5000 个版本重置一次全局指针,但这并没有真正奏效。
程序在一段特殊的时间后崩溃。我猜是因为全局指针分配了很多空间?
我试图创建一个 CHAR 数组,但这根本不起作用。
是否有另一种更好或更简单的方法来分配特殊大小的内存,然后在需要时对其进行编辑并将其复制到本地 PCHAR pReturnData,或者我是否必须学习如何为该项目使用 DMA?
windows - 我在这种自定义格式的复制和粘贴中遗漏了什么?
我的复制代码:
和我的粘贴代码:
我的目标是不仅要从我的程序中的特殊编辑器中复制文本,还要复制与该编辑器相关的一些底层变量数据。大多数一切似乎都在剪贴板方面运行良好 - 我看到了我复制的文本,并且“cf_LocalVar”格式出现在 Windows 上的剪贴簿查看器中。
当我到达粘贴端并且该行
LocalsTextPtr := GlobalLock(MyHandle);
没有从代码的第一位获取复制的数据时。我看到它进入 pLclCopies 但不能确定它是否存储在剪贴板中。
注意我已经从我的代码中遗漏了空剪贴板,因为这将摆脱我需要的 cf_text 以及 cf_LocalVar。
delphi - 如何从 delphi dll 函数返回 pchar 类型?
Vb6 代码运行时出现以下错误。
如何修复错误?
我怎样才能返回一个正常的字符串?
VB6代码
Delphi7代码
string - 我如何编写一个 Delphi 程序来修改同时适用于 PCHAR 和字符串的字符串?
举个例子,假设我想编写一个简单的过程,从字符串中删除“X”字符。
我如何设计我的程序,以便它适用于字符串和 PCHAR 参数。
如果我将其定义为:
过程 RemoveX(来源:PCHAR);
比调用 RemoveX(PCHAR(mystring)) (其中 myString 是一个字符串)将删除 'X' 但不会更新字符串长度......因此后续的 myString := myString + 'done' 将使 myString 保持不变。而且我不想在调用 RemoveX 后更改长度,我希望 RemoveX 过程能够处理所有事情。
另一方面,如果我将其定义为:
过程 RemoveX( var source : string);
我不知道如何将其传递给 PCHAR ...
delphi - 将 PAnsiChar 分配给(unicode-)字符串的正确方法是什么?
我有一个 DLL 函数,它返回一个指向 ANSI 文本 (PAnsiChar) 的指针。我想将其分配给(unicode-)字符串(这是Delphi XE2。)。以下编译但我收到警告“W1057 Implicit String cast from 'AnsiChar' to 'string'”:
编辑:有问题的文本是英文的错误消息,所以这里不太可能有任何转换问题。
我现在很想将 Err 显式类型转换为这样的字符串......
..摆脱警告。这会出错吗?我应该改用临时 AnsiString 变量吗?
如果是,为什么?
或者我应该明确表示,代码首先将 PAnsiChar 转换为 AnsiString,然后将 AnsiString 转换为 String?
当然我可以把它变成一个函数:
所有这些选项都可以编译,但它们会起作用吗?这里的最佳做法是什么?
加分项:理想情况下,代码应该可以编译并与 Delphi 2007 和更新版本一起使用。
string - 如何将 PChar 的一部分提取到字符串中?
在分析过程中,我遇到了一个需要花费大量时间的函数,但基本上可以归结为这段非常简单的代码:
此函数返回预期的子字符串,但对于较长的输入它不能很好地扩展。我在 CPU 视图中查看了汇编代码,据我所知(我通常不在汇编级别工作),似乎AInput
在调用Copy
.
但是由于此时字符串/字符数组的长度是未知的,因此转换代码必须遍历 的长度,PChar
直到找到空终止符。这可以解释较长输入的可怕缩放。
但是,由于调用者传入了 的长度PChar
,我最初认为可以将方法转换为使用SetString
。
除了SetString
从零开始工作(不是从一开始的复制),在验证其输入方面似乎还有许多其他的小事情Copy
,并非所有这些都记录在案(例如,任何小于 1 的起始值都会被更改到 1)。所以上面的幼稚实现并不总是像原来的那样工作。
我的目标是尽可能多地复制该Copy
例程,因为此函数是库的一部分,并且已被我的同事广泛使用。
我想知道以下实现是否实现了这一点,或者我是否需要了解Copy
. 注意:FLength
实际长度AInput
来自该函数所属模块的另一部分。我为这个例子删除了其他部分。
我使用的是 Delphi 2006,但我认为这在产品的其他版本(至少非 Unicode 版本)中并没有太大的不同。