天道酬勤,学无止境

byref

Collection Object - ByRef - ByVal

I am using VBA in Access 2013. In a regular module there are 2 procedures, RunProc() and PopulateCollection() When RunProc is executed it calls PopulateCollection where the argument passed is an Collection instace named MyCol. PopulateCollection adds 3 items and then RunProc continues by iterating the Collection. My question / problem is this: I want the argument MyCol in RunProc to NOT be populated by PopulateCollection. What is the proper way to accomplish this? Why does PopulateCollection populate both the argument and parameter? ' --------Module1------------------ Option Compare Database

2021-11-29 02:17:24    分类:问答    vba   pass-by-reference   ms-access-2013   byref   byval

Why can't a function with byref be converted directly to delegate?

Under normal circumstances, F# functions can be converted to delegates by calling new DelegateType and passing in the function as an argument. But when the delegate contains byref parameter, this is not possible directly. For example the code: type ActionByRef<'a> = delegate of 'a byref -> unit let f (x:double byref) = x <- 6.0 let x = ref 42.0 let d = new ActionByRef<_>(f) won't compile, giving the following error: This function value is being used to construct a delegate type whose signature includes a byref argument. You must use an explicit lambda expression taking 1 arguments. Following

2021-11-23 16:25:46    分类:问答    f#   delegates   ref   byref

使用主窗体中按下按钮的标题来查询其他窗体(use caption of pressed button from main form in query of other form)

问题 我的问题是: 主窗体有 9 个命令按钮和连续的子窗体。 单击某个按钮打开另一个带有用于输入数量的文本框和两个命令按钮的表单。 当单击第一个按钮时,我想使用主窗体中按下按钮的标题进行查询。 如何获得那个按钮的标题? 谢谢。 回答1 你刚刚点击了按钮,你知道控件的名称,所以我不太明白问题所在,除此之外,这听起来很糟糕。 Private Sub cmdClickMe_Click() Debug.Print Me.cmdClickMe.Caption Debug.Print Screen.ActiveControl.Caption End Sub

2021-11-08 11:06:13    分类:技术分享    ms-access   vba   byref   byval

use caption of pressed button from main form in query of other form

My problem is: Main form has 9 command buttons and continuous subform. Click on some button open other form with text box for entering quantity and two command buttons. When click on the first button I want to use caption of pressed button from main form for query. How to get that button caption? Thanks.

2021-11-05 22:08:18    分类:问答    ms-access   vba   byref   byval

理解byref、ref和&(Understanding byref, ref and &)

问题 嗯,我开始明白 F# 能够管理引用(某种类似于 C++ 的引用)。 这使更改函数中传递的参数值成为可能,并使程序员能够返回多个值。 但是,这是我需要知道的: Ref 关键字:关键字ref用于从值创建对推断类型的该值的引用。 所以let myref = ref 10 这意味着 F# 将创建一个Ref<int>类型的对象(在可变字段中)我的int 10 。 行。 所以我假设ref用于创建Ref<'a>类型的实例。 这是对的吗? 访问值:为了访问存储在引用中的值,我可以这样做: let myref = ref 10 let myval = myref.Value let myval2 = !myref 虽然:=运算符只是让我编辑这样的值: let myref = ref 10 myref.Value <- 30 myref := 40 所以! (Bang) 取消引用我的引用。 和:=编辑它。 我想这也是正确的。 & 运算符:这个运算符有什么作用? 它是否适用于引用类型? 不,我想它必须应用于可变值,这会返回什么? 参考资料? 地址? 如果使用交互式: let mutable mutvar = 10;; &a;; 最后一行抛出一个错误,所以我不明白&运算符的用途。 ByRef: byref呢? 这对我来说非常重要,但我意识到我不理解它。 我知道它用于有关参数传递的功能。

2021-10-23 01:25:13    分类:技术分享    .net   f#   reference   parameter-passing   byref

'ByRef' 参数 ' ' 不能在 lambda 表达式中使用('ByRef' parameter '<parametername>' cannot be used in a lambda expression)

