« first day (1413 days earlier)      last day (1767 days later) » 
00:00 - 20:0020:00 - 00:00

8:18 PM
@IvenBach Thanks! I've been using Dir for a long time but I've transitioned to FSO in 95% of situations to take advantage of all the wonderful file attributes. As I've griped about in this channel, the 5% is because FSO isn't able to use wildcards when you'd most want to.
 
@M.Doerner ok, I'll wait then
 
I am now about 80% through and have a number of comments.
 
:+1:
thanks for doing this... I'm busy AF at work here..
 
This PR is really large.
 
'tis.. but shouldn't affect anything in the VBA realm, right?
 
8:22 PM
It does not help there that moving and modifying a file causes the entire file to be in the diff.
Not really.
On the upside, I found a few things that should be wrong on the VBA side as well.
 
just moving the file should result in the file being shown as header, with a +-0 as diff
old/path/to/file -> new/path/to/file  +0/-0
 
In particular, the non-generic GetEnumerator method does not alwys use the generic one.
The thing is that there are a lot of files, both moved and modified.
In the same commit.
well, I am not so sure about the latter.
However, GitHub shows the entire files in the diff if you do both in the PR most of the time.
 
8:46 PM
@puzzlepiece87 Knowing the issues with each lets the user make an informed decision.
 
 
9:02 PM
@this Wait a minute... How can we be passing ByVal in VBA but still getting a proper return value?
ByVal lpBuffer As LongPtr but on MSDN GetCurrentDirectory function _Out_ LPTSTR lpBuffer it's designated as on out.
There's still something here I don't understand.
 
that also makes no sense...
 
I'm trying to make sense of this. Sorry if it feels like I'm nagging or pestering you about it.
#IJustWantToLearn
 
but that's not a problem, since the value you're passing is just a pointer to memory that you control
note the p = StrPtr(s)
 
Apr 13 at 23:34, by this
Private Declare PtrSafe Function GetCurrentDirectory _
Lib "kernel32" Alias "GetCurrentDirectoryA" ( _
    ByVal nBufferLength As Long, _
    ByVal lpBuffer As String _
) As Long

Public Sub TestIt()
    Dim s As String
    Dim l As Long

    'Get the length of the buffer
    l = GetCurrentDirectory(0, vbNullString)

    'Allocate the buffer
    s = Space$(l)

    'Get the buffer itself
    If GetCurrentDirectory(l, s) Then
        Debug.Print s
    End If
End Sub
@Vogel612 ^ I should have linked to that one
 
note that thid declares lpBuffer As String, yet the MSDN function expects an LPTSTR
which would be a String*
 
9:11 PM
Is it passing the pointer, just doing so under the covers, in spite of the ByVal?
 
that's basically the only choice it has
 
That's because of the way it is in the assembly kernel32 and not its signature in VBA?
 
well that one is beyond what I know.
but that would be a useful explanation :)
 
It this one of those "Sounds plausible but :shrug: who really knows?"
 
at least for me it is...
then again: i know basically zilch about winapi, dlls and VBA generally
 
9:17 PM
If I remember correctly, what VBA usually does when passing a string ByVal, is to copy the string to a new memory location and then passing the pointer to the start of the string. That would make no sense here, indeed.
 
I still don't get how you work on an add-in without knowing VBA.
 
@IvenBach well the AddIn is written in C#
and if you take a good look at what I've implemented, you may notice that I've kept my hands well off the resolver
 
Based on what I've understood of ByVal and ByRef the usage of ByVal actually being updated leaves me puzzled.
If it were ByRef then sure the pointer is passed and it's updated.
 
that's another magic of VBA - you can't really pass strings byref to a LPTSTR. You pass it ByVal. Why, I need to recall.
 
the parsing process rewrite also didn't touch the parser itself.
The grammar update was highly contained in nature.
The regex assistant is basically completely independent of VBA.
...
 
9:19 PM
I think it's retarded but it is how it should be.
 
Some days ago, somebody linked an article in this chat how the different datatypes work in VBA.
 
if you try to pass string byref to a LPTSTR, it will do bad things
 
So if you use ByRef with a function call to pass a string to an LPTSTR my brain doesn't process as fast as yours...
 
Look 'ma, I'm famous! (nah) https://twitter.com/vitoshacademy/status/987059368058335232
 
