目前我有一个应用程序,使用二进制序列化程序从一个或两个基本类读取和写入几个属性到.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) 在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内在,生成代码.
今天我想知道是否有更好的解决方案执行以下代码示例.
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相同的代码输出?)
我想创建一个不超过n行数据的SQL表.插入新行时,我希望删除最旧的行以为新行添加空间.
在SQLite中有一种典型的处理方式吗?
应该用一些外部(第三方)代码来管理它吗?
我只是无法弄清楚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) 有没有办法在模块内部设置全局变量?当我尝试以最明显的方式执行此操作时,如下所示,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__
有任何想法吗?我正在尝试使用模块来设置单例,根据这个人的建议.
如何使用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) 我有一个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样式的提交按钮.
环境:
<!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 - 特伦特
我有一个现有的应用程序,我错误地使用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的合同不要求它兼容.
有任何想法吗?
我正在尝试获得一个结果,该结果将显示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
c# ×2
sql ×2
.net ×1
.net-1.1 ×1
.net-2.0 ×1
action ×1
bitmap ×1
boost ×1
c ×1
c++ ×1
clipboard ×1
count ×1
delphi ×1
delphi-2009 ×1
distinct ×1
forms ×1
gethashcode ×1
html ×1
iterator ×1
module ×1
parameters ×1
python ×1
scope ×1
select ×1
singleton ×1
sqlite ×1
string ×1
trim ×1
url ×1
variables ×1
winapi ×1
windows ×1