问题标签 [string-table]

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 投票
7 回答
9541 浏览

java - Java 和 .NET 字符串文字驻留在哪里?

最近一个关于.NET 中字符串文字的问题引起了我的注意。我知道字符串文字是实习的,因此具有相同值的不同字符串引用同一个对象。我也知道可以在运行时实习字符串:

显然,在运行时实习的字符串驻留在堆上,但我假设文字被放置在程序的数据段中(并在我对上述问题的回答中这么说)。但是我不记得在任何地方看到过这个。我认为是这种情况,因为我会这样做,并且ldstrIL 指令用于获取文字并且似乎没有发生分配的事实似乎支持了我。

长话短说,字符串字面量在哪里?它是在堆上、数据段上还是我没有想到的某个地方?


编辑:如果字符串文字确实驻留在堆上,它们是什么时候分配的?

0 投票
2 回答
1967 浏览

c# - 带有字符串表的 Windows 窗体

我有普通的 Windows 窗体 (WinForm) C# (.Net 3.5) 应用程序,该应用程序具有带有文本和菜单等的标签……而且该应用程序有时会向用户显示消息框,并将一些信息写入文件。

我希望用户可以看到的所有信息(通过 GUI 或通过文件)都将由(一个,如果可能的话)字符串表管理。我的问题是我找不到如何将我所有的 GUI 控制器文本移动到资源文件中的字符串表中。

谢谢

0 投票
2 回答
170 浏览

javascript - 我可以将我的 HTML 元素的文本绑定到字符串对象吗?

我正在使用 jQuery 制作一个 Web 应用程序。Web 应用程序的所有元素都是使用 jQuery ( var $header = $("<div>");) 创建的。我已经有一个名为 stringtables 的对象,其中我有名为“no”、“en”等的子对象。

在页面加载时,会加载默认值,并将其中的字符串用于我所有元素中的文本。有什么办法可以将所有元素绑定到字符串表,所以当我切换字符串表时,网站上的所有文本都会随之改变?

我希望在不重新加载页面的情况下更改应用程序语言。

0 投票
2 回答
670 浏览

c++ - 跨平台消息目录的任何工作代码而无需复制消息字符串?

在 linux 上,gencat 与带有 gencat、catopen、catgets 和 catclose 的 .msg 文件完美配合在 Windows 上,mc 或 rc 文件的 stringtable 与 LoadString 完美配合。

只是想知道在 Windows 上是否有任何有效的 gencat 实现。我用谷歌搜索并找到了许多来自 freebsd 或苹果实现的副本,但它错过了等效的 catopen 实现或其旧版本。

我不想在我的项目中使用 MingGW 或 Cigwin 实现。

请建议您是否知道任何有效的消息目录跨平台实现,这有助于不以 2 种不同格式复制字符串。

0 投票
4 回答
713 浏览

c - 使用字符串表“解码器环”的 printf() 调试库

我写信是想看看你们中是否有人见过或听说过我将要描述的想法的实现。

我有兴趣为嵌入式目标开发一个 printf 风格的调试库。目标非常遥远,我和目标之间的通信带宽预算非常紧张,所以我希望能够以非常有效的格式获取调试消息。

很多时候,调试语句看起来像下面这样:

当然,当它扩展为文本时,打印的字符串类似于“Inside loop, processing item 5 out of 10.\n”,总共约 42 个字节左右。该语句打印的 90% 以上的数据是静态的、文字的——在编译时就知道了。当然,只有“5”和“10”在编译时是未知的。

我想做的是能够只发回这两个整数(8 个字节而不是 42 个)。一旦我收到该数据,我就会有某种“解码器环”,让我“重构”接收到的数据并在我的位置打印出完整的调试消息。

我将通过在编译时自动(作为构建过程的一部分)为每个 myDebugLibraryPrintf() 语句提供唯一 ID 并生成将这些唯一 ID 映射到原始格式字符串的表来生成“解码器环”。然后,每当在目标上调用 myDebugLibraryPrintf() 时,它都会传输唯一 ID 和格式字符串中看到的任何"%d""%f"等可变参数值,但不传输格式字符串本身。(我"%s"现在可能只是禁止项目......)回到我的位置,我们将有一个程序查找表中的唯一 ID,找到适当的格式字符串,并使用它来重建原始调试消息.

我觉得以前可能有人有过这个想法,我想也许社区中的某个人会看到类似的东西(或者甚至知道这样做的开源库)。

约束:

  • 澄清一下,我在这里处理的是 C/C++,我对 printf() 的 100% 完全替换实现不感兴趣——比如非文字格式字符串、%s(字符串)格式说明符或更高级的东西%*.*d不需要支持格式说明符,例如将宽度或精度放入可变参数列表中。

  • 我希望作为构建过程的一部分自动生成字符串表,这样添加调试所涉及的工作就不会比添加传统的 printf() 更多。如果需要的工作量超过最低限度,我的项目中没有人会使用它。

  • 作为生成字符串表的构建过程的一部分,做额外的工作几乎是假设的。幸运的是,我可以控制我对使用这个库感兴趣的所有源代码,并且我在构建过程中有很大的灵活性。

