小编Gro*_*rMD的帖子

VBA功能中的可选范围

我试图返回某个范围的列数,有时我需要一个范围,但是有时我需要多个范围。

我设置了可选范围,因此可以选择多个范围。如果引用函数原型中未在电子表格中提供的范围,则会得到#Value!错误。

我需要一种方法来检查可选范围是否为null,void empty等。因此,我不必引用该范围。

这是VBA函数原型:

Function GetColoumnCount(ARange1 As Range, Optional ARange2 As Range, Optional ARange3 As Range, Optional ARange4 As Range) As Integer

    Dim Result As Integer
    Result = 0

    Result = ARange1.Columns.Count ' This works
    Result = ARange1.Columns.Count + ARange2.Columns.Count ' This doesn't work

    GetColoumnCount = Result    
End Function
Run Code Online (Sandbox Code Playgroud)

在我的电子表格中,我必须在一个单元格中输入此内容才能使该功能起作用。
=GetColoumnCount(BC34:BK34, BC35:BD35, BE35:BF35, BG35:BH35)
这违反了具有可选参数的目的。

excel vba excel-vba

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

如果未调用TPngImage.Free(),则在TPngImage超出范围时调用TPngImage.Destroy()

我有一个函数,它将TPicture作为参数并返回一个TPngImage.为了保留原始图像,我创建了一个TPngImage并将TPicture复制到TPngImage,应用效果并返回TPngImage.就是这样.

function Effect( const Value : TPicture ) : TPngImage;
  var
    AnImage : TPngImage;

  begin
    if( Value.Graphic is TPngImage ) then
      begin
        AnImage := TPngImage.Create();
        AnImage.Assign( TPngImage( Value ) );
        //Apply effect
        Result := AnImage;
        //AnImage.Free(); //error
      end;
  end;

procedure TForm11.Button1Click( Sender : TObject );
  begin
    Image2.Picture.Assign( Effect( Image1.Picture ) );
  end;
Run Code Online (Sandbox Code Playgroud)

在创建对象时,何时释放创建的对象.我不能在函数中调用TPngImage.Free(),因为它会在赋值之前销毁对象.那么如何释放创建的对象呢?当对象超出范围时,TPngImage是否调用其析构函数?据我所知,不释放对象会导致内存泄漏.

delphi graphics png

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

Delphi Resourcestring和Const表达式

我正在尝试为资源字符串设置Tab char,如下所示

const
  Tab : string = Chr( 9 );

resourcestring
      xmlversion = Tab + '<?xml version="1.0" encoding="utf-8" ?>';
      codetemplate = Chr( 9 ) + '<codetemplate xmlns="http://schemas.borland.com/Delphi/2005/codetemplates" version="1.0.0">';
Run Code Online (Sandbox Code Playgroud)

第一个resourcestring不起作用.编译器返回'E2026期望的常量表达式'.

第二行代码编译正常.它只是一个与Tab相同的代码.

delphi resourcestring

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

获取此数组的元素数?

我有这个数组,对于我的生活,我无法找到如何返回元素数.

我查看了perl网站,但似乎无法找到答案.如何返回以下元素计数?

my $animals = [ "dog", "cat", "canary", "mouse", ];

foreach my $i (0..$animals){ #this does not work
print $animals->[$i]
}
Run Code Online (Sandbox Code Playgroud)

perl

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

Asm等同于delphi程序

我有一个名为SetCompare的简单delphi函数,它比较两个单例,如果它们不相等,则将一个值设置为另一个.

procedure SetCompare( A : single; B : single );
  begin
    if( A <> B ) then
      A := B;
  end;
Run Code Online (Sandbox Code Playgroud)

我试图将其转换为asm:

procedure SetCompare( A : Single; B : Single ); register;
  begin
    asm
      mov EAX,A
      mov ECX,B
      cmp EAX,ECX
      jne SetValue

      @SetValue:
      mov EAX,ECX
    end;
  end;
Run Code Online (Sandbox Code Playgroud)

这会有用吗?

delphi assembly x86-64

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

标签 统计

delphi ×3

assembly ×1

excel ×1

excel-vba ×1

graphics ×1

perl ×1

png ×1

resourcestring ×1

vba ×1

x86-64 ×1