« first day (1300 days earlier)      last day (1880 days later) » 

12:00 AM
RELOAD!
[rubberduck-vba/Rubberduck] 1 opened issue. 8 issue comments.
 
 
2 hours later…
1:59 AM
@M.Doerner ...so power to the USB stick or port in the meantime?
 
 
1 hour later…
3:23 AM
> I only re-implemented what was already in RD. I'll have to refactor to get it to run all the selected tests.
[rubberduck-vba/Rubberduck] IvenBach pushed commit 86c62bc8 to next: Update resource file to reflect only single test can be run.
[rubberduck-vba/Rubberduck] IvenBach pushed commit 9493c524 to next: Rename to be part of TestExplorer section
Merge pull request #3638 from IvenBach/Issue3507_Run_selected_unit_test

Test explorer enhancement: run selected test. First iteration only runs the first selected test.
 
@Duga @Mat'sMug Should have been a bit clearer in my PR message.
 
@IvenBach np - it's an enhancement anyway =)
 
 
2 hours later…
6:06 AM
@IvenBach Run n tests, for all values of n, where n must be 1.
 
6:16 AM
Hey @ThunderFrame, how are you getting on with ITypeLib
 
@WaynePhillipsEA I haven't looked at it yet. I've been working on serializing FRM/FRX to XML... Partly to get the control ProgId/ClsID of controls (which ITypeLib will solve), but also to make UserForm changes human-readable in source control, and to make conversion to/from .NET/VB6 easier.
 
cool, sounds good.
 
7:07 AM
@ThunderFrame I forget what the data type was, but reading the documentation for it said that only 1 is returned even if the selection type is multiple.
Getting selected testS to run is something I need myself. Once I get time tomorrow I'll look at having a go at it and trying to implement it.
 
 
1 hour later…
8:17 AM
@WaynePhillipsEA IIRC, there's an open issue in our COM collector, for simple properties. We need to tidy that up.
 
8:29 AM
 
8:55 AM
Yes, your comment in 3326 about enumerating the Vars is absolutely correct, for dispinterfaces.
I don't know how your COM collector works, but you'll probably want to generate equivalent getters and setters for the vars
 
9:44 AM
Hey @all, hope everyone had a nice Christmas
 
 
1 hour later…
10:47 AM
@WaynePhillipsEA interestingly, the VBE's object browser represents those short-form properties differently from the long-form properties. But IIRC, VBA exposes public variables in class modules as both a getter and a letter/setter.
@mansellan Hi - I certaibly did. Hope yours was good too.
 
11:08 AM
@ThunderFrame what you refer to as short-form properties, is just how properties are always represented in a dispinterface. You'll probably find that the VBE is switching to the normal vtable based interface (which requires some magic in ITypeInfo). Note that the normal vtable based interface is not necessarily available or defined for a coclass (neither is dispinterface)
@ThunderFrame ... and the magic to convert a dispinterface into the vtable one (and vice versa), assuming the interface is available, is... ITypeInfo::GetRefTypeInfo(-2)
you should check if TYPEFLAG_FDUAL is set in the interface flags (from ITypeInfo:::GetTypeAttr... wTypeFlags) BEFORE doing the above call, or risk a crash
if it's a disp-only interface (i.e. not dual), then you're stuck and will need to simulate the getters/setters for those properties
 
11:24 AM
@WaynePhillipsEA I do like magic...
 
12:00 PM
> It would be very useful to be able to use the mouse scroll wheel to scroll through the tests panel.
> Is this a regression? What version of Rubberduck are you on and did it work in a previous version?
> I don't know if it's a regression or not - I've never had it work. I'm using the latest release:

Rubberduck version: Version 2.1.1.2532
Operating System: Microsoft Windows NT 10.0.17046.0, x64
Host Product: Microsoft Office 2016 x64
Host Version: 16.0.8730.2127
Host Executable: MSACCESS.EXE
> Thanks for the info _+1:
> Thanks for the info :+1:
 
 
1 hour later…
1:44 PM
0
Q: Excel vba: setting a long variable for each object class dramatically increases execution time

AnsI have a main sub that makes use of a Client class: creates an array with 100 000 Clients and loops over the array 100 times, each time setting a different random number to each Client. Sub start() Application.ScreenUpdating = False Dim j As Long Dim clientsColl() As Client ReD...

 
2:05 PM
Totally unrelated... I found a GH project with more stars than commits...
 
2:45 PM
> This would allow for logging a test run (to a text file or some such) with the name of the test and a pass/fail flag instead of returning void. This would really help with integrating into an issue tracking system or allow devs to trace what's failing and perhaps watch for regressions.
> Button on test explorer to copy to clipboard doesn't do anything.
 
@Vogel612 and yet totally non-descriptive of what it does. I even looked at the wiki but have no idea what it is all about.
 
benchmarking databases against one another
 
#SoManyRegressions
@Duga Not sure how this would even work.
 
