我试图返回某个范围的列数,有时我需要一个范围,但是有时我需要多个范围。
我设置了可选范围,因此可以选择多个范围。如果引用函数原型中未在电子表格中提供的范围,则会得到#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)
这违反了具有可选参数的目的。
我有一个函数,它将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是否调用其析构函数?据我所知,不释放对象会导致内存泄漏.
我正在尝试为资源字符串设置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相同的代码.
我有这个数组,对于我的生活,我无法找到如何返回元素数.
我查看了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) 我有一个名为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)
这会有用吗?