小编DBe*_*nko的帖子

如何在最后X次提交中添加的行中搜索和替换字符串?

我做了5次提交,其中引用了一些变量FooObj。然后我意识到那FooObj是错误的选择并创造了BarObj。现在,我想进行一次提交,FooObjBarObj 在这5次提交中添加的行中替换字符串的所有实例。

我无法在整个代码库中进行搜索和替换,因为FooObj仍然可以在许多地方正确使用它;必须将其本地化为这5个提交。

我可以手动替换,但是有自动方法吗?

git replace sed

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

如何摆脱`continue`混淆的编译器警告?

编译器向我显示以下代码的以下警告:

Warning: W1036 Variable 'Address' might not have been initialized
Run Code Online (Sandbox Code Playgroud)

代码(基于实际代码的MVCE代码段):

function DoFoo(): Integer;
var
  i: Integer;
  Address, Bar: Cardinal;
begin
  for i := 1 to 5 do
  begin
    try
      Address := Hex2CardPos(IntToStr(i));
    except on EConvertError do
      continue;
    end;
    Bar := Address + 42;  // "Warning: Address might not have been initialized"
  end;
  Result := 42;
end;
Run Code Online (Sandbox Code Playgroud)

如您所见,Address是:

  1. 分配给结果 Hex2CardPos()
  2. Hex2CardPos() 抛出错误并立即跳过循环迭代.

我试图通过Address := 0;在循环开头添加一个无用的东西来解决这个问题,但是警告只是替换为另一个:

Hint: H2077 Value assigned to 'Address' never used.
Run Code Online (Sandbox Code Playgroud)

这是编译器错误还是警告有实质内容?

delphi compiler-warnings delphi-xe2

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

使用formatprg = autopep8时如何设置正确的缩进?

设置以下选项: setlocal formatprg=autopep8\ -aa\ -

当我在可视模式中选择一行并按下时gq,autopep8对该行进行修改,但它也改变了该行的缩进:它默认为4个空格的缩进,无论该行的当前缩进级别(s) ).我希望它假设线条正确缩进,因此不要管它们.

同样,如果我设置--indent-size 8开关,autopep8它会将线条推到8个空格的缩进级别.请注意,如果视觉选择足够大以包含顶级缩进(即没有缩进的地方),则所有内容都会正确缩进.但在提交之前,我倾向于Visual Select较小的块.

python vim pep8

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

如何用ack指定忽略模式?

我正在尝试搜索包含'foo'的行,但这些行不能包含'bar'.使用这些参数进行搜索的好方法是ack什么?

我可以:

ack "foo" | grep -v "bar"

但它并没有保持良好的布局和彩色输出ack.另外,grep与Perl正则表达式相比,它没有很好的支持ack.

shell grep piping ack

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

如何解开构造函数相互依赖的2个组件?

我正在使用这个答案强制我自己TPopupMenu通过标准窗口"剪切/复制/粘贴"上下文菜单.问题是我不知道如何布置OO结构来实现这一点.

unit BaseRamEditor.pas
type
  { This will override the default TStringGrid. }
  TStringGrid = class(Grids.TStringGrid)
  protected
    function CreateEditor: TInplaceEdit; override;
  end;

  TfrmBaseRamEditor = class(TForm)
    sgrSync: TStringGrid;
    RamEdPopup: TPopupMenu;

    procedure MenuItem1Click(Sender: TObject);

implementation

{$R *.dfm}

function TStringGrid.CreateEditor: TInplaceEdit;
{ Use our TPopupMenu instead of Windows default. }
begin
  Result := inherited CreateEditor;
  // XXX: I don't know how to reference the `RamEdPopup` object that belongs to
  // `TfrmBaseRamEditor`. I can't reference the `TfrmBaseRamEditor` instance
  // because it …
Run Code Online (Sandbox Code Playgroud)

delphi delphi-xe2

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

为什么访问动态数组的越界索引不会引起AV?

在VCL中,TByteDynArray被定义为动态数组:

type TByteDynArray = array of Byte;
Run Code Online (Sandbox Code Playgroud)

但似乎没有完成索引边界检查:

var
  DataBytes: System.Types.TByteDynArray;
  i: Integer;
begin
  SetLength(DataBytes, 2);
  DataBytes[5] := 222; // Accessing index beyond set length.
  i := DataBytes[5]; // `i` is now set to "222".
Run Code Online (Sandbox Code Playgroud)

上面的代码运行没有错误.

为什么AccessViolation不像一个静态数组一样被提升?什么是点SetLength,如果你可以访问和修改65536个字节数组变量的内存,无论长度设定的?

delphi delphi-xe2

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

如何让方法在返回之前发送信号并等待插槽?

我有一个ConnectionManager方法的类get_wifi_ssids()必须返回一个SSID列表.问题是需要使用这些SSID信号和插槽,但我无法找到一种方法来检索该信息而无需先退出该方法.

这是从最低级别到最高级别使用的类的层次结构.

/** Controls wireless network card by commanding a software component "connman" via DBus. */
class WifiController : QObject {
Q_OBJECT

public:

    void scan();
}

/** Low level interface to network interfaces. */
class NetworkController : QObject {
    Q_OBJECT

public:

    void scan_for_wifi() {
        wifi_controller.scan();
        // When scan is finished it sends the
        // NetworkTechnology::scanFinished signal.
    }

    // Gets info from cache. This cache is updated when a `scan()` happens.
    QList<AccessPointInfo> get_available_access_points;

private:
    WifiController wifi_controller;
} …
Run Code Online (Sandbox Code Playgroud)

c++ qt slot c++11 qt-signals

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

为什么paint()不会产生StackOverflowError?

我一直在想:为什么该paint()方法不会生成StackOverflowError?我知道paint()必须在后台重复运行,但是什么限制它只能以计算机可以处理的速度调用它而不会产生StackOverflowError?那么它不会重复paint()到使用太多内存的程度?

java stack-overflow

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

如何一次查看所有存储?

通过发出以下命令,逐个阅读许多存储是很耗时的:

git stash show -p 'stash@{N}' # Where "N" is the stash index

有没有办法一次查看所有存储(以补丁程序形式)?请注意,我不想查看所有合并为一个大补丁的存储,因为这将阻止我应用特定的存储,这是我想要做的。

git git-stash

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

为什么要宣布成员公开而不是发表?

宣布成员优先publishedpublic:

那么宣布成员public而不是published?请问published有什么缺点?或者我应该经常宣布成员published吗?


PS:不重复; 在发布我的问题之前,我已经阅读了这个问题及其所有答案."可能重复"的问题解释了两个关键字之间的区别,但在使用任何一个关键字时都没有提供指导,或者使用任何一个关键字的优点/缺点.

delphi rtti

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

标签 统计

delphi ×4

delphi-xe2 ×3

git ×2

ack ×1

c++ ×1

c++11 ×1

compiler-warnings ×1

git-stash ×1

grep ×1

java ×1

pep8 ×1

piping ×1

python ×1

qt ×1

qt-signals ×1

replace ×1

rtti ×1

sed ×1

shell ×1

slot ×1

stack-overflow ×1

vim ×1