> The test-explorer already supports copying the results of a test-run. It's not really useful to add these return values when Rubberduck can already export what you're looking for into XML, html, csv and Rich Text
> It doesn't work though.
> What version of Rubberduck are you running?
> Rubberduck version: Version 2.1.1.2532
Operating System: Microsoft Windows NT 10.0.17046.0, x64
Host Product: Microsoft Office 2016 x64
Host Version: 16.0.8730.2127
Host Executable: MSACCESS.EXE
> The solution is to fix the bug, not implement a new feature that works around the bug :)
 
Hey @IvenBach you up for some more work on the TestExplorer?
 
@Vogel612 See, they could have said that in the introduction. They just went directly into download links and then listing databases without really saying what it is. They get a F from me for the lack of clarity. I even thought it was something to do wiht Yahoo Cloud Business because of acronym.
 
agreed
 
... which makes it even more impressive that they got stars. Maybe we should stop being so clear? :p
 
they also have open PRs from 2011 around....
 
> Yahoo! Cloud System Benchmark (YCSB)
Seems pretty clear to me.
 
3:01 PM
Nope. Not totally. It could be read as a stock market benchmarking because Yahoo is also popular source for finances and that's what I first thought when I saw it.
 
3:36 PM
> I know you closed this ticket and for good reason, but I would like to see if you'd be willing to reconsider giving us programmatic access to a return value on the Assert object. I am struggling to trace a failure and I think it's because I have interdependent tests so looking at a run log would be very helpful to track it down. It would also permit devs to run automated scripts against the log. Having to copy/paste the results is a manual task that should be automate-able.
 
3:59 PM
> I hear you. In the .net world a failing Assert throws an exception, so you get a stack trace. We could make them throw a trappable run-time error (on top of the current behavior, i.e. handling the error wouldn't affect the test outcome).. but returning a value and executing conditional logic based on that seems like a wide-open door for abuse IMO. There must be a reason no testing framework implemented asserts that way...
> Oh, an exception would work beautifully!
 
4:45 PM
> I'm removing the [feature-unit-testing] label, since this needs to be fixed at the GroupingGrid level: every single toolwindow that uses a grouping grid needs to support wheel scrolling, not just the test explorer.
 
6:22 PM
@Duga @Mat'sMug just so I'm following - we make the rewriter implementation abstract then make all rewriters including the .... IDK, CodeStringRewriter derive from the new abstract RewriterBase class? Then the VBACodeStringParser would take a dependency on the CodeStringRewriter while the RubberduckParserState would take a dependency on CodeModuleRewriter ?
 
@Mat'sMug Which one did you pick?
 
@this something like that yeah - but given CodeStringRewriter doesn't need a Rewrite override, I'd make it the base class, then the ModuleRewriter can derive from it.
@Hosch250 huh?
 
The SO Gives Back.
No need to tell if you'd rather have it be private.
 
A RewriterBase abstract class would indeed be overkill
@Hosch250 oh I don't mind saying... I just don't remember which one I picked lol
 
Did they tell you to choose which one of a pre-picked set, or did you get to pick which one?
Because I'm guessing it would be a little interesting, to say the least, if they didn't pre-pick some.
They all look pretty good, but they certainly all aren't "charities". Some are just normal non-profit orgs.
 
6:34 PM
@Mat'sMug thanks - I'll have a look at it and refactor accordingly.
 
6:52 PM
@Vogel612 Probably.
Looking to grab Microsoft Office so I can work on RD.
 
7:24 PM
@Vogel612 Had a chance to look through my test "upgrade"?
 
> Closes #3642 Previously the TODO markers had a trailing space in the settings (not in the German localisation however) which served as the word boundary test for identifying TODO markers in comments. This change is to use regular expressions to match the TODO markers as whole words which is more flexible and less likely to get false positive from words ending with any of the TODO markers. Notes 1) French localised settings file also has trailing spaces but not updated as doing this created...
a great many XML changes (about space="preserve") so not sure if doing this right. If this is okay, I can modify the pull request. 2) Two copies of the file RubberduckUI.resx appear in the change log even though only one was changed. Seems to already have two copies in the repository (in RetailCoder.VBE/UI and Retailcoder.VBE/UI - note difference in capitalisation of letter C)
> Looks pretty good. Those two resx files have been causing us some problems; I didn't notice the difference in that C before--I may be able to get a handle on the fix now.
[rubberduck-vba/Rubberduck] build for commit 64b038a3 on unknown branch: AppVeyor build succeeded
 
8:01 PM
@mansellan how's things?
 
@this Good thanks. Finished my short contract and have now started a permie role. It's a bit of a learning curve, the tech is way newer than what I was stuck using previously. Not able to code at home for a couple of months, we've had a family member come to live with us, so I have no work area until I can build a garden office (hopefully a month or two).
 
Nice RE: new job. I'm glad that got you something more concrete. :)
 
Having to learn WPF, Service Fabric and Dapper all at once...
 
Ahhhhh, WPF.
At least it isn't HTML, CSS, and JS.
 
nods furiously
so far it seems OK... haven't done anything intense with it, but I have some simple data and command binding.
 
8:16 PM
at least you're using dapper.
 
just need to grok how to convert events into commands, so I can avoid any code-behind
 
