« first day (1727 days earlier)      last day (1453 days later) » 
00:00 - 21:0021:00 - 00:00

12:01 AM
RELOAD!
[rubberduck-vba/Rubberduck] 7 commits. 2 closed issues. 5 issue comments. 143 additions. 31 deletions.
[Zomis/minesweeper-flags-client] 22 commits. 248 additions. 70 deletions.
[Zomis/test] 4 commits. 10 additions. 9 deletions.
 
 
5 hours later…
5:21 AM
Why use 'Me' in #VBA class modules? Some interesting ideas here... https://stackoverflow.com/q/54887822/1188513
 
 
2 hours later…
7:25 AM
> In my "main" project, an Excel Add-In with about 10k lines of code and several references to additional libraries (like ADODB and Access), the initial parse takes 20s (according to RD's log) and subsequent parses typically 9-10s. That's on a Windows 7 machine, though. So in that light, the parsing times you're encountering seem rather high.
 
7:50 AM
@Comintern I think it would make sense to wrap the invocations of the individual handlers in try blocks.
No handler should take down the entire parse.
On the other hand, this might leave broken functionality exposed because things like the CE are in a bad state although we are in a ready state.
 
8:05 AM
> Thanks that's a helpful reference point. I think my project is about 30k lines (including whitespace though, not sure how code lines are normally counted), total source files is 1MB.

So some potential options could be
- virtual machine running slow
- something in my project causing RD to get stuck / run slower

Examining the parse time via the log is a good idea. As far as I can tell theres a few parse errors in mine. I'll try to narrow down the issue by removing some modules and see i
 
 
2 hours later…
10:26 AM
moduleConfigProperty expects at least one of (moduleConfigProperty or moduleConfigElement), except I have come across a form with the following
BeginProperty Panels {8E3867A5-8586-11D1-B16A-00C0F0283628}
NumPanels = 1
BeginProperty Panel1 {8E3867AB-8586-11D1-B16A-00C0F0283628}
EndProperty
EndProperty
which breaks this expectation.
Can anyone see a problem with changing it to zero or more instead of one or more? If so, I'll raise a pull request.
 
10:44 AM
> The grammar has the following for module config properties ``` BEGINPROPERTY whiteSpace unrestrictedIdentifier (LPAREN numberLiteral RPAREN)? (whiteSpace GUIDLITERAL)? endOfStatement (moduleConfigProperty | moduleConfigElement)* ENDPROPERTY endOfStatement ``` However, I have found a valid VB6 source file that contains the following ``` BeginProperty Panels {8E3867A5-8586-11D1-B16A-00C0F0283628} NumPanels = 1 BeginProperty Panel1 {8E3867AB-8586-11D1-B16A-00C0F0283628} EndProperty...
EndProperty ``` I have modified the grammar to expect zero or more config properties or config elements.
> Oops! I got the pull request number wrong in the commit message! Not sure how to change that now without rewriting history.
 
11:04 AM
[rubberduck-vba/Rubberduck] build for commit 626bb02c on unknown branch: AppVeyor build succeeded
> Having the wrong number in there should not be a problem. There really is not too much consistency in our commit messages. However, a good general rule would be to state what the commit changes. E.g. here it could be Handle empty moduleConfigProperty in grammar.
> Thanks for catching this. Since we could not find a specification on the vb forms header, we basically reverse engineered it from examples.
> 1. You can't change the PR number in the commit without rewriting history. For future reference: we're not naming commits after the PRs they are included in. It's not really information we need in there. Instead we might reference an issue number that the commit adresses...

2. Could I bother you to also add a test for that grammar change? There should be some tests around module config properties in a class [here](https://github.com/rubberduck-vba/Rubberduck/tree/next/RubberduckTests/Gramma
 
If I rewrote history using `git commit --amend -m ""`with the suggested message in my fork, would there be a problem?
According to https://blog.adamspiers.org/2015/03/24/why-and-how-to-correctly-amend-github-pull-requests/, github can handle history rewrites fine in pull requests
 
yep. just force-push and you should be good to go
 
11:19 AM
Here's hoping it works first time (I only have VS2015 on this machine, and as such can't open the project, so I'm relying on AppVeyor to tell me I've messed up)
 
@Duga Oh cool, someone using RD for VB6 :grin:
(context - I did most of the work to make RD VB6 compatible, but not seen many using it there so far)
In other news, MOD 2000 and my shiny new SSD turned up today, so I should be able to utilise my commute from next week :-)
 
Fingers crossed the new test passes. As mentioned above, I can't test it locally on the machine I am using
 
[rubberduck-vba/Rubberduck] build for commit 6e04ae23 on unknown branch: AppVeyor build succeeded
 
I don't suppose someone would mind running VBAParserTests -> TestNestedVbFormModuleConfigWithAnEmptyNestedProperty so I don't have to wait 25 minutes to make sure the build passes?
 
