问题标签 [widestring]
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 - Delphi:快速(更)宽字符串连接
我有一个功能是将 ADORecordset
转换为 html:
该函数的核心涉及大量宽字符串连接:
对于几千个结果,该函数所花费的时间,任何用户都会感觉到,运行时间太长了。Delphi Sampling Profiler显示99.3%的时间用于宽字符串连接 (@WStrCatN
和@WstrCat
)。
任何人都可以想出一种改进宽字符串连接的方法吗?我认为 Delphi 5 没有任何类型的字符串生成器。并且Format
不支持Unicode。
并确保没有人试图偷懒:假装你正在实现接口:
更新一
我想过使用IXMLDOMDocument
, 将 HTML 构建为 xml。但后来我意识到最终的 HTML 将是xhtml
而不是html
- 一个微妙但重要的区别。
更新二
Microsoft 知识库文章:如何提高字符串连接性能
c++ - 在 Visual Studio 2005 上使用 TCHAR 的 C++ 模板函数特化
我正在编写一个使用模板化 operator<< 函数的日志记录类。我将模板函数专门用于宽字符串,以便在编写日志消息之前进行一些从宽到窄的翻译。我无法让 TCHAR 正常工作 - 它不使用专业化。想法?
这是相关的代码:
和源文件
现在,我使用下面的测试程序来练习这些功能
运行上述测试显示以下内容:
不幸的是,这并不完全正确。我真的很希望最后一个是“TCHAR”,这样我就可以转换它。根据 Visual Studio 的调试器,当我进入测试 5 中调用的函数时,类型是 wchar_t*& - 但它没有调用适当的专业化。想法?
我不确定它是否相关,但这是在 Windows CE 5.0 设备上。
c++ - C++:宽字符输出不正确?
我的代码基本上是这样的:
我希望使用宽字符串,但我不知道它们是如何输出的,所以我使用了 wprintf。当我运行诸如:
十六进制代码点创建了这个:
为什么他们都按顺序跳?我的意思是如果 wprintf 是错误的,我仍然不明白为什么它会以如此特定的混乱顺序输出!
编辑:字节序还是什么?他们似乎每两个字符旋转一次。嗯。
编辑 2:我尝试使用 wcout,但它输出完全相同的十六进制代码点。奇怪的!
c++ - 如何将 wchar_t 转换为 int 以显示代码点?
我的程序中有一个简单的函数,当我想弄乱 unicode 并用它做一些事情时。在这个函数中,我希望显示用户输入的字符的代码值。似乎有可能,这是我的功能:
现在如您所见,我只想显示整数值(如 ascii 字符,例如(int) "a"
),但类似的listcode(L"&")
内容将显示为&: &
!
不可能找到像这样的宽字符的整数值吗?
delphi - 什么会导致 SysFreeString 命中 Int 3 断点?
我有一些代码在 Delphi 2007 下运行良好,但在 D2010 下中断。它涉及传入一个字符串,将其转换为 PWideChar(特别是 WideString 指针,而不是 UnicodeString 指针),进行一些处理,然后在其上调用 SysFreeString。它工作正常,直到传入一个空白字符串,然后 SysFreeString 中断。它调用了一堆最终Int 3
在 NTDLL.DLL 中引发断点的东西。继续超过这一点会导致
项目引发异常类 $C0000005 并带有消息“0x7747206e 的访问冲突:读取地址 0x539b8dba”。
如果您仔细观察,这不是标准的访问冲突消息。
当它命中时堆栈跟踪的顶部Int 3
如下所示:
有谁知道这里发生了什么?
编辑(来自评论):
不过,这不是 WideString。它是由 StringToOleStr 生成的 PWideChar,传入非空字符串时不会出现 double-free 错误。不幸的是,我无法真正发布代码示例,因为这是受版权保护的第三方组件。(而且我不能向他们寻求支持,因为它不再受支持。基本上,整个事情都是一团糟。)
c++ - 如果没有正确删除,为什么 wstring::c_str 不会导致内存泄漏
代码段 1:
代码段 2
如果未删除代码段 2 中的值,则不会发生内存泄漏。但是,如果未删除代码段 1 中的 value1,则存在内存泄漏。wstring::c_str 的内部代码在我看来是一样的。
c++ - 用 send(sock, wszBuffer, ...) 发送 TCHAR 缓冲区?
我有一条宽字符 XML 消息,需要通过 C++ 中的 Win32 套接字发送。
我应该在发送之前将sprintf(szSendBuffer, "%S", wszBuffer)
宽字符缓冲区放到char
数组中吗?
发送这个的正确方法是什么?
delphi - 如何从 COM 服务器返回 WideString?
_TLB.pas 文件中的这个接口
这着眼于操作系统 Windows
COM 服务器中的函数如下所示
在 COM 客户端中,我正在调用此函数,例如
并在 $75A9FBAE获得错误第一次机会异常。异常类 EAccessViolation 带有消息“模块 'RPCRT4.dll' 中地址 75A409A4 的访问冲突”。读取地址 FFFFFFF8'。处理 Project1.exe (2296)
如果我想返回整数,它可以工作。如何返回宽字符串?
delphi - ReadLn 使用 WideString(utf-8 文件)
我使用德尔福 7。
我需要逐行读取一个 utf-8 文件,每行包含一个单词及其权重(一个数字)所以我需要读取每一行,然后将一行除以分隔符(tab char)并将其保存在内存中.
所以,
1)是否有一个库可以在 Delphi 中处理 utf-8 文件(可能是第 3 方)
2) 函数使用宽字符串可以正常运行吗?我使用 PosEx。那么,如果他们不这样做,您是否还可以提供指向 3-rd 方库的链接以使用宽弦?
delphi - 如何使固定长度的 Delphi 字符串使用宽字符?
在 Delphi 2010 下(也可能在 D2009 下),默认字符串类型是 UnicodeString。
但是,如果我们声明...
...然后第一个字符串s如果声明为UnicodeString,但第二个ss声明为AnsiString!
我们可以检查一下:SizeOf(s[1]);
将返回大小 2 和SizeOf(ss[1])
; 将返回大小 1。
如果我声明...
...比我想要的ss也是 UnicodeString 类型。
- 我如何告诉 Delphi 2010 两个字符串都应该是 UnicodeString 类型?
- 我还能如何声明ss拥有四个 WideChars?编译器将不接受类型声明
WideString[4]
或UnicodeString[4]
. - 相同类型名称的两个不同编译器声明的目的是什么: string?