小编use*_*105的帖子

如何在regexp中正确转义字符

我想在字符串中进行字符串搜索.简单地说MySTR.search(Needle).

当此needle字符串包含特殊的正则表达式字符,如*,+等时,会出现此问题.它失败了,错误invalid quantifier.

我浏览过网页,发现字符串可以转义\Q some string \E.

但是,这并不总能产生所需的行为.例如:

var sNeedle = '*Stars!*';
var sMySTR = 'The contents of this string have no importance';
sMySTR.search('\Q' + sNeedle + '\E');
Run Code Online (Sandbox Code Playgroud)

结果是-1.好.

var sNeedle = '**Stars!**';
var sMySTR = 'The contents of this string have no importance';
sMySTR.search('\Q' + sNeedle + '\E');
Run Code Online (Sandbox Code Playgroud)

结果是"无效量词".发生这种情况是因为2个或更多特殊字符互相"触摸",因为:

var sNeedle = '*Dont touch me*Stars!*Dont touch me*';
var sMySTR = 'The contents of this string have no importance';
sMySTR.search('\Q' + sNeedle …
Run Code Online (Sandbox Code Playgroud)

javascript regex escaping

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

哪个更快,XPath还是Regexp?

我正在为firefox创建一个附加组件,它使用ajax加载一个html页面(附加组件有它的XUL面板).

现在,在这一点上,我没有搜索创建document对象的方法,并将ajax请求内容放入其中,然后使用xPath查找我需要的内容.
相反,我正在加载内容并将其解析为具有常规表达的文本.

但我有一个问题.哪个更好用,xPath或正则表达式?哪个更快?

HTML页面将包含数百个包含相同文本的元素,我基本上想要做的是计算有多少元素.

我希望我的附加组件尽可能快地工作,我不知道regexp或xPath背后的机制,所以我不知道哪个更有效.

希望我很清楚.谢谢

javascript regex performance xpath firefox-addon

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

PC崩溃导致GIT Rebase操作中断.现在存储库不可用

我的存储库中有2个分支.其中任何一个都没有未提交的变更.

我拉了branch1,检查了branch2,并在branch1上启动了branch2 rebase.
在工作中,我的电脑崩溃了.

在它最终启动后,我打开GitExtensions以发现我的存储库是完全空的,我看到闪烁'rebase under way'或类似的东西,我点击它,它弹出我必须选择修复冲突的窗口,这不应该发生.如果我单击"解决",它将打开应显示冲突文件的窗口,当然没有.

我试图点击,abort rebase但它说文件夹是not a git repository or any of the parents.

从那时起,我可以做任何事情.我无法中止,看不到提交.打开git bash告诉我/some/path/to repo/repo name ((...) | REBASE )

当我写git status它时说它不是一个存储库.

好吧,我不会那么关心失败的rebase但是我注意到我的所有源文件都变成了二进制文件,这意味着,我的提交的提交都是LOST,除非你们可以帮我恢复它.

我想重新分支并推动它....这令人沮丧.

编辑1:

.git目录在应用程序库目录(/some/path/to_repo/repo_name/.git)中.当重新应用branch2提交时,PC崩溃了.这意味着branch1提交已经应用于branch2,唯一剩下的就是完成应用branch2提交.并且在应用了10或20次提交后崩溃了.

我现在比较了一个克隆回购的.git direcotries和一个崩溃的回购.

克隆的repo有这些文件夹:
hooks
info
logs
objects
refs
和这些文件:
config
description
HEAD
index
packed-refs

崩溃的文件夹有一个额外的文件夹rebase-apply,也有额外的文件:
COMMIT_EDITMSG
FETCH_HEAD
ORIG_HEAD

其他一切似乎都匹配.我没有深入到文件夹.并没有尝试比较文件内容.

git windows-7 git-extensions

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

捕获"删除"键

我无法弄清楚如何捕获Delete按键.我发现在ASCII码表中,它位于127位,但if (Key = #127) then让我无处可去.

然后我检查了VK_DELETE它的值是47.试图使用它,但它没有用.

KeyPreview := true在我的形式设置.

我尝试将其添加ShowMessage(IntToStr(Ord(Key)))到Forms KeyPress事件中,但是在单击Delete键时我从未收到消息弹出窗口.

我需要Delete在动态创建的编辑字段中处理按键操作.我想控制文本用户可以在该字段中删除哪些部分,并且我知道如何使用Backspace键处理文本删除,现在需要弄清楚如何使用键来执行此操作Delete.

谢谢

delphi keypress delphi-2009

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

更新单个表上的两个不同行时发生死锁

读了很多关于死锁的文章,当我以为我很了解它时,问题就来了。

有两笔类似的交易同时进行。它们如下所示:

BEGIN TRAN //read_committed_snapshot ON

//an application sends insert query
INSERT INTO t1 VALUES('Name',15)

//later on application sends update query for the newly inserted row
UPDATE t1 SET name='NewName', number=16 WHERE id = 10 //this ID is the id of the inserted row. 

COMMIT
Run Code Online (Sandbox Code Playgroud)

给定的代码与我在应用程序中使用的代码并不完全相同,但想法是相同的,只是有更多的列。

表t1有主键ID,一些非聚集索引。

同时运行其中两个事务后,就会出现死锁。探查器表示UPDATE t1 SET name='NewName', number=16 WHERE id = :id每个冲突进程的死锁查询都是这样的。

抱歉,我没有死锁的 XML,但探查器告诉我两个进程都有 X 锁,并且都尝试获取 U 锁。

process 1
owner - X
waiter - U

process 2
owner - X
waiter - U …
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2008-r2

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

使用字符串指针通过Windows消息发送字符串

我试图了解如何指向字符串工作.我有一个代码(不完全原创),这是由某人写的,而且这个人不在这里,所以我需要理解这种用法​​的想法.

var
  STR: string;
  pStr: ^string;
begin
  STR := 'Hello world';
  New(pStr);
  pStr^ := STR;

  PostMessage(Handle, WM_USER+1, wParam(pStr), 0);
end;
Run Code Online (Sandbox Code Playgroud)

现在我肯定知道,消息处理程序获取消息并且指针包含可以使用的字符串,但是在这些操作的"幕后"会发生什么

我试着做一个小项目.我认为,将字符串分配给str指针指向的字符串实际上会增加原始字符串的refcount并且不会创建字符串的任何副本,但refcount保持为1并且它似乎确实复制了内容.

所以得到问题,发生了什么?调用New指针会分配一个空字符串,对吧?在赋值后,我试着查看一个字符串的refcount/length,指针指向这样PChar(@pStr^[1])[-8]但是它返回了废话(14),并且长度字节也是错误的.

另外问题是,使用指针以这种方式通过Windows消息传递字符串是否安全?

delphi string pointers delphi-7

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

调用可导出函数列表中的另一个函数

我编写了一个库,其中包含一些正在导出的函数.一个例子:

[DllExport("Test", CallingConvention = CallingConvention.StdCall)]
public static void Test() {
    MessageBox.Show("Test 1");
}

[DllExport("Test2", CallingConvention = CallingConvention.StdCall)]
public static void TestTwo() {
    MessageBox.Show("Test 2");
    Test();
    //TestThree();
}

public static void TestThree() {
    MessageBox.Show("Test 3");
}
Run Code Online (Sandbox Code Playgroud)

当我Test从外部应用程序(Delphi)调用它工作正常,我得到消息框.
当我调用时Test2,我在Delphi中获得了External异常.异常被立即抛出,它甚至没有显示消息框Test 2.当我调用Test2哪个调用TestThree哪个不是可导出的函数时,它运行正常,我得到两个,消息框Test 2Test 3.

为什么我不能在我的DLL中调用其他导出的函数?有什么方法可以做到吗?

编辑1:

在这一点上,我可以通过执行以下操作来实现我所需要的:创建另一个不可导出的函数Test_Local(),移动所有代码Test.现在,函数也调用而不是Test()TestTwoi调用调用Test_Local()TestTest_Local();

一切运行正常,直到Test_Local()尝试运行任何其他可导出的功能.

因此,在另一个可导出函数中调用可导出函数是不合适的,并且它们之间有多少层不可导出的函数并不重要.

c# dll dllexport

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

在我的自定义组件中,如何增强鼠标输入和-leave事件?

我正在制作一个派生TPanel的自定义Panel组件.

我希望我的新组件在OnMouseEnterOnMouseLeave事件上执行一些代码,但是,我不知道如何实现它.

我看到TPanel发布了OnMouseEnter,OnMouseLeave属性.

我如何覆盖这些并添加一些我自己的代码?

我的想法的例子:TMyPanel的
默认行为应该在组件本身.

on event OnMouseEnter do: Color := NewColor;
on event OnMouseLeave do: Color := OldColor;
Run Code Online (Sandbox Code Playgroud)

然后,我希望能够在运行时为这些事件分配一些功能.此分配在应用程序中完成.

.. TButton1.Click ..
begin
    MyPanel1.OnMouseEnter := DoSomethingMore;
    MyPanel1.OnMouseLeave := DoSomethingElse;
end;
Run Code Online (Sandbox Code Playgroud)

所以最后,当鼠标在新面板上时,它应该改变颜色并执行在DoSomethingMore过程中编写的其他一些操作.

谢谢

delphi events custom-component

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

如何在我的TEdit控件中捕获VK_TAB键并且不让它失去焦点?

在我的TEdit字段中,我在表单中有文本<number1>..<number2>.

我的想法是:

当用户使用TAB另一个控件输入控件时,number1将被选中.

当我的TEdit控件有焦点并且用户TAB再次按下时,我想要number2选择并number1取消选择.

如果当前插入位置位于number2所在的位置,则按下TAB应该正常并将焦点移动到表单上的下一个控件.

我有2个问题.

  1. 当"编辑"字段已激活时,我无法按下Tab键.我只能在输入/聚焦此控件时捕获它.

  2. 我不知道是否有类似于#0的键,所以我可以把钥匙变成NoOP.

有什么想法,怎么做?

delphi keypress delphi-2009

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

是否可以改变一条线的大小?

我在TImage Canvas上绘制了一条虚线,发现破折号的大小对于绘图区来说太大了.有没有办法改变画布上画线的破折号?
这就是我能够绘制虚线的方法.

Canvas.Pen.Style := psDash;
Canvas.Polyline(myPoints);
Run Code Online (Sandbox Code Playgroud)

我没有找到任何可以改变短划线尺寸/长度的Pen属性.

谢谢

delphi canvas polyline

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