@ScottDennison I would gladly do so, but I'm on a mobile connection atm and it's too flakey to sync to GH (haven't pulled in a while)
 
[rubberduck-vba/Rubberduck] build for commit ef9c872a on unknown branch: AppVeyor build failed
BUILD FAILURE!
 
11:49 AM
Damn
Forgot to double quote the "'s in the @ string.
 
@mansellan Even though you were unable to do so, thanks for saying you would if you could. Appreciated
 
12:14 PM
[rubberduck-vba/Rubberduck] build for commit 77433e51 on unknown branch: AppVeyor build succeeded
 
@Vogel612 Test passed
 
12:39 PM
Interesting... Working from home today. I'm connected via VPN and using RDC against my work machine.
I copy/pasted a fair amount of data into an Excel table and the results were nearly instant, as opposed to the agonizing, slooooooooooooow, RBAR, paste results I often see when I'm sitting at my desk.
When I'm at home, I can't use Alt-tab to switch between applications because my home machine is not passing those along to the remote machine (I think I can tweak that in the Citrix session, but haven't tried).
It's almost as if working slower by having to grab the mouse, move over to the other Excel workbook, then right-click, paste special, values makes the paste happen faster than working more quickly at work with alt-tab, context-menu-key, s, v
 
1:23 PM
[rubberduck-vba/Rubberduck] Unrecognized author pushed commit 6e04ae23 to next: Modified the grammar to handle moduleConfigProperty rules with no children
[rubberduck-vba/Rubberduck] Unrecognized author pushed commit 77433e51 to next: Added a test to test handling of moduleConfigProperty rules that have no children
Merge pull request #4830 from ScottDennison/next

Grammar cannot handle an empty moduleConfigProperty
 
2:02 PM
Hi guys
Validating the translations, I found some tags that do not change the language and I think that these do not have a key in the .resx files
 
@AlexisDuque Is that after changing the setting with Rubberduck running? If so you might need to close and reopen it.
A bunch of the localizations aren't currently updated after the settings change (I should probably open that as an issue).
 
@AlexisDuque The title bar on this one isn't translated, either.
 
2:21 PM
@AlexisDuque Looks like the blender missed a couple hard coded strings. Can you open an issue and include those screen shots? I'll go through and see if I can track any more down tonight.
 
3:10 PM
> **Rubberduck version information**
The info below can be copy-paste-completed from the first lines of Rubberduck's log or the About box:

Version 2.4.0.17897
OS: Microsoft Windows NT 10.0.17763.0, x64
Host Product: Microsoft Office 2016 x64
Host Version: 16.0.4266.1001
Host Executable: [EXCEL.EXE]


**Description**
Validating the translations to spanish, I found some tags that do not change the language and I think that these do not have a key in the .resx files.

**To Reproduce**
> @D3vlin just to confirm - does those persist after you restart Excel and reload Rubberduck?
 
@Duga @this Some of the highlighted ones are hard coded in the xaml, which is why I was asking for the open issue (I didn't want to track down the images in the chat history).
 
I just wasn't too sure from the description and I remember Mat saying that some of those gets fixed after a restart
 
> @bclothier Yes.

In the same way, some words do not have enough space when they are translated.

![53495665-5f3a9880-3a6e-11e9-9945-8bced9882b5e](https://user-images.githubusercontent.com/46509440/53500548-8c8c4400-3a78-11e9-92f0-cf6ffbda417e.JPG)
 
@this Some of them do. The inspection results would get fixed after a reparse too.
 
So, the ducky's spanglish, eh?
 
3:21 PM
jejejeje
 
TODO: Add duck language to Rubberduck.
 
Jul 28 '18 at 16:52, by Comintern
If the settings finds <Language Code="rubberduck" />, it transforms all the text like this:
 
like what?
 
Follow the link
 
but I'm not a duck!
 
3:57 PM
How does this even happen?
Wow. Why are you using SendKeys for this at all? Is Range.Find not working for some reason? — Comintern 1 min ago
OP is using SendKeys to invoke the find and replace dialog - not even the macro recorder would do that.
 
Does MR ever emit a SendKeys for any reason?
 
I've never seen it emit one.
Most of the cases where you might expect it to, it just doesn't emit anything.
 
4:17 PM
Has anyone noticed VBE sorting Lets above the Gets when implementing an interface via the dropdown?
 
I can't say I've noticed - I rarely use the dropdowns. What's the expected sort? Alpha?
 
generally, VBE does it alpha, yes
with anything else, it'll put it in the alpha place (even if it's between other stuff - the alpha sorting is pretty dumb), but Let and Get get reversed, despite being listed the opposite way in the dropdown.
 
5:11 PM
posted on February 27, 2019 by CommitStrip

Today, we’re welcoming a new sponsor, TruePath Technologies! TruePath Technologies is an industry-leading provider of enterprise monitoring software, hardware and services. They specialize in configuring and maintaining your monitoring software so you can avoid costly network downtime and maintenance. TruePath is a premier technical support provider and reseller for partners like SolarWin

 
5:46 PM
I can understand a IsNumeric("1e1") but wth is IsNumeric("1,1.1")?
 
o_O
 
Huh. Even T-SQL's ISNUMERIC is borked
SELECT ISNUMERIC('1,1.1') => 1
 
One, thousands separator, one, decimal point, one?
 
someone cut the corners there with the separators it seems.
Yeah
but technically that can't be a number.
unless there's a system where 1,1 is shorthand for 1,001
(oh God I hope not...)
 
?CDbl("1,1.1")
 11.1
 
5:49 PM
:facepalm:
 
It just ignores the thousands separators.
 
and kids, that is why you don't store your numbers in strings!
 
?CDbl("1,2,3,4,5.1,2,3,4,5")
 12345.12345
Currency symbols too:
?CDbl("$1,2,3,4,5.67")
 12345.67
 
"Ain't no separators thar! S'ok!"
 
Only the first currency token though. ?CDbl("$1$2$3") throws.
 
5:53 PM
but you can ?CDbl("$1,1.1,1$")
since in some locales, the symbols may follow, rather than precede.
but I think nobody does it in middle (thankfully)
 
?CDbl("$1,1.1,1$")
 11.11
Wow, that's all kinds of permissive.
 
IKR?
was writing my strict version of IsNumeric and going through various test cases and stumbled on that.
 
Must be localized though. This throws too: ?CDbl("£1")
 
Fortunately I don't need to care about separators but if you did, then hoo boy.
@Comintern That's kind of moronic.
 
Yes, yes it is.
 
5:55 PM
I think it's actually more like "Moronically permissive"
 
lol
 
-1
Q: Save as CSV in VBA with blanks not zeroes

emcorI wrote this VBA Macro to save a range of values into a CSV: Sub exportRangeToCSVFile() Set myWB = ThisWorkbook myCSVFileName = myWB.Path & "\" & "Format_CSV-" & VBA.Format(VBA.Now, "dd-MMM-yyyy hh-mm") & ".csv" Range("B5:X260").Select Selection.Copy Workbooks.Add ActiveSheet.Paste ActiveWo...

 
#FunFact: T-SQL's ISNUMERIC is a bit less permissive than VBA's IsNumeric
Whee!
 
Same with Excel. WorksheetFunction.IsNumber("$1.00") is false.
 
:facepalm:
 
6:02 PM
At least there isn't hexadecimal currency.
?IsNumeric("&HAB")
True
?IsNumeric("$&HAB")
False
That one is a bit dangerous I think.
?IsNumeric("0xAB")
False
 
it's almost as if they're just Eval'ing the input
 
IKR?
 
and of course:
?isnumeric(Empty)
True
Gonna lurve dem variants
 
o_O
Octal works too. ?IsNumeric("&O0")
?IsNumeric(Null)
False
?IsNumeric(Nothing)
False
?IsNumeric(Empty)
True
I half-way expected IsNumeric(Nothing) to throw. Nope.
 
Keep in mind that Empty is basically the default of wahtever data type you want
e.g. ?Len(Empty), ?Empty + 0
or ?CLng(Empty)
 
6:08 PM
Right. LenB(Empty) is misleading though.
 
yeah that'd size the variant itself
LenB is really just a badly named sizeof for anything that's not a proper String
 
Except it doesn't work for Variant types because it gives the data area length.
WTF?
Sub bar()
    Dim x As Variant
    x = 1
    Debug.Print TypeName(x) 'Integer
    Debug.Print LenB(x)     '2
    x = 9999999
    Debug.Print TypeName(x) 'Long
    Debug.Print LenB(x)     '14     <---WTH?
End Sub
 
heh, i was seeing the same thing.
Something's messed up there
it likely has to do with the nested union and how to size the data area, I guess?
 
I'm not entirely sure. Maybe LongPtr?
This one is f'd up too:
Sub bar()
    Dim x As Variant
    x = 1
    Debug.Print TypeName(x) 'Integer
    Debug.Print LenB(x)     '2
    x = 1#
    Debug.Print TypeName(x) 'Double
    Debug.Print LenB(x)     '2
End Sub
That's a damned short Double.
 
O_o
 
6:15 PM
looks like its evaluating it
 
For when you only need to pass the sign and exponent I guess...
 
hmm converting the data before sizing it?
 
Public Sub derp()
Dim v As Variant
v = 1.1
Debug.Print LenB(v)
End Sub
gives 6
 
which would be kind of dumb.
 
when i explicitly had v be a double
it was 8
 
6:16 PM
what?
it's counting the byte size of a string
THAT MAKES NO DAMNED SENSE
 
Should be called LenRnd when used with Variant. Inspection maybe?
 
^
 
lol... yeah
setting v to 9999.999999 gave 22
 
@KySoto that's the string length
 
Wow. Another reason to shun Variant (as if I needed another one).
 
6:18 PM
11 characters * 2 bytes per = 22
 
yep
i was just throwing in my test results
 
LenBWithVariantIsToxicInspection
 
yeah, when i set v back to a double, it gave 8
 
Huh. It's called out in my "nutshell" book.
> Variants are treated the same as a string variables, and Len returns the actual
number of characters stored to the variable.
 
hmm i wonder what happens when you shove an object into a variant?
ah, it gets mad
 
6:21 PM
OK, WTF? Then further down he has sample code to demo the memory requirement of a Variant.
Dim lVar As Long
Dim vVar
lVar = 10000000
vVar = 10000000
MsgBox "The Long version uses " & LenB(lVar) & _
" bytes of memory" & vbCrLf & _
"The Variant version uses " & LenB(vVar)
That one works (vVar is 16).
 
does it stop working if you use 1 instead of 1000000?
If so, then he brainfarted most likely.
 
Oh duh... It's 8 characters.
 
Hoisted by his own petard. :D
 
lol
 
6:25 PM
VBA: Setting traps for the unwary beginners since 1996!
 
New CustomUIEditor for Office Ribbon XML. I've just tested it for all of three minutes, and it looks like a great improvement. https://github.com/fernandreu/wpf-custom-ui-editor
 
7:18 PM
@ticker "I'm using ADODB v2.1, what could possibly go wrong?" ............
 
@MathieuGuindon hmm. that made me wonder - does the 2.1 get all the bugfixes from future version?
technically there is only one version of ADO installed.
 
huh
Feb 19 at 23:22, by this
I think we should be recommending using 6.1, almost never the 6.0, no?
 
Yeah, that is the one exception.
 
"use whatever, the version number is just smokes & mirrors, they're all 6.1 anyway" doesn't sound right
 
This has to do with the 32/64 bitness
TBH, I'm a bit fuzzy on this myself.
What I do know is that there's only one msado15.dll
 
7:24 PM
side note, why would you reference both DAO and ADO??
 
all those versions you see are just tlb that basically points to the same DLL
But the problem with the 6.0/6.1 has to do with the pointer size/GUID being all borked up
@MathieuGuindon because both have non-overlapping sets of features. :(
 
@this could be different entry points though
lol ok but then any Recordset variable that isn't fully qualified is breaking as soon as ref priority is tweaked
 
yep
the standard advice always has to be disambiguate, disambiguate, disambiguate
I never do just Recordset or Textbox ever.
@MathieuGuindon the CLSID entry points to the DLL, not the TLB.
Thinking about it, if the flaws in 6.0 existed in the TLB, rather than the DLL, that'd be why it'd not work 100%.
so it's not exactly 100% smokes'n'mirrors. Only up to a point, then it all shatters to a bajillion pieces.
 
well then, I'm confused... deleting that comment
 
If it's any consolation, Microsoft totally screwed the pooch with the whole data access libraries thing.
and the reward is everlasting confusion among the masses
 
7:35 PM
nicely answered
though, I'm sticking with my "unclear" vote to close :)
 
Yeah I'm not so clear why/how it would change in the priority.
but that just references my belief that you shouldn't be relying on the implicit reference priority to begin with.
 
8:01 PM
@TweetingDuck :+1:
 
8:28 PM
It's a great feeling to find that when you think the ducky's wrong, and upon researching, turns out that you are the one who's wrong and the ducky was right all the along.
 
8:41 PM
Never doubt the duck.
 
Unless it tells you to use Set.
 
Set intFoo = 5
 
Set is an abomination that should have never been.
 
Is it just the fact that you are required to use Set for reference types and Let is optional for value types?
I'll admit that confused me to no end when I first "wrote code" with the macro recorder.
 
do you know of other language that makes the distinction?
even JS doesn't.
it might not have been so bad if Let was never made optional; it'd at least remain consistent (if more verbose)
 
8:53 PM
Nope. I've only ever used VBA and C#.
 
I'm pretty sure VB* is the only language that does make a distinction, and thus forcing confusion on the users needlessly.
 
The purpose of Set is to avoid ambiguity with default member access and Variants.
 
and that is the moment where the designers should have paused and say to themselves "maybe we're doing it wrong."
 
Sub foo()
    Dim bar As Variant
    bar = [A1]  '<-- .Value or Range?
End Sub
@this Wait, wut? VBA was designed? I thought it just grew like a fungus or something.
 
@Comintern Nah, the correct answer is "Compile error"
 
00:00 - 21:0021:00 - 00:00

« first day (1727 days earlier)      last day (1453 days later) »