问题列表 - 第18580页

如何保存人类可读文件

目前我有一个应用程序,使用二进制序列化程序从一个或两个基本类读取和写入几个属性到.txt文件.

我在NotePad中打开了.txt文件,因为它为应用程序格式化,它对人眼来说不是很易读,不管怎样对我来说= D

我听说过使用XML,但我的大部分搜索工作似乎都过于复杂.

我试图保存的数据类型只是"Person.cs"类的集合,只不过是名称和地址,所有私有字符串但具有属性并标记为Serializable.

以一种人们可以轻松阅读的方式实际保存数据的最佳方法是什么?它还可以更容易地直接在文件中对应用程序的数据进行小的更改,而不必加载,更改和保存.

编辑:

我添加了当前保存和加载数据的方式,我的_userCollection正如它所暗示的那样,nUser/nMember是一个整数.

#region I/O Operations

    public bool SaveData()
    {
        try
        {
            //Open the stream using the Data.txt file
            using (Stream stream = File.Open("Data.txt", FileMode.Create))
            {
                //Create a new formatter
                BinaryFormatter bin = new BinaryFormatter();
                //Copy data in collection to the file specified earlier
                bin.Serialize(stream, _userCollection);
                bin.Serialize(stream, nMember);
                bin.Serialize(stream, nUser);
                //Close stream to release any resources used
                stream.Close();
            }
            return true;
        }
        catch (IOException ex)
        {
            throw new ArgumentException(ex.ToString());
        }
    }

    public bool LoadData()
    { …
Run Code Online (Sandbox Code Playgroud)

.net c# xml-serialization

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

STL或boost中的C++范围/ xrange等价物?

在STL或boost中是否有C++等效的python Xrange生成器?

xrange基本上生成递增的数字,每次调用++运算符.构造函数是这样的:

xrange(first, last, increment)
Run Code Online (Sandbox Code Playgroud)

我希望通过每个使用boost来做这样的事情:

foreach(int i, xrange(N))
Run Code Online (Sandbox Code Playgroud)

我知道for循环.在我看来,他们是太多的样板.

谢谢

我的理由:

我想要这样做的主要原因是因为我使用语音文本软件,并且编程循环通常很难,即使使用代码完成.具有可显示的构造更有效.

许多循环从零开始并递增1,这是范围的默认值.我发现python构造更直观

 for(int i = 0; i < N; ++i)
 foreach(int i, range(N))
Run Code Online (Sandbox Code Playgroud)

需要将范围作为参数的函数:

 Function(int start, int and, int inc);
 function(xrange r);
Run Code Online (Sandbox Code Playgroud)

我理解语言之间的差异,但是如果python中的特定构造对我非常有用并且可以在C++中高效实现,我没有理由不使用它.对于每个构造,C++都是外来的,但是人们使用它.

我将我的实现放在页面底部以及示例用法.

在我的域中我使用多维数组,通常排名4张量.所以我经常会得到4个具有不同范围/增量的嵌套循环来计算规范化,索引等等.这些不一定是性能循环,我更关心正确性可读性和修改能力.

例如

int function(int ifirst, int ilast, int jfirst, int jlast, ...);
versus
int function(range irange, range jrange, ...);
Run Code Online (Sandbox Code Playgroud)

在上面,如果需要不同的strid,你必须传递更多的变量,修改循环等,最终你会得到大量的整数/几乎相同的循环.

foreach和range完全解决了我的问题.对普通C++程序员的熟悉程度并不高我的关注列表 - 问题领域是一个相当模糊,有很多元编程,SSE内在,生成代码.

c++ boost iterator

37
推荐指数
2
解决办法
1万
查看次数

使用Split()时执行修剪()

今天我想知道是否有更好的解决方案执行以下代码示例.

string keyword = " abc, foo  ,     bar";
string match = "foo";
string[] split= keyword.Split(new char[] { ',', ';' }, StringSplitOptions.RemoveEmptyEntries);
foreach(string s in split)
{
  if(s.Trim() == match){// asjdklasd; break;}
}
Run Code Online (Sandbox Code Playgroud)

有没有办法执行trim()而无需手动迭代每个项目?我正在寻找类似'由以下字符拆分并自动修剪每个结果'的东西.

啊,我发现之前立即发布了

List<string> parts = line.Split(';').Select(p => p.Trim()).ToList();
Run Code Online (Sandbox Code Playgroud)

一条线上如何将字符串拆分为多个部分?

我仍然很好奇:可能有更好的解决方案吗?(或者编译器是否可能将它们转换为与Linq-Operation相同的代码输出?)

c# string trim

52
推荐指数
4
解决办法
5万
查看次数

在SQL表中滚动行

我想创建一个不超过n行数据的SQL表.插入新行时,我希望删除最旧的行以为新行添加空间.

在SQLite中有一种典型的处理方式吗?

应该用一些外部(第三方)代码来管理它吗?

sql sqlite

10
推荐指数
2
解决办法
3690
查看次数

Delphi中导致内存泄漏的原因是什么?

我只是无法弄清楚EurekaLog为我的程序报告的内存泄漏.我正在使用Delphi 2009.这是:

Memory Leak: Type=Data; Total size=26; Count=1;
The stack is:
System.pas  _UStrSetLength  17477
System.pas  _UStrCat           17572
Process.pas  InputGedcomFile  1145
Run Code Online (Sandbox Code Playgroud)

这就是堆栈中的全部内容.EurekaLog指向我首先分配未释放内存的位置.根据它,我的程序中的行是InputGedcomFile的第1145行.那条线是:

CurStruct0Key := 'HEAD' + Level0Key;
Run Code Online (Sandbox Code Playgroud)

其中CurStruct0Key和Level0Key在过程中简单定义为本地变量,Delphi内存管理器在进入和离开过程时应该动态处理:

var CurStruct0Key, Level0Key: string;
Run Code Online (Sandbox Code Playgroud)

所以现在我看一下系统单元中的_UStrCat过程.17572行是:

CALL    _UStrSetLength  // Set length of Dest
Run Code Online (Sandbox Code Playgroud)

然后我转到系统单元中的_UStrSetLength过程,相关的行是:

@@isUnicode:
        CMP     [EAX-skew].StrRec.refCnt,1 // !!! MT safety
        JNE     @@copyString  // not unique, so copy

        SUB     EAX,rOff      // Offset EAX "S" to start of memory block
        ADD     EDX,EDX       // Double length to get size
        JO      @@overflow
        ADD     EDX,rOff+2    // Add string …
Run Code Online (Sandbox Code Playgroud)

delphi delphi-2009

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

如何在Python中创建模块范围的变量?

有没有办法在模块内部设置全局变量?当我尝试以最明显的方式执行此操作时,如下所示,Python解释器说该变量__DBNAME__不存在.

...
__DBNAME__ = None

def initDB(name):
    if not __DBNAME__:
        __DBNAME__ = name
    else:
        raise RuntimeError("Database name has already been set.")
...
Run Code Online (Sandbox Code Playgroud)

并在将模块导入另一个文件后

...
import mymodule
mymodule.initDB('mydb.sqlite')
...
Run Code Online (Sandbox Code Playgroud)

追溯是: __DBNAME__

有任何想法吗?我正在尝试使用模块来设置单例,根据这个人的建议.

python variables singleton scope module

198
推荐指数
4
解决办法
21万
查看次数

如何使用win32 API将位图复制到剪贴板?

如何使用win32 API将保存为".BMP"文件的缓冲区复制到剪贴板?即,我有一个Windows V3位图的原始缓冲区(包括标题),我可以字面上write()一个文件,并将产生一个有效的.BMP文件,但我想将其复制到剪贴板.

在OS X上,在普通的C中,代码看起来像这样(按预期工作):

#include <ApplicationServices/ApplicationServices.h>
int copyBitmapToClipboard(char *bitmapBuffer, size_t buflen)
{
 PasteboardRef clipboard;
 CFDataRef data;

 if (PasteboardCreate(kPasteboardClipboard, &clipboard) != noErr) {
  return PASTE_OPEN_ERROR;
 }

 if (PasteboardClear(clipboard) != noErr) return PASTE_CLEAR_ERROR;

 data = CFDataCreateWithBytesNoCopy(kCFAllocatorDefault, bitmapBuffer, buflen,
                                    kCFAllocatorNull);
 if (data == NULL) {
  CFRelease(clipboard);
  return PASTE_DATA_ERROR;
 }

 if (PasteboardPutItemFlavor(clipboard, 42, kUTTypeBMP, data, 0) != noErr) {
  CFRelease(data);
  CFRelease(clipboard);
  return PASTE_PASTE_ERROR;
 }

 CFRelease(data);
 CFRelease(clipboard);
 return PASTE_WE_DID_IT_YAY;
}
Run Code Online (Sandbox Code Playgroud)

我不确定如何使用win32 API完成此任务.这是我已经得到的,但它似乎无声地失败(也就是说,函数返回成功的错误代码,但在尝试粘贴时,菜单项被禁用).

#include <windows/windows.h>
int copyBitmapToClipboard(char *bitmapBuffer, size_t buflen)
{
 if (!OpenClipboard(NULL)) …
Run Code Online (Sandbox Code Playgroud)

c windows clipboard winapi bitmap

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

HTML表单 - 当URL包含index.aspx时,输入类型提交问题与操作= URL

我有一个HTML表单,在"?"之后截断action参数 标记 - 这不是我想要的行为.

这是一个有代表性的HTML代码段:

<form action="http://spufalcons.com/index.aspx?tab=gymnastics&path=gym">
    <input type="submit" value="SPU Gymnastics"/>
</form>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,提交按钮会将您带到" http://www.spufalcons.com/index.aspx "页面,实际上忽略了"?tab = gymnastics&path = gym"参数.似乎action = URL中引用的所有HTML和PHP页面都按预期工作.这种行为在所有主流浏览器(IE,FF,Safari,Chrome,Opera)中都是一致的.

以前有人见过这个问题吗?或者可以建议与我的"纯"CSS/HTML/PHP Web开发方法一致的替代和/或解决方法?我已经尝试用HTML实体值替换特殊字符而没有任何影响.我真的不想使用Javascript或按钮PNG或图像映射放弃我的CSS样式的提交按钮.

环境:

  • Web服务器:Apache 2.2.14
  • PHP:5.2.10
  • 操作系统:Mac OS X 10.5.8
  • HTML文档信息:
  • <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">

TIA - 特伦特

html forms parameters url action

20
推荐指数
2
解决办法
10万
查看次数

是否有.Net 1.1兼容的String.GetHashCode在.Net 2.0代码中实现?

我有一个现有的应用程序,我错误地使用String.GetHashCode并将其持久化到磁盘.现在我正在将应用程序升级到.Net 2.0,我发现这个决定已经回来让我陷入困境.

我很想知道是否有人知道.Net 1.1兼容字符串散列算法的.Net 2.0实现.

显然,最好的解决方案是给自己买一台时间机器,然后回到2002年,即使考虑使用这种方式使用哈希码,也要自己开始.由于这似乎不太可能,我正在寻找一种解决方法.我现有的用户在他们的系统上有这些数据,所以我不可能对哈希或类似的东西进行一次大的转换.

随着更改为2.0,我将更新代码,因此它当然使用MD5或SHA.

我考虑从Mono中提取String.GetHashCode源,但由于Mono是GPL而且我的应用程序是商业用途,实际上不是一个选项.我甚至不知道Mono实现是否与MS .Net实现兼容,因为GetHashCode的合同不要求它兼容.

有任何想法吗?

.net-1.1 gethashcode .net-2.0

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

在SQL中具有列的结果百分比

我正在尝试获得一个结果,该结果将显示Uniuque“原因”,它们的数量以及它们占总数的百分比。到目前为止,我有

SELECT DISTINCT Reason, 
       COUNT(Reason) AS Number, 
       CAST(COUNT(Reason) AS float) / CAST(COUNT(*) AS float) AS percentage
FROM DeletedClients
Run Code Online (Sandbox Code Playgroud)

但是,正如我发现的COUNT(*)和COUNT(原因)给出的结果一样。所以我的基本问题是,当我在查询中使用distinct时如何获得总行数?我正在使用SQL Server 2005

sql select count distinct

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