我想从文档中获取修改后的原始文本.我是这样做的:
Set wrdDoc = wrdApp.Documents.Open(fileName)
For each sent in wrdDoc.Sentences
if sent.Revisions.Count >=0 then
after=sent.text
sent.Revisions.RejectAll
before=sent.text
SaveRev(before,after)
End if
next
Run Code Online (Sandbox Code Playgroud)
现在这样会很好,除了那些畸形的句子之外
这是一句话.这是另一个.
将以一种奇怪的方式解析.首先,会出现这样的一句:" 这是一句话. "然后这一句既有" 这是一句话.这是另一句话. "
当有修改时会发生什么?第一次迭代将恢复对第一个句子的修订,然后第二次迭代将不会"看到"该修订部分.
底线是,第一次迭代将获得第一个句子的两个版本,第二次迭代将只获得第一个句子的原始版本(同时从第二个句子获得两个版本).
让我澄清一下:
假设我有原版
我们从这句话开始.这句话.
它被修改为
我们以这句话结束了.还有这句话.
第一次迭代将导致
之前:我们从这句话开始.
之后:我们以这句话结束了.
但第二次迭代将有
之前:我们以这句话结束了.这句话.
之后:我们用这句话结束了.还有这句话.
好吧,我所做的是改变逻辑,撤消版本恢复:
Set wrdDoc = wrdApp.Documents.Open(fileName)
For each sent in wrdDoc.Sentences
if sent.Revisions.Count >=0 then
wrdDoc.Undo
after=sent.text
sent.Revisions.RejectAll
before=sent.text
SaveRev(before,after)
End if
next
Run Code Online (Sandbox Code Playgroud)
我喜欢这个,因为我最终得到了一个未经改动的文件(最后一句除外).
问题是,这样做会将宏放在一个特定句子的无限循环中.
我不知道每个人的机制,我不知道导致它挂起的原因.显然改变集合会搞乱循环,但我不明白为什么.
我可以将i = 0循环到wrdDoc.Sentences.Count,但我认为这会让我跳过句子的原因与我现在重复的一样,我不能冒险(即使我测试好了,我必须是确定它永远不会发生).
所以问题是(是):
非常感谢你!
PS:我可以提供样本文件,让我知道是否需要(也许我做错了已经让某人清楚了,我必须制作样本,因为我无法分享我正在处理的文件).
- …
Webpack 抛出如下所示的错误。构建似乎有效,但是,是什么给出了?
./{snip}/readme.md 中的警告模块解析失败:C:{snip}\readme.md Unexpected token (1:7) 您可能需要适当的加载程序来处理此文件类型。
我找不到任何忽略文件的方法。我什至不知道它为什么要渲染这些文件。
以下是我的 webpack 设置文件的一些部分:
module: {
loaders: [
{test: /\.hb.html$/, loader: "handlebars-loader/?helperDirs[]=" + __dirname + "/src/handlebarsHelpers"},
{ test: /\.tsx?$/, loader: "ts-loader?" + JSON.stringify({
transpileOnly: true
})}
]
},
Run Code Online (Sandbox Code Playgroud)
入口:
entry: "./src/entry.ts",
Run Code Online (Sandbox Code Playgroud)
和
resolve: {
extensions: ["", ".webpack.js", ".web.js", ".ts", ".tsx", ".js"],
Run Code Online (Sandbox Code Playgroud)
我尝试在打字稿配置文件中排除 .md 文件,也没有奏效。
假设我有这些
myInterval=setInterval(funcA,50);
function funcA(){
//Some code that takes longer than 50ms to run
}
setTimeout(function(){clearInterval(myInterval);},10000}
Run Code Online (Sandbox Code Playgroud)
假设funcA总是花费超过50ms来简化它.当然,许多funcA运行会堆积起来并排队.clearInterval会删除那些排队的运行还是只是停止排队新运行?
我确实做了一个小提琴来测试它,结果发现clearInterval会停止所有未来的执行,即使是已经排队的那些.我只需要确认这种行为是一致的(跨浏览器/平台).
var myInterval=setInterval(funcA,20);
setTimeout(function(){
clearInterval(myInterval);
console.log('Clearing interval at ' + Date.now());
},400);
var lastRunTimeStamp=0;
function funcA(){
while(Date.now()<lastRunTimeStamp+25){}
lastRunTimeStamp=Date.now();
console.log('Run at ' + lastRunTimeStamp);
}Run Code Online (Sandbox Code Playgroud)
--Update--
此问题中的排队执行假设不正确,请查看TJ Crowder的答案以获得解释.
在 3 层应用程序中,我使用我的业务实体dbSets在我的dbContext.
在业务层:
public class User
{
string name {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
在数据层:
public context:DbContext
{
public DbSet<User> Users {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
那么我的问题是如何封装实体上的逻辑?我可以使用扩展方法,但我还想要一些属性,并且我不希望它们泄漏到域层之外。
我有一个自动滚动的表单,并且表单中有一个用户可编辑的区域。用户可以调整大小或移动控件。
移动控件时,如果将它们移到窗体的客户区之外,则会显示滚动条。这是我的意图。
现在,表单将自动向下滚动,因此当用户不释放鼠标时,控件将继续向下移动。这显然不是故意的。
我曾尝试在移动(或调整大小)开始时禁用自动滚动,但效果不佳......如果控件超出了表单的客户端,则一旦移动开始,它就会向上(或向左)移动。
移动子控件时锁定滚动条的方法是什么?
---编辑:示例代码---
只是一个关于移动控件的例子。
//Start moving if the button is clicked on
public void Button1_OnMouseDown()
{
_moving=true;
}
//If the button was clicked on, move it to mouse position
public void OnMouseMove(object sender, MouseEventArgs e)
{
if(_moving)
Button1.Location=new Poiny(e.X, e.Y);
}
Run Code Online (Sandbox Code Playgroud)
当我移出窗体的边界时,滚动条出现并开始向下/向右滚动以适应控件......这反过来又移动控件,因为有鼠标移动事件,依此类推......
c# ×2
javascript ×2
.net ×1
3-tier ×1
foreach ×1
typescript ×1
vba ×1
webpack ×1
winforms ×1
word-vba ×1