if they made you use EF, you'd have my sympathy.
 
EF isn't bad.
 
IMO, it is.
 
It isn't the best, maybe, but it's nice enough when you aren't a DB guy. Certainly better than Access.
 
8:17 PM
@this Lol I'm actually missing EF and kinda wondering what Dapper gives over ADO,other than very basic object-mapping...
but reserving judgement for now
 
@mansellan If you come across anything that clicks for you let me know. I'm get that commands are doing something but it still feels like magic.
 
@IvenBach Will do sir. AFAICT, the magic is a mix of codegen (files emitted to /obj on compile) and runtime XAML parsing. But I'm sure that's about 0.0001% of the full picture.
 
 
2 hours later…
10:00 PM
> The problem seems to be that the static event handler in `VBComponents` attaches only to the first `VBComponents` collection wrapped. However, the collections are per project. So, a static approach does not seem suitable.

To reproduce:

1. Open a workbook in Excel.
2. Open the VBE and parse.
3. Open another workbook. (This should trigger a parse.)
4. Add a module to the second workbook. (No parse)
 
@Duga TBH I always wondered about making it static.... it seemed odd to use static member to listen for events.
 
This will get a bit complicated as projects can come and go.
I think, after the cleanup I have done, we could start to make the projects events non-static.
My next PR will introduce a IVBProjects collection cached on the parser state.
I needed that to keep the RCW attached for the events.
 
10:25 PM
@this IIRC component collection events were not per-project as they seemed, which is why they were made static.
 
Yes, I remember that as well but I commented before that they should be a member of the IVBE object
since it's the VBE that implements them, IIRC
 
Ok, if they are not per project, then why does adding a module to another project not trigger a parse?
 
just to be clear - which events are we talking about
 
Could it be that, although the VBE is implementing the events, it routs the events only to the appropriate collections.
We are talking about component added, component removed and component renamed.
 
ok, that's what I thought -
 
10:39 PM
There are three more: component selected, component activated, and component reloaded.
 
I can't find the ComEventsHelper in the github
the definition, I mean
I see now - it's from System.Runtime.InteropService
I can see why it's all weird AF. Yes, the events are supposed to be for the collections, AFAICS
TBH, my understanding of a delegate is a little shaky but if making a delegate static means that it's now shared for the type VBProjects, it would make sense why it wouldn't trigger on 2nd project.
 
10:56 PM
We only ever attach events via the ComHelper to the very first IVBComponents collection.
 
and the VBComponents are per-project.
 
At least they are properties of each project.
 
as for the events on the VBProjects - TBH I don't even know if it's possible to have multiple instances of VBProjects -- I've never ever seen one. It does seem to me really weird that they'd implement on the collection, not the top-level VBE object.
 
At least the added and removed events kind of make sense on the collection itself.
 
That said, I think that even though they have this very weird setup, there is no reason we can make it more logical on the RD's wrapping code by implementing it on the VBE class - we would just += and -= everytime we got a reference to the wrapped IVBProjects.
 
11:06 PM
I think we really only want to attach the events once.
The problem I see with putting it on the VBE wrapper is that we new them up in different places.
In the end, we would have to make one of them the wrapper with event.
 
hmm. IDK. I mean, if they are instantiated, then it seems to me that the events has to be added/removed
if the collections were truly global, static objects, then maybe sure. But that's not how it looks to me.
 
However, then we might as well take one IVBProjects instance and make it the event provider.
 
Yeah. I really can't think how we'd end up with more than one instances of VBProjects
short of getting a new VBE, that is.
Maybe that's a challenge for @ThunderFrame - come up with a evil setup that loads mulitple VBProjects. :p
 
Interesting, SC listens to the project removed event but not to the added event.
neither to project renamed
and nobody listens to project activated.
 
you're doing this via the project explorer, right?
 
11:16 PM
I think so, but I do not really know.
 
I mean this...
 
I think you can also activate an Excel project by making the workbook active.
 
IDK about that. IT's just that the project explorer'd be the logical place if events are firing.
if it's not firing even from there, then.... maybe it's broken?
 
You can also activate a project programatically.
 
yeah - but that wouldn't necessarily mean an event woudl be fired
i've seen implementatoins where events only react to active user interactions but not programmatic interactions.
 
11:36 PM
> When debugging in native mode, I get the following warning in the output on startup:

`System.Windows.Data Error: 2 : Cannot find governing FrameworkElement or FrameworkContentElement for target element. BindingExpression:(no path); DataItem=null; target element is 'DataGridTemplateColumn' (HashCode=37228582); target property is 'SortDirection' (type 'Nullable1')`

This does not seems to be right.
 
11:52 PM
> @retailcoder I investigated this matter a little bit and these are my thoughts:

The `.settings` file generates an XML file and a code-behind file. This code-behind file contains a `DefaultSettingValueAttribute` for every setting, where the value is a string holding the setting's XML. Even if RD is not able to read the `app.config` file (I don't see one in the `bin` folder), it will fall back to default settings, which are hard-coded in the code-behind file. While developing, any change to `
 

« first day (1300 days earlier)      last day (1880 days later) »