小编saa*_*stn的帖子

使用Git插件时Visual Studio中的diff工具

微软已经为Visual Studio 2012发布了一个Git插件.我发现它很棒,但似乎没有任何选项可以更改默认的Diff工具.更糟糕的是,我无法对ascx代码隐藏文件做差异.它仅显示主.ASCX文件的diff选项.

你怎么

  1. 使用git插件时区分代码隐藏文件?
  2. 改变差异工具?

git visual-studio git-difftool

20
推荐指数
2
解决办法
9737
查看次数

Windows图元文件的尺寸是否有限制?

我正在创建一些.wmf文件,但其中一些似乎已损坏,无法在任何元文件查看器中显示.经过一些反复试验,我发现问题是由它们的尺寸引起的.如果我按比例缩放相同的图形以减小尺寸,则会显示.

现在,我想知道绘图的大小是否存在限制,或者问题是否是其他问题.我知道这些文件有16位数据结构,所以我猜每个维度的限制是2 ^ 16个单位,(如果签名则为2 ^ 15).但在我的测试中它大约是25,000.所以我不能依赖这个值,因为限制可以是任何东西(宽度*高度可能,或者图纸的分辨率可能会影响它).我找不到关于描述这个的.wmf文件的可靠资源.

以下是显示问题的示例代码:

procedure DrawWMF(const Rect: TRect; const Scale: Double; FileName: string);
var
  Metafile: TMetafile;
  Canvas: TMetafileCanvas;
  W, H: Integer;
begin
  W := Round(Rect.Width * Scale);
  H := Round(Rect.Height * Scale);

  Metafile := TMetafile.Create;
  Metafile.SetSize(W, H);

  Canvas := TMetafileCanvas.Create(Metafile, 0);
  Canvas.LineTo(W, H);
  Canvas.Free;

  Metafile.SaveToFile(FileName);
  Metafile.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
const
  Dim = 40000;
begin
  DrawWMF(Rect(0, 0, Dim, Dim), 1.0, 'Original.wmf');
  DrawWMF(Rect(0, 0, Dim, Dim), 0.5, 'Scaled.wmf');

  try
    Image1.Picture.LoadFromFile('Original.wmf');
  except
    Image1.Picture.Assign(nil);
  end;

  try
    Image2.Picture.LoadFromFile('Scaled.wmf');
  except …
Run Code Online (Sandbox Code Playgroud)

delphi winapi wmf

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

记录类型(或数组)的前向声明

我想在XE5中这样做:

type
  TMyRec = record
    // fields
    class function GetList: TMyRecArr; static;
  end;

  TMyRecArr = array of TMyRec;
Run Code Online (Sandbox Code Playgroud)

我已经看过"记录类型的前向声明""如何进行类型转发声明?" ,但它们似乎无关紧要,因为我的问题是没有将记录作为参数传递.

delphi delphi-xe5

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

为什么滚动ADOTable变得越来越慢?

我想从MS Access文件中读取整个表,我正在尝试尽快完成.在测试大样本时,我发现循环计数器在读取与表的最后记录相比的最高记录时增加得更快.这是一个演示此示例的示例代码:

procedure TForm1.Button1Click(Sender: TObject);
const
  MaxRecords = 40000;
  Step = 5000;
var
  I, J: Integer;
  Table: TADOTable;
  T: Cardinal;
  Ts: TCardinalDynArray;
begin
  Table := TADOTable.Create(nil);
  Table.ConnectionString :=
    'Provider=Microsoft.ACE.OLEDB.12.0;'+
    'Data Source=BigMDB.accdb;'+
    'Mode=Read|Share Deny Read|Share Deny Write;'+
    'Persist Security Info=False';
  Table.TableName := 'Table1';
  Table.Open;

  J := 0;
  SetLength(Ts, MaxRecords div Step);
  T := GetTickCount;
  for I := 1 to MaxRecords do
  begin
    Table.Next;
    if ((I mod Step) = 0) then
    begin
      T := GetTickCount - T;
      Ts[J] := T;
      Inc(J);
      T …
Run Code Online (Sandbox Code Playgroud)

delphi ms-access ado delphi-xe5

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

如何获取类型集的任何变量的元素数量?

AFAIK没有内置功能.在网上搜索我找到了这个功能,它对我有用,但我不喜欢使用它,因为它是汇编,我无法理解它在做什么.所以我写了这个函数也有效:

function Cardinality(const PSet: PByteArray;
  const SizeOfSet(*in bytes*): Integer): Integer;
const
  Masks: array[0..7] of Byte = (1, 2, 4, 8, 16, 32, 64, 128);
var
  I, J: Integer;
begin
  Result := 0;
  for I := 0 to SizeOfSet - 1 do
    for J := 0 to 7 do
      if (PSet^[I] and Masks[J]) > 0 then
        Inc(Result);
end;
Run Code Online (Sandbox Code Playgroud)

现在,我想知道我是否可以依赖这个功能?或者也许设置数据类型背后有一个技巧,这就是delphi没有内置方法的原因.

if我的功能是可靠的then,我怎样才能改进它:

  1. 将常量传递给它
  2. 进行类型检查并确保将一个集传递给该函数
  3. 传递值而不是其地址
  4. 摆脱SizeOfSet参数

