我们通过将新记录写入临时文件,然后用临时文件替换旧文件来执行大型文本文件的更新.一个严重缩写的版本:
var tpath = Path.GetTempFileName();
try
{
using (var sf = new StreamReader(sourcepath))
using (var tf = new StreamWriter(tpath))
{
string line;
while ((line = sf.ReadLine()) != null)
tf.WriteLine(UpdateLine(line));
}
File.Delete(sourcepath);
File.Move(tpath, sourcepath);
}
catch
{
File.Delete(tpath);
throw;
}
Run Code Online (Sandbox Code Playgroud)
如果有任何异常抛出异常(找不到文件,没有权限),原始文件保持不变,这就是我们想要的.
但是,代码存在以下问题:
是否存在真实的情况,Delete
但是Move
失败了?这将删除原始数据和更新数据.这会很糟糕.
最常见的故障是源文件从另一个应用程序打开,并且Delete
失败.这意味着将丢弃所有更新工作.有没有办法查看源文件在开始时是否可删除,如果没有则放弃更新?
我们让用户将Windows资源管理器摘要属性(如标题或注释)放在文件上.删除文件时会丢弃这些内容.有没有办法将旧文件的Summary属性复制到新文件?我们应该这样做吗?
我正在尝试动态添加HyperLinkColumns到我的GridView.我有以下代码:
HyperLinkColumn objHC = new HyperLinkColumn();
objHC.DataNavigateUrlField = "title";
objHC.DataTextField = "Link text";
objHC.DataNavigateUrlFormatString = "id, title";
objHC.DataTextFormatString = "{2}";
GridView1.Columns.Add(objHC);
Run Code Online (Sandbox Code Playgroud)
这不起作用,所以..我怎么能将HyperLinkColumn添加到我的GridView?
有没有办法将XMLHttpRequest与其他域结合使用?
我想从Google解析一些xml,而不必使用服务器,因此运行起来极其复杂.
var req = getXmlHttpRequestObject();
...
req.open('GET', 'http://www.google.de/ig/api?weather=Braunschweig', true);
req.setRequestHeader("Content-Type","text/xml");
req.onreadystatechange = setMessage;
req.send(null);
Run Code Online (Sandbox Code Playgroud)
在服务器端这样做是不可能的,至少我不必问
如何访问在进入管理员模式时保存的用户R13和R14?我正在使用ARM7TDMI.
IE我不想访问管理程序R14,它现在包含返回用户模式的地址,而不是想要用户模式的链接寄存器的值.这是我正在编写的调试器的一部分.
这些寄存器有特殊的别名吗?
谢谢
我目前正在使用std::ofstream
如下:
std::ofstream outFile;
outFile.open(output_file);
Run Code Online (Sandbox Code Playgroud)
然后我尝试将std::stringstream
对象传递给outFile
如下:
GetHolesResults(..., std::ofstream &outFile){
float x = 1234;
std::stringstream ss;
ss << x << std::endl;
outFile << ss;
}
Run Code Online (Sandbox Code Playgroud)
现在我只outFile
包含垃圾:"0012E708"重复了一遍.
在GetHolesResults
我可以写
outFile << "Foo" << std:endl;
Run Code Online (Sandbox Code Playgroud)
并且它将正确输出outFile
.
关于我做错了什么的任何建议?
我想从php执行一个php脚本,它将使用不同的常量和已经定义的不同版本的类.
是否有沙箱php_module我可以:
sandbox('script.php'); // run in a new php environment
Run Code Online (Sandbox Code Playgroud)
代替
include('script.php'); // run in the same environment
Run Code Online (Sandbox Code Playgroud)
或者proc_open()是唯一的选择吗?
PS:无法通过网络访问该脚本,因此fopen(' http://host/script.php ')不是一个选项.
如何在System.Data.IDataReader中模拟GetValues()方法?
此方法更改传递给它的对象数组,因此它不能简单地返回模拟值.
private void UpdateItemPropertyValuesFromReader( object item, IDataReader reader )
{
object[] fields = new object[ reader.FieldCount ];
reader.GetValues( fields ); //this needs to be mocked to return a fixed set of fields
// process fields
...
}
Run Code Online (Sandbox Code Playgroud) 我正在开发类来表示特殊类型的矩阵:
type
DifRecord = record
Field: String;
Number: Byte;
Value: smallint;
end;
type
TData = array of array of MainModule.DataRecord;
type
TDifference = array of DifRecord;
type
TFogelMatrix = class
private
M: Byte;
N: Byte;
Data: ^TData;
DifVector: ^TDifference;
procedure init();
public
constructor Create(Rows, Cols: Byte);
destructor Destroy;
end;
Run Code Online (Sandbox Code Playgroud)
现在在构造函数中,我需要为Data和DifVector类成员保留内存.正如您所见,我使用指向记录数组的指针.所以,主要的问题是,我该如何正确保留记忆?我想我不能使用类似的东西:
因为我失去了主要想法 - 在运行时保留内存空间,就像我想要的那样.感谢您的评论.
new(Data);
new(DifVector);
我有一个项目要求,我需要在远程/断开连接的WPF应用程序中对ActiveDirectory进行身份验证.
可能有几种方法可以尝试这样做,但使用ActiveDirectory的MembershipProvider的最佳方法是什么?
我需要:
这需要从Active Directory所在的网络外部的远程位置进行.
我有兴趣有选择地解析Mediawiki XML标记,以生成一个自定义HTML页面,该页面是实际PHP Mediawiki渲染引擎生成的HTML的一部分.
我想要它用于BzReader,一个用C#编写的离线Mediawiki压缩转储读取器.所以C#解析器是理想的,但任何好的代码都会有所帮助.
当然,如果以前没有人做过,我想是时候开始一个项目维护一个免费的,独立的Mediawiki解析器,基于Mediawiki自己的解析器,但与Mediawiki本身不太紧密集成.
那么,有没有人知道我可以开始的任何基础,这比通过Mediawiki PHP代码的黑客攻击更好?
c# ×3
php ×2
.net ×1
ajax ×1
arm ×1
c++ ×1
datareader ×1
delphi ×1
gridview ×1
javascript ×1
mediawiki ×1
module ×1
ofstream ×1
open-source ×1
parameters ×1
parsing ×1
pointers ×1
rhino-mocks ×1
roles ×1
sandbox ×1
stl ×1
stringstream ×1
unit-testing ×1
windows ×1
wpf ×1
xml ×1