相关疑难解决方法(0)

Registry vs. INI文件,用于存储用户可配置的应用程序设置

我是一名新的Windows程序员,我不确定应该在哪里存储用户可配置的应用程序设置.我理解需要为用户提供用户友好的方式来更改应用程序设置,例如编辑| 设置表单或类似.但是,在用户点击该表单上的"应用"按钮后,我应该在哪里存储值?

在Windows注册表中存储设置与将其存储在本地INI文件或配置文件或类似文件中的优缺点是什么?

windows registry settings ini configuration-files

47
推荐指数
3
解决办法
2万
查看次数

.NET是否具有与Java的.properties文件相同的功能?

为了慢慢占用每个人的内存,Java将这些文件扩展为".properties",这些文件基本上是一个充满键值对的ASCII文本文件.该框架有一些非常简单的方法将该文件吸入(基本上)一个花哨的hashmap.

两个巨大的优势(我认为)是手工编辑和阅读/写作的极易.

.NET是否有相同的烘焙?当然,我可以用XML文件做同样的事情,但如果你知道我的意思,我宁可不要手工输入所有尖括号.此外,将所有数据吸入内存中的数据结构的方法也很好.

(侧栏:我有点不敢相信这里已经没有问过了,但我找不到这样的问题.)

编辑:

为了回答一些评论暗示的问题,我不是在寻找一种在.NET下专门阅读java .properties文件的方法,我正在寻找.NET领域中的功能等价物.(而且我希望它不会基于XML,显然已经忘记了这是我们正在讨论的.NET.)

并且,虽然配置文件很接近,但我需要存储一些任意字符串,而不是应用程序配置信息,所以配置文件的焦点和设计似乎是偏离基础的.

.net java properties-file

21
推荐指数
3
解决办法
2万
查看次数

GetPrivateProfileString - 缓冲区长度

Windows的GetPrivateProfileXXX函数(用于处理INI文件)有一些关于处理缓冲区长度的奇怪规则.

GetPrivateProfileString的文档说明:

如果[...]提供的目标缓冲区太小而无法保存请求的字符串,则字符串将被截断,后跟空字符,返回值等于nSize减1.

我读了这篇文章,我意识到这种行为使得无法区分代码中的两个场景:

  • 当值字符串的长度恰好等于nSize - 1时.
  • 当nSize值(即缓冲区)太小时.

我以为我会做实验:

我在INI文件中有这个:

[Bar]
foo=123456
Run Code Online (Sandbox Code Playgroud)

我用这些参数调用GetPrivateProfileString作为测试:

// Test 1. The buffer is big enough for the string (16 character buffer).
BYTE* buffer1 = (BYTE*)calloc(16, 2); // using 2-byte characters ("Unicode")
DWORD result1 = GetPrivateProfileString(L"Bar", L"foo", NULL, buffer, 16, fileName);

// result1 is 6
// buffer1 is { 49, 0, 50, 0, 51, 0, 52, 0, 53, 0, 54, 0, 0, 0, 0, 0, ... , 0, 0 }

// Test 2. The buffer …
Run Code Online (Sandbox Code Playgroud)

winapi ini

8
推荐指数
1
解决办法
4518
查看次数

.xml、.ini 或 .txt 哪个读起来快?

我的应用程序必须读取存储在文件中的数据并获取变量或数组的值才能处理它们。

我的问题是,哪种文件格式可以快速轻松地从文件中检索数据。

我想使用 .xml、.ini 或只是一个简单的 .txt 文件。但是要读取 .txt 文件,我将不得不编写大量具有 if 或 else 条件的代码。

我不知道如何使用 .ini 和 .xml。但是,如果它们会更好更快,那么我会先学习它们,然后再使用它们。请指导我。

.net c# xml io ini

4
推荐指数
1
解决办法
7522
查看次数

C# Windows 服务 - 从 ini 或 App.config 文件中读取

我有一个 Windows 轮询服务每 10 分钟自动发送一封电子邮件。我曾经Thread.Sleep(new TimeSpan(0, 10, 0));让线程休眠 10 分钟,现在是硬编码的。

为了避免硬编码,我尝试过App.config没有成功。我想将硬编码移动到一些.ini文件中。如何.ini从 C# Windows 服务读取文件。

编辑:我尝试使用下面的代码从我的 Windows 服务中读取。 string pollingInterval = (string)new AppSettingsReader().GetValue("PollingInterval", typeof(string)); 给出以下错误。Configuration system failed to initialize

c# ini windows-services

4
推荐指数
2
解决办法
6383
查看次数

C#相当于Delphi的.INI读取方法

可能重复:
在C#中读/写INI文件

有哪些方法或C#库可以执行以下操作?谢谢

   //Delphi read item in a given  section of a binary file.
   uses iniFiles; 
   readString('SectionName','itemName','DefaultValueIfNotFound');
Run Code Online (Sandbox Code Playgroud)

c# delphi

1
推荐指数
1
解决办法
961
查看次数

用正则表达式解析key=value

我有简单的文字:

first_name=value1
secon_name=value2
date_b = 12.01.1989
Run Code Online (Sandbox Code Playgroud)

行由字符分隔\n。我有代码分割这个字符串,然后迭代数组并检查键:

string[] data = str.Split('\n');
foreach (var row in data)
{
   if (row.StartsWith("first_name"))
   {
       obj.FirstName = row.Remove(0, ("first_name").Length);
       ...
   }
}
Run Code Online (Sandbox Code Playgroud)

但大约有 15 对,代码foreach非常难以阅读。如何用正则表达式解析这个?我想要得到dictionary<key, value>.

附言。一些规则:
1. 键不能有空格。
2. 该值可以包含空格。

c# regex

1
推荐指数
1
解决办法
2122
查看次数

编辑ini文件

我找到了一些与编辑ini文件的某个部分完美配合的代码,但它只选择了我要编辑的第一行实例.我知道我可以手动输入我想要开始编辑的代码中的所有索引,但是知道事情如何随着时间的推移而改变,可能会对ini文件进行更改,然后索引也会发生变化.有人能解释一下这个问题吗?

const string FileName = "File.ini";
string file= File.ReadAllText(FileName);

const string Pattern = @"pattern = (?<Number>)";

Match match = Regex.Match(config, Pattern, RegexOptions.IgnoreCase);

if (match.Success)
{
    int index = match.Groups["Number"].Index;

    string newText= **********;
    file = file.Remove(index, 21);
    file = file.Insert(index, newText);

    File.WriteAllText(FileName, file);
}  
Run Code Online (Sandbox Code Playgroud)

.net c# ini file edit

0
推荐指数
1
解决办法
793
查看次数