我想把它称为Cardinality(AnySet)而不是Cardinality(@AnySet, SizeOf(TAnySet)).

顺便说一句,我需要在XE和XE5中编译它.

delphi set delphi-xe delphi-xe5

9
推荐指数
2
解决办法
2205
查看次数

如何在名称中包含冒号的表上运行查询?

我正在从.mdb文件(MSAccess 2000格式)中读取数据.有些桌子的名字中有冒号.当我尝试在这些表上打开查询时,我收到异常:

EOleException with message 'Parameter object is improperly defined. Inconsistent or incomplete information was provided'.
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

procedure TForm1.Button1Click(Sender: TObject);
var
  Query: TADOQuery;
begin
  Query := TADOQuery.Create(nil);
  Query.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;'+
    'Data Source=DB.mdb;Persist Security Info=False';
  Query.SQL.Text := 'select * from [Table1:1]';
  try
    Query.Open;
  finally
    Query.Free;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

delphi ms-access query-parameters query-string

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

如何用不连续的半径恒定的圆覆盖平面中的一组圆?

So you have a sheet / area of a given dimension, and within this area are holes (their center point(x,y) and radius are given). The problem is you need to cover these holes with patches. These circular patches have a fixed radius (ie: radius of 5) and are not allowed to overlap with each other (but can touch). You're allowed to use as many as you like, the goal is not to find the most optimal number, but to see …

language-agnostic algorithm optimization geometry computational-geometry

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

在 Matlab 中删除图像偏移(2D 基线)

我有一张与此类似的图像:

在此处输入图片说明

并希望删除其底层基线,使其看起来像:

在此处输入图片说明

图像总是不同的,通常有一些峰值,并且具有总绝对偏移和倾斜/弯曲/非线性的基面。

我正在考虑对常见信号光谱使用 1D 基线拟合和减法技术,并创建一个 2D 基线图像,然后从数字上减去每个图像。但是在 2D 中无法完全理解它。

这是我之前问过的一个改进的问题,但这个问题应该更清楚。

matlab image-processing curve-fitting offset baseline

6
推荐指数
2
解决办法
308
查看次数

调用从接口和另一个祖先继承的类的方法

我在实现某些类之间的关系时遇到问题.我有三个不同的课程,提供三种不同的形式.所有这些类都使用相同的语言,因此它们是从同一个类中继承的TAncestorServer.让我们把它的后代TForm1Server,TForm2ServerTForm3Server.TAncestorServer包含一个名为的抽象方法Function1,所以TForm1,TForm2并且TForm3可以通过它们自己继承的类来调用它,它们可以通过名为的属性访问类Server.但问题在于另一种形式叫做TForm4!它与其他形式非常相似,但它并不像他们那样独立.它适用于TForm2ServerTForm3Server.还没问题,但像想象另一种方法,Function2这是在宣布TForm2ServerTForm3Server,TForm4需要给他们打电话.我可以这样:

if Server is TForm2Server then
   TForm2Server(Server).Function2
else if Server is TForm3Server then
  TForm3Server(Server).Function2;
Run Code Online (Sandbox Code Playgroud)

但它可以变成一个无限的if-else子句!所以我认为像多重继承这样的东西可能会有所帮助.我声明了一个名为IForm4Servercontains 的接口Function2.所以TForm2Server,TForm3Server继承两者TAncestorServerIForm4Server.我认为这样的事情可行:

If Server is IForm4Server then
  IForm4Server(Server).Function2;
Run Code Online (Sandbox Code Playgroud)

但是编译器不这么认为,它说它不是一个有效的类型转换,因为TAncestorServer它不是IForm4Server,这是绝对正确的.TForm1Server不知道实施Function2,不得不留空.我不能宣布TForm4.ServerIForm4Server …

delphi oop interface multiple-inheritance

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

如何在不同的子图中应用不同的颜色图?

我或多或少做了以下几点:

figure
for ii=1:4
    subplot(2,2,ii)
    imshow(image(ii))
    hcb = colorbar;

    switch ii
        case 1
            colormap(myMap)
            set(hcb,'YTickLabel', .. )
            set(hcb,'YTick', .. )
        case 2
            colormap(myMap)
            set(hcb,'YTickLabel', .. )
            set(hcb,'YTick', .. )
        case 3
            colormap(myMap)
            set(hcb,'YTickLabel', .. )
            set(hcb,'YTick', .. )
        case 4
            colormap(aDifferentMap)
            set(hcb,'YTickLabel', .. )
            set(hcb,'YTick', .. )
    end
end
Run Code Online (Sandbox Code Playgroud)

我面临的是,要求colormap(aDifferentMap)第四个情节(ii=4),为前三个情节搞砸了:在我的最终图中,所有aDifferentMap颜色条都有颜色图,同样也有一些YTick属性问题.

如果我colormap(aDifferentMap)在案例4中注释掉,那一切都很好(除了第四个子图,它将有一个错误的色图而且没有任何Ytickes).

我怎么处理这个?如何在subplot(2,2,4)不影响子图1:3 的情况下设置属性?

matlab colorbar matlab-figure colormap

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