谢谢!

0 投票
2 回答
8852 浏览

mfc - VC++ 10 MFC:进行本地化的正确方法是什么

我是一个必须在 MFC 应用程序上做一些工作的 .NET 人。该应用程序是一个 VS2008 MFC 可执行文件,我已将其转换为 VS2010。最初的开发人员通过在应用程序命令行中指定包含键值对的 .txt 文件的名称来进行本地化。已安装的可执行文件快捷方式会根据应用程序安装在哪个国家/地区指定不同的 .txt 文件。如果您只是直接运行 .exe,这当然不起作用。这对我来说似乎是一种奇怪的做事方式。

我想以适当的 MFC 方式做到这一点,但我很难在谷歌上找到明确的答案。我的理解是 .rc 文件中的字符串表应该用于此本地化?这是当前 MFC 的最佳实践吗?

关于字符串表,我已经读过实践是为不同的语言创建多个字符串表。MFC 应用程序如何选择使用哪种语言?它是基于机器当前的语言设置还是我可以控制它(可能是我们希望我们也在构建的 Wix .msi 安装程序指定语言)?

我还读到在 MFC 应用程序中嵌入所有资源已经失宠,现在您应该编译单独的资源 .dll 吗?这是真的吗 生病调查如何做到这一点...

最后,我是否必须做一些特别的事情才能让 MFC 支持 Unicode 或者 MFC 默认为 Unicode?

谢谢

0 投票
2 回答
3940 浏览

c++ - MFC - 手动展开字符串表

任何人都可以提供解释或链接来解释 MFC 资源文件中的 STRINGTABLE 是如何定义的并且可以手动扩展吗?

我试图这样做,但在多项目解决方案中未能这样做。所述解决方案中的大多数项目都有自己的资源文件并重命名为 resource.h 文件。

当应用程序尝试访问字符串资源时,会显示错误消息“找不到 '22392' 的资源字符串”。22392 是我尝试创建的字符串的 ID。如果我改用已定义的字符串 ID,则不会收到类似的错误消息。

使用 Visual Studio 2010 的向导添加字符串资源也不起作用。但它正确显示在资源符号列表和字符串表编辑器中。

不用说,我没有参与过这个解决方案的创建。

谢谢你的帮助。

[编辑1]

我通过对使用的值执行“在文件中查找”并使用其他值排除了冲突的可能性:22390、22391、22393、22394、22395。总是得到相同的结果。

[编辑2]

我在一个新的、干净且简单的 MFC 应用程序中重复了我在复杂解决方案中所做的步骤,并且它没有问题地工作。因此,我认为我的问题与解决方案具有多个项目和资源的事实有关。

步骤如下:

  1. 在 resource.h 中选择一个免费号码(在我的例子中命名不同)并添加一个 #define IDS_XXX免费号码
  2. 通过执行“在文件中查找”来验证所选数字。
  3. 在 resource.h 中的 STRINGTABLE 中添加一行,最好靠近 IDS_,其值接近我选择的值。

    /li>
  4. 访问应用程序中的字符串:

    /li>

[编辑3]

我试图找到导致错误消息的 LoadString 调用。无法加载我的字符串资源的 LoadString 位于一个类中,该类与包含所述字符串资源的资源文件 (.rc) 位于同一项目中。在那里生成错误消息“找不到'22392'的资源字符串”。这至少解释了为什么我没有发现任何内容。

[编辑4]

我可以进一步隔离原因。

在 cstringt.h hInst 是 NULL 也就是找不到字符串资源:

这很奇怪,因为可以很好地访问同一资源文件中的另一个字符串资源。

0 投票
2 回答
25458 浏览

elf - ELF中的字符串表

  1. 我得到了一些符号,并且得到了一个 ELF 文件(一个十六进制转储)。我怎么知道这个符号出现在哪个部分?

  2. .strtab和 和有什么不一样.shstrtab?是否还有另一个符号字符串数组?

当我获得符号名称表的索引时,它是 in.strtab还是 in的索引.shstrtab

0 投票
2 回答
903 浏览

android - 在 AIR 中显示中文、西里尔文和韩文字体

我在我的游戏中遇到了不同语言的问题。我将我的游戏从 Flash Professional CS5.5 发布到 AIR for Android 和 AIR for iOS。

所有语言都很好,除了中文,韩文,俄文。我需要做什么才能显示它们?

我正在使用嵌入字体(arial),并在 word 中进行了测试,以在 arial 中显示我的文本,完全没有问题。

我在我的 swf 中对此进行了测试:

当我在文本字段中写入中文文本时,文本将正确显示,但是当文本与 string-xml 数据一起动态添加时,文本将无法正确显示(只有括号和数字)。

我希望你能帮助我。

谢谢和问候

0 投票
1 回答
401 浏览

c# - C#中的exe字符串表?

如何在 C# 中读取/设置 exe 的字符串表?我不是指资源文件。我的意思是获取任何 exe,在 Visual Studio 中打开它,右键单击并选择“添加资源”,然后选择字符串表,它是一个 uint16 键和字符串值。

我如何在 C# 中访问它?