问题 我正在使用 SharpZipLib 来压缩文件。 该库被包装在一个插件接口中,在一个单独的 DLL 中。 我通过插件 dll 一个ByRef参数来跟踪压缩进度。 SharpZipLib 在压缩时会定期调用在启动压缩时传递的委托 sub。 我不知道如何在调用委托时更新ByRef参数。 如果我尝试在 Lamba 表达式的主体中分配ByRef变量,我会收到一个'ByRef' parameter '<parametername>' cannot be used in a lambda expression错误。 这是我的代码: Using InputFile As New IO.FileStream(SourceFile, IO.FileMode.Open, IO.FileAccess.Read, IO.FileShare.Read) Using OutputFile As New IO.FileStream(DestFile, IO.FileMode.Create) Using GZipStream As New GZipOutputStream(OutputFile) Dim Buffer(524228) As Byte Dim Handler As New ProgressHandler(Sub(Sender As Object, EventArgs As

2021-10-22 14:21:06    分类:技术分享    vb.net   lambda   pass-by-reference   byref

F# 成员约束 + ^a byref 参数(F# member constraints + ^a byref parameters)

问题 在玩弄 F# 成员约束功能并编写如下函数后: let inline parse< ^a when ^a : (static member Parse: string -> ^a) > s = (^a: (static member Parse: string -> ^a) s) 这工作得很好: let xs = [ "123"; "456"; "999" ] |> List.map parse<int> 我正在尝试编写其他 func tryParse ,它使用静态方法TryParse并将解析结果包装到'a option类型以更好地支持 F#。 像这样的东西不能编译: let inline tryParse s = let mutable x = Unchecked.defaultof< ^a> if (^a: (static member TryParse: string * ^a byref -> bool) (s, &x)) then Some x else None 错误是: 错误 FS0001:该表达式的类型应该是byref<'a>但这里的类型是'a ref F# ref -cells 也不起作用: let inline tryParse s = let x = ref Unchecked.defaultof< ^a> if (^a: (static member

2021-10-19 06:51:54    分类:技术分享    generics   f#   constraints   ref   byref

VBA ByRef 参数类型不匹配(VBA ByRef argument type mismatch)

问题 最初在我的主要代码部分中,我有一个丑陋的 if 语句 - 尽管它会运行很丑陋。 我决定让它成为一个我会调用的函数,这导致我收到一个错误“编译错误:ByRef 参数类型不匹配”。 我的假设是需要正确引用该函数,尽管我一直在阅读文档但不明白为什么>.< 声明 ShiftValue 变量: Dim ShiftValue As String ShiftValue = LCase(Sheets("Raw_Rota").Cells(Counter, "C").Value) 函数内容及声明: Function ShiftCompare(ByRef ShiftValue As String) If StrComp(ShiftValue, "am", vbTextCompare) = 0 Then Call IncAMs(AMs) 'this function increments the variable by 1. Call Inc(Counter) ElseIf StrComp(ShiftValue, "pm", vbTextCompare) = 0 Then Call IncPMs(PMs) Call Inc(Counter) ElseIf StrComp(ShiftValue, "days", vbTextCompare) = 0 Then Call IncDays(Days)

2021-10-18 21:31:51    分类:技术分享    vba   excel   mismatch   byref

F#:如何使用参数 Byref Int 调用函数(F#: How to Call a function with Argument Byref Int)

问题 我有这个代码: let sumfunc(n: int byref) = let mutable s = 0 while n >= 1 do s <- n + (n-1) n <- n-1 printfn "%i" s sumfunc 6 我收到错误: (8,10): error FS0001: This expression was expected to have type 'byref<int>' but here has type 'int' 所以从中我可以知道问题是什么,但我只是不知道如何解决它。 我想我需要以某种方式将数字 6 指定为byref<int> 。 我只是不知道如何。 我的主要目标是使n或函数参数可变,以便我可以在函数内更改和使用它的值。 回答1 对你坦率地说这是一项学校作业,并且自己做作业而不只是问一个归结为“请为我做作业”的问题,这对你有好处。 因为你是诚实的,所以我会给你一个比我不应该做的更详细的答案。 首先,这似乎是一个非常奇怪的任务。 使用while循环和仅一个局部变量会引导您重新使用n参数,这是一个非常糟糕的主意。 作为一般规则,函数永远不应该修改自身之外的值——这就是您试图通过使用byref参数来实现的。 一旦你经历了足够知道为什么byref是一个坏主意的大部分时间,你是足够的经验来知道它为什么会-可能-是时候需要一些。 但是让我通过使用

2021-10-08 10:59:16    分类:技术分享    function   f#   int   mutable   byref

F#: How to Call a function with Argument Byref Int

I have this code: let sumfunc(n: int byref) = let mutable s = 0 while n >= 1 do s <- n + (n-1) n <- n-1 printfn "%i" s sumfunc 6 I get the error: (8,10): error FS0001: This expression was expected to have type 'byref<int>' but here has type 'int' So from that I can tell what the problem is but I just dont know how to solve it. I guess I need to specify the number 6 to be a byref<int> somehow. I just dont know how. My main goal here is to make n or the function argument mutable so I can change and use its value inside the function.

2021-09-03 12:59:33    分类:问答    function   f#   int   mutable   byref