9:23 PM
^ this explains the internals of why you use ByVal with string even if it's meant to be used ByRef
@TweetingDuck thanks for the photobomb....
 
@MathieuGuindon You need a pic of your mug mvp.microsoft.com/en-us/PublicProfile/…
 
hmm, I thought I had updated that page
 
Our BDFL must get as much exposure as possible.
 
I'm really kinda uncomfortable with that term ...
 
9:35 PM
> <irony>If you are a developer, who has been taught Java and C# and forced to work with VBA, most probably somewhere at this point you realize that VBA is not a funny scripting language.</irony>
 
@Vogel612 BDFL? Me neither :)
 
@Duga <evil>Write an unit test that assert there is no using System.Linq in the wrappers.</evil>
 
@this they're pretty close to our hot path most of the time, soo... makes sense, yes.
 
9:41 PM
@Vogel612 could one be written to assert that there are no chained member access on raw RCWs?
(and is it too meta? we're already metaprogramming....)
 
@this Looking up how strings actually work in VBA here, only one question remains for me: why don't we get problems passing in a BSTR into an LPSTR parameter.
 
@this well... one could certainly try...
@Hosch250 would it be possible to write an Analyzer for that?
 
@Vogel612 Very easily. I'd just have to make sure that there are no using System.Linq in the project.
 
well, I realized there's also the System.Linq...
 
There is actually an issue for that on VSD because it's not too uncommon to require Linq to not be in hotpaths.
Just run it on the using statements.
 
9:45 PM
@Hosch250 actually I was asking about the RCW chaining
 
I'm not sure what that is, but yes, it's possible.
And probably fairly simple.
 
@M.Doerner not sure I understand the question -- VB/VBA string is BSTR.
 
The parameter is an LPSTR on the Win32API and the source mentioned that the formating only matches up for an LPWSTR.
 
@Hosch250 it would be basically to prevent stuff like <some com object>.<another com object as a property>.<method on 2nd com object>
 
@this Do most VBA users care enough to wonder these things? I knowing the why rather than ignorantly using it.
 
9:47 PM
If there is a specific type to look for, it is simple.
 
@M.Doerner everything in VB/VBA is Unicode by default.
 
Just realised that myself.
 
When you run it through Declare, VB/VBA automatically converts unicode into ansi
 
That solves the problem.
 
which is why you must use the pointer if you want to access the unicode API directly.
 
9:49 PM
It all makes sense now.
 
@IvenBach I believe a large majority of them are not even "programmer" in any sense of word.
they write VBA because they have to, not because they want to.
 
To quote @IvenBach, IgnoranceLevel--;
 
That does make me the odd duck.
 
well, we're all odd ducks.
 
I'm realizing that more and more.
Thanks for that article. By this Monday I should have digested its contents and be ready for some more.
 
9:51 PM
I would certainly also prefer to write in another language, one with function overloading, concurrency/asynchnronicity and most of all constructors.
 
Home Time.
 
@M.Doerner Did you just mention C#?
 
At work, I have no other choice but VBA, and maybe a bit of R.
 
@Hosch250 it might be actually types; Not sure if System.__ComObject is a type that one can check for.
 
9:54 PM
@this Probably.
 
> # [Codecov](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/3934?src=pr&el=h1) Report
> Merging [#3934](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/3934?src=pr&el=desc) into [next](https://codecov.io/gh/rubberduck-vba/Rubberduck/commit/1a53957d2f1fe7590813d6294f213a5a8873858e?src=pr&el=desc) will **decrease** coverage by `0.01%`.
> The diff coverage is `87.16%`.


```diff
@@ Coverage Diff @@
## next #3934 +/- ##
=======================
 
@Duga @Hosch250 this could be a starting point for some UI work. I may be able to put some more work into this tomorrow, but no guarantees
feel free to ping me if anything about the code is unclear
on second thought... I wonder whether we really need the AggregationLevel explicitly...
well either way. bed
Toodles
 
OK. Good night.
 
night!
 
@MathieuGuindon how should the english phrase in the french sentence be handled? I would delete it but it seems to leave a sentence fragment?
 
10:14 PM
Gah, got some more wrapping to do to get the control properties...
I will not be sad to not be working with SCWs again... ;-)
 
[rubberduck-vba/Rubberduck] build for commit 9147149b on unknown branch: AppVeyor build succeeded
> # [Codecov](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/3934?src=pr&el=h1) Report
> Merging [#3934](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/3934?src=pr&el=desc) into [next](https://codecov.io/gh/rubberduck-vba/Rubberduck/commit/1a53957d2f1fe7590813d6294f213a5a8873858e?src=pr&el=desc) will **decrease** coverage by `0.03%`.
> The diff coverage is `68.84%`.


```diff
@@ Coverage Diff @@
## next #3934 +/- ##
=======================
[rubberduck-vba/Rubberduck] build for commit 9147149b on unknown branch: 57.61% (target 0%)
 
#TIL runtime callable wrappers are like toxic waste. You want them very well wrapped, such that they never, ever leak. And even then, handle them with extreme caution.
 
Yep, especially if you are an addin to a very picky host.
 
pretend you are dealing with Gollum.
2
 
fires up OleWoo again...
 
10:18 PM
The VBE has very distinct expectations what objects you still own after you finish your shutdown, none.
It will final release anything it thinks of as its own after all addins have returned from the shutdown event.
 
and that's where you hear "My precious!" when it shuts down.
3
 
10:30 PM
oh, wait... this already has a wrapper, its not not linked to a property
phew!
question: VB controls have no Name property, but they do have an entry in their Properties collection with a key of "Name". That should always exist, but what should be done if not? I'm thinking return null on the getter, but on the setter???
throw? silently do nothing? try and add one? if the latter, what if that fails?
actually, last one is not an option - collection is read-only
ima leave it as no-op for now, with a comment. should never happen (famous last words...)
 
10:47 PM
@this remove it, the comma should replace the dot
> French.UninstallOldVersionPrompt=Il semble y avoir une version antérieure de Rubberduck installée sur ce système pour %s, qui devra d'abord être désinstallée. Procéder à la désinstallation?
 
> # [Codecov](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/3935?src=pr&el=h1) Report
> Merging [#3935](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/3935?src=pr&el=desc) into [next](https://codecov.io/gh/rubberduck-vba/Rubberduck/commit/a7475d76599d20e5acfeb332c39aa8135d0ba45f?src=pr&el=desc) will **increase** coverage by `0.03%`.
> The diff coverage is `0%`.


```diff
@@ Coverage Diff @@
## next #3935 +/- ##
===========================
> # [Codecov](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/3935?src=pr&el=h1) Report
> Merging [#3935](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/3935?src=pr&el=desc) into [next](https://codecov.io/gh/rubberduck-vba/Rubberduck/commit/a7475d76599d20e5acfeb332c39aa8135d0ba45f?src=pr&el=desc) will **increase** coverage by `0.03%`.
> The diff coverage is `0%`.


```diff
@@ Coverage Diff @@
## next #3935 +/- ##
===========================
 
@mansellan I think I would attempt the write and swallow any exception. Getter should never throw no matter what.
 
@MathieuGuindon yeah that's what I ended up doing
 
11:05 PM
[rubberduck-vba/Rubberduck] build for commit 8ac6a5f1 on unknown branch: AppVeyor build succeeded
> # [Codecov](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/3935?src=pr&el=h1) Report
> Merging [#3935](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/3935?src=pr&el=desc) into [next](https://codecov.io/gh/rubberduck-vba/Rubberduck/commit/a7475d76599d20e5acfeb332c39aa8135d0ba45f?src=pr&el=desc) will **increase** coverage by `0.03%`.
> The diff coverage is `0%`.


```diff
@@ Coverage Diff @@
## next #3935 +/- ##
===========================
[rubberduck-vba/Rubberduck] build for commit 8ac6a5f1 on unknown branch: 57.67% (target 0%)
 
11:33 PM
> Rubberduck.Setup.2.2.0.exe (3.78 MiB) - downloaded 682 times. Last updated on 2018-04-08
> Rubberduck.Setup.2.2.0.3110-pre.exe (3.79 MiB) - downloaded 90 times. Last updated on 2018-04-16
> Rubberduck.Setup.2.2.0.3129-pre.exe (3.79 MiB) - downloaded 1 times. Last updated on 2018-04-19
 
00:00 - 20:0020:00 - 00:00

« first day (1413 days earlier)      last day (1767 days later) »