« first day (1417 days earlier)      last day (1763 days later) » 
00:00 - 21:0021:00 - 00:00

12:01 AM
RELOAD!
[rubberduck-vba/Rubberduck] 1 opened issue. 4 closed issues. 19 issue comments.
[Zomis/Server2] 3 commits. 13 additions. 2 deletions.
[Zomis/UltimateTTT] 7 commits. 1759 additions. 1746 deletions.
> Looks like there's a bizarre bug in the Office8 commandbars. MVCE:

1. Create a 16x16 bitmap in MS paint. Save as any color depth, then select all and copy to clipboard.
2. Load VB6 without RD.
3. Right-click toolbar and choose Customise.
4. Navigate to a menu or toolbar button, right click and choose Paste Button Image.
5. Click OK to leave 'customise toolbars' mode.
5. Icon will only be visible when the menu item or toolbar button is enabled, or when the IDE is put back into 'customis
 
 
3 hours later…
3:03 AM
> Fixes #2699 Fixes #2893 The PR introduces a new method on the RPS, SuspendParser which takes a Action. This allows us to issue an action that should not allow the parser to run. During that run, the state is set to Busy. In theory, any parse requests should be then queued and when the action has finished executing, it will check if the queue is non-empty and execute the last requestor, then clear the queue. In practice, simply changing the state to Busy apparently disables several...
functionalities, including the providers which cause it to not request reparse, so as a result, no actions that normally requires reparse actually gets queued. However because the parser will not run under the Busy state, this should at least fix the immediate symptoms.
 
3:17 AM
[rubberduck-vba/Rubberduck] build for commit f9469e9a on unknown branch: AppVeyor build succeeded
> # [Codecov](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/3956?src=pr&el=h1) Report
> Merging [#3956](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/3956?src=pr&el=desc) into [next](https://codecov.io/gh/rubberduck-vba/Rubberduck/commit/14743dc32ef02938b569b841fe94e8d250217b72?src=pr&el=desc) will **decrease** coverage by `0.08%`.
> The diff coverage is `1.37%`.


```diff
@@ Coverage Diff @@
## next #3956 +/- ##
========================
[rubberduck-vba/Rubberduck] build for commit f9469e9a on unknown branch: 57.56% (target 0%)
 
 
4 hours later…
7:04 AM
Out of idle curiosity: @MathieuGuindon did you hear back from the VBE team about the WM_SIZE bug?
 
 
4 hours later…
10:41 AM
Nope
 
hmm.
 
 
1 hour later…
11:44 AM
> # [Codecov](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/3893?src=pr&el=h1) Report
> Merging [#3893](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/3893?src=pr&el=desc) into [next](https://codecov.io/gh/rubberduck-vba/Rubberduck/commit/14743dc32ef02938b569b841fe94e8d250217b72?src=pr&el=desc) will **increase** coverage by `0.05%`.
> The diff coverage is `100%`.


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


```diff
@@ Coverage Diff @@
## next #3893 +/- ##
=========================
 
12:01 PM
[rubberduck-vba/Rubberduck] build for commit a70879ec on unknown branch: AppVeyor build succeeded
> # [Codecov](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/3893?src=pr&el=h1) Report
> Merging [#3893](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/3893?src=pr&el=desc) into [next](https://codecov.io/gh/rubberduck-vba/Rubberduck/commit/14743dc32ef02938b569b841fe94e8d250217b72?src=pr&el=desc) will **increase** coverage by `0.04%`.
> The diff coverage is `100%`.


```diff
@@ Coverage Diff @@
## next #3893 +/- ##
=========================
[rubberduck-vba/Rubberduck] build for commit a70879ec on unknown branch: 57.69% (target 0%)
 
@this howdy...Busy weekend for me...just to touch your suggestions offered regarding installing RD 2.2 as admin. Yep. Needed to run as admin to bring up the dialog. Windows Defender SmartScreen prevented the immediate run so I allowed this. The You only option is greyed out. I'm fine with this as its on my personal PC.
my initial run after installing RD 2.2 shows nothing in menus or my Add-in manager...strange...I'll reboot to check.
 
12:30 PM
@PeterMTaylor I'm assuming you used the green release installer -- in that version, the add-in isn't automatically registered as part of admin install due to a bug in the installer. You would manually register via the Start Menu -> Rubberduck -> Register VBE Addin
 
got it to work as I figured I need to run a batch so i had done that and...Now i see the ducky. Thanks. :)
 
:+1:
FWIW, in a open PR #3948, the installer should be updated to do the registration automatically even for an admin.
If you could test that, I'd appreciate that. Installer is not the easiest thing to test.
 
12:51 PM
> To provide some feedback on my PC.
Rubberduck version 2.2.6672.28001 loading:
Operating System: Microsoft Windows NT 6.2.9200.0 x64
Host Product: Microsoft Office 2010 x86
Host Version: 14.0.7197.5000
Host Executable: EXCEL.EXE;
Able to install RD 2.2 green light release under as Admin. Window Defender Smartscreen complains so I allow this to run. Doesn't show any RD until I execute the Repair VBE batch file and the RD 2.2 works.
 
I'm yet to look into the latest development version so bear with me on this something during the week.
 
> That's expected for the green release 2.2. Just for reference, the installer with this PR changes can be downloaded here: ci.appveyor.com/api/buildjobs/drbpn8my5ng2k4d7/artifacts/…
 
I'm looking to match "yyyy-mm-dd hh:mm" in a string. This sounds like a call for RegEx, but I'm not super at all familiar with it in VBA. Pointers for some reading material? (Or a better approach if one is recommended...)
 
a cheap one is to use the built-in Like with this somehow verbose syntax.... If something Like "[0-9][0-9][0-9][0-9]?[0-9][0-9]?[0-9][0-9]?[0-9][0-9]?[0-9][0-9]" Then (I use ? to be more flexible with separators, though it won't consider those without any seperators (which is valid).
 
@FreeMan rubberduck has a regex analysis tool
\d{4}-\d{2}-\d{2} \d{2}:\d{2}
 
1:03 PM
@Vogel612 that part is helpful! It's been a long time since I've done RegEx, and I've really not done it in VBA, so the syntax is quite foreign...
 
^^ more terse but in principle, separators are just whitenoise. I usually would not care what they are so probably use something like.. .{0,1} in the place?
 
@this {0,1} \equiv ?
 
Plus, now that I've got a RegEx string, how do I use it?
 
@FreeMan for that you need the RegExp class
 
ah, yes... SO to the rescue! :)
 
1:06 PM
@Vogel612 I'm no regexp expert but I thought the dot . was necessary to indicate any character, suffixed with {0,1} to indicate only exactly zero or one character is allowed at that point?
 
.? == .{0,1}
 
#TIL
so, in short, \d{4}.?\d{2}.?\d{2}.?\d{2}.?\d{2}
 
yeap-ish
 
Though, as an alternative, it may be better to simply strip out the non digit characters, then parse the remainder which should be all digits. That becomes more easier to parse when you might need to handle more than one level of precisions
Only works if you're consistently using ISO format and not some silly localized format.
 
1:15 PM
Well, since I'm defining the format and ignoring all i18n, I'll define the regex to match the input. :)
 
It's not really about i18n. It's more about avoiding erroneous output due to ambiguity or stupid computer setting getting in the way.
 
2:03 PM
> @MDoerner Think you could confirm that your concerns were addressed? Might as well get this in and start testing it if so.
 
2:15 PM
[rubberduck-vba/Rubberduck] retailcoder pushed 14 commits to next (only showing some of them below)
[rubberduck-vba/Rubberduck] mansellan pushed commit 688f0af6 to next: reverted coalesce operator
[rubberduck-vba/Rubberduck] mansellan pushed commit 3f8cca93 to next: Release event source in SafeRedirectedComWrapper.Dispose()
[rubberduck-vba/Rubberduck] mansellan pushed commit 91379724 to next: VB6 SCWs now passing IVBE instead of the raw RCW
[rubberduck-vba/Rubberduck] mansellan pushed commit 4e5aff01 to next: Changes following PR comments and SE chat
[rubberduck-vba/Rubberduck] mansellan pushed commit 36c05069 to next: Added class constraint to TEventSource
[rubberduck-vba/Rubberduck] mansellan pushed commit 726786bf to next: Removed PasteFace call (unreliabe, exception-prone and destructive) from VB6 CommandBarButton wrapper.
[rubberduck-vba/Rubberduck] mansellan pushed commit 25ba7ad8 to next: Merge branch 'next' of github.com/rubberduck-vba/Rubberduck into VB6-Final
[rubberduck-vba/Rubberduck] mansellan pushed commit 8ac6a5f1 to next: Changes following PR comments
[rubberduck-vba/Rubberduck] mansellan pushed commit 4fd24a68 to next: Changes following PR comments
Merge pull request #3935 from mansellan/VB6-Final

Introduces VB6 IDE Support
> @WaynePhillipsEA you're up! :smile:
 
@Duga there will be another PR anyway, let's go with this
 
:-)
 
@mansellan that's awesome btw :)
 
> Win64, 32-bit Office local admin installs & registers automatically, and kudos for discovering interfering processes (e.g. EXCEL.EXE) and allowing the installer to kill them... however I wasn't able to perform a per-user install on that setup (option was disabled). Also confirming encoding issues are gone (ref. #3947).
 
@MathieuGuindon thanks mathieu - as I say though, its mostly just aligning to the VBA side. I don't think I could have got it working without all the work done on the events - those static events were driving me mad when I tried last time.
 
2:28 PM
@Duga RE: DLL in use check -- that's pre-existing. I didn't change anything in that aspect and it won't catch different hosts. Needs to be improved.
 
ha, first time I saw it :)
(which means the Excel/VBA session I had just closed, didn't shut down correctly :(
 
but thanks for confirming the changes worked, though!
RE: the per-user --- does it really make sense, though?
 
if you're installing as an admin, what's the point of not installing to hklm?
 
[rubberduck-vba/Rubberduck] bclothier pushed commit a1c87499 to next: Remove the restrictions on the admin elevation. Modify the addin registration to avoid the bug(?)
Merge pull request #3948 from bclothier/FixElevationForInstaller

Removes the restrictions on the admin elevation; add-in will be automatically registered for an admin user now.
 
2:30 PM
@this if I'm local admin on a given VM and want to install & register RD for myself without disturbing all other users of that machine?
@this oh wait, it still won't register RD add-in for all users... so other users wouldn't be affected anyway
but if they want RD then they can just run the "register add-in" shortcut
 
yeah, that's true but the start menu is seen to them all
yes
 
I think we're good
 
I do have to update the messaging now that it's no longer applicable.
 
well, and register for VB6 too now :)
 
:-)
@this did you have any other ideas on why parsing of VB6.OLB fails?
 
2:34 PM
yeah...
ah, we need an issue for that (registering the vb6 in installer)
Sorry, no, @mansellan - we'd need to dig in the com reference collector to see why it can't see the name
 
ok cool
 
it seems to me that if the OB can see the namespace VB, then RD should be able to see. It uses ITypeLib internally, too which is what OB uses.
 
[rubberduck-vba/Rubberduck] build for commit d24bf63d on next: AppVeyor build succeeded
[rubberduck-vba/Rubberduck] build for commit d24bf63d on next: 57.67% (target 0%)
 
@mansellan suggest that you add a breakpoint to the appropriate point in the com reference collector to see what it is really doing. I'm sure that the exception you got is much much later than the point where RD collects the information.
 
2:38 PM
ok will give it a try
 
One roundabout way of doing this (and mind you, I'm still learning my way around the parser/resolver beast) is to set up a breakpoint on the Declaration ctor with a condition that makes sense
then looking at the call stack.
 
oh ok
 
That's why I mentioned the other issue about needing a wiki for resolver. It's a big thing to wrap thing and because of its ravoli code, it can be hard to see where it get processed.
 
lol @ ravioli code!
still looking into icons atm. i know its kinda trivial, but it's bugging me
 
I wonder how other old VB6 addins did it.
 
2:43 PM
yeah... I can see the data structure, its a BITMAPINFO with a 16 colour LUT
 
@this they were made with... VB6...
 
just poking some individual bytes into an array atm to prove the concept, then I can do some proper structs for it
 
I was wondering more whehter they decided to use some other ways other than PasteFace
 
AFAICT there are none, unless they're very secret
 
I clearly remember VS6 clearing the clipboard on startup
also IIRC MZ-Tools 3.0 cleared the clipboard on startup in VBA
 
2:47 PM
did a whole bunch of google-archeology
 
i suppose because back in that day, everyone freely shared the kernel, the system, and whatever, aint no thang
 
it'd be good if we can do @WaynePhillipsEA's suggestion of hooking the clipboard API to avoid dumping it
 
even shared alike with a bunch of virus because they're not that bad, right?
well if VS6 dumps the clipboard on startup, it's kind of moot, I guess.
 
i'm not seeing that behavior
 
not that I don't disagree that using native DLL might be more cleaner.
Oh
 
2:49 PM
maybe fixed in an SP
lemme test it again
 
@this the part I don't clearly recall is whether that was because of MZ-Tools or Smart Indenter or mousewheel fix, or if vanilla-VBE did it
 
checking
vanila 6.0.8176 with no addins loaded doesn't dump
 
[rubberduck-vba/Rubberduck] build for commit bcf72dd4 on next: AppVeyor build succeeded
[rubberduck-vba/Rubberduck] build for commit bcf72dd4 on next: 57.67% (target 0%)
 
2:52 PM
suspect it may have been MZ
that used custom icons i believe
 
@MathieuGuindon the funny thing was that for long time I thought Close All Windows was native VBE until I ran into a vanilla IDE setup and was all "where is that command?"
 
@mansellan me too
I've just updated the tag wikis on both CR & SO
5
(removed source control mentions, and added VB6)
 
3:14 PM
> Getting there...

Expected format is a [BITMAPINFOHEADER](https://msdn.microsoft.com/en-us/library/windows/desktop/dd183375(v=vs.85).aspx) containing 16 [RGBQUADs](https://msdn.microsoft.com/en-us/library/windows/desktop/dd162938(v=vs.85).aspx).

Still need to write a colour reducer and compute a mask.
 
3:30 PM
@Duga @mansellan do you really need to write one? I bet there's plenty of free image manipulation libraries all over the Github; save yourself from re-inventing the wheel?
 
hi @OurManinBananas!
@this IDK, do we really want yet another dependency for this?
 
@MathieuGuindon yet another? You're getting into NIH territorry
 
How goes it, @IvenBach?
 
@Vogel612 What he sez, Mat.
 
I think ok. Am I missing something or should I have done something over the weekend?
 
3:33 PM
Actually better yet - it probably should be a nuget package. Then an dependency is less of a problem.
 
No, just status check.
 
We don't need image processing for any of the core functionality. It's the perfect fit for a library. If something breaks we report a bug against the library instead of having to diagnose and fix it all ourselves
 
Agree.
 
agree on nuget
 
@this hmm maybe... its easy enough though, just calc the distance to the nearest color. there's only 16 of them ;-)
 
3:34 PM
And even then we can go diagnose and fix it most of the time anyways
 
should fit in a small static method...
 
meh, i know nothing about image, and I'm thinking that a library means we aren't toast if we need to modify icons or add new one.
 
Still trying to get to the last article I was referenced to. I'll get to it sometime today though.
 
@this yeah that's why the method rather than extra files
 
I'm just not too warm to the idea of using a library that does, IDK, photo editing, image compression and God knows what, when we'd only be using a tiny little bit of that code
 
3:35 PM
But is it really the only thing you have to do, though? Sounds like you have to convert a non-BMP image into a 16-bit BMP, set the color depth, set the mask, etc.
@MathieuGuindon that needs not be provided at runtime.
Use Deployment to pre-process the non-BMP images for example.
 
@this just using System.Drawing to get pixels. Not fast, but not many pixels ;-)
 
@MathieuGuindon IIUC we probably get rid of most of the lib at compile time, don't we?
 
@mansellan You're closer to it than I am - I just want to be sure we're not NIH'ing here that's all.
 
nearly done tbh, just need to get the LUTs right
 
from my experience, image manipulations are solemn done with only one method but what do i know.
 
3:39 PM
@this meh i'm winging it here too. think this is a special case, because there's exactly one simple target format involved. not solving for the general case.
 
IDK, do we?
 
@MathieuGuindon Yeah
@MathieuGuindon That's nothing. You should see it at work.
 
@this solemn?
 
Well, let's say @mansellan gets it done and publishes it in a NuGet package we use.
#BestOfBothWorlds :P
 
> not solving for the general case.
 
3:43 PM
and we're doing what with the source images?
they aren't in 16-bit BMP are they?
 
Oh CRAP.
Got a new laptop at work, and lost all my bookmarks...
 
@this NIH?
 
Not Invented Here
 
@IvenBach National Institute of Health.
Although, in the software world, Not In House (or what Mat said).
 
Nerds Inda House
Nugget Inheritance Hell
#SoManyPossibilities
 
3:46 PM
@Hosch250 I did get amazon.com/VBA-Developers-Handbook-2nd-Getz/dp/0782129781 over the weekend. I have so much reading ahead of me.
 
@IvenBach I bet you already know 90% of everything that's in there
 
That ^
At this point, don't waste your time on "learn language" books.
 
Likely.
 
@Hosch250 s/time/money/ ;-)
 
If you are going to read that type of book, get the one by someone who is/was on the language team and discusses why things are the way they are.
 
3:48 PM
I'm already glad I picked up the 2016 Power programming book.
 
FWIW, the only books on programming I've seriously read are C# In Depth and Dependency Injection in .NET (well, I skipped the half on specific frameworks).
And Bjarne Stroustrup's Programming Principles and Practices Using C++. I'm about 3/4 of the way done with that.
 
My wife's previously expressed a desire to learn VBA to help with some of her work. I'm going to have to go back and visit old-me to relive the "WTF why isn't this working!" when trying to do Dim someRange As Range: someRange = Range("A1")
 
I still consider that a must-read for any serious programmer. Most of the book is about programming more than C++.
I started Clean Code, but quit less than halfway through because A) old news all over, and B) Java (just kidding).
 
@IvenBach well, you can then tell her to run RD inspections!
 
I can explain what those inspections mean.
 
3:53 PM
^
 
It's going to be interesting seeing VBA through a newcomers eyes again.
 
oh, but you'll never unsee what you've seen
 
4:11 PM
@MathieuGuindon @IvenBach TBH, the wording without the context isn't all that clear. In fact it means "we don't take anything that's not invented here", rather than "it's not invented here"
 
I took it to mean "we didn't create it in-house, but we're going to use it".
 
yeah, totally the opposite
so that's why it's pejorative.
@IvenBach PFE is what you want for that sense -- Proudly found elsewhere
 
Not invented here (NIH) is a stance adopted by social, corporate, or institutional cultures that avoid using or buying already existing products, research, standards, or knowledge because of their external origins and costs, such as royalties. The reasons for not wanting to use the work of others are varied, but some can include a desire to support a local economy instead of paying royalties to a foreign license-holder, fear of patent infringement, lack of understanding of the foreign work, an unwillingness to acknowledge or value the work of others, jealousy, or forming part of a wider turf war...
 
sorta similar (derived from?) NIMBY --> not in my backyard
 
@this :click: AH... Now I get the reference.
> When two in-house developments come together, it is informally known as "computer incest."
 
4:16 PM
lol
 
5:11 PM
> Hmm... not got the colours or mask quite right, but done enough to see that conversion from 32bpp PNG to 4bpp BMP is gonna look absolutely dreadful, even at 16x16.

If we want icons in VB6, I think they're going to need separate low-colour resource files to be created and added.
 
@Duga maybe wait to see how popular (or not) VB6 ends up being...
 
@mansellan FWIW, we do have an open issue for branding. One point in that issue is to have a vector artwork that makes it easier to convert to different formats.
 
@this oh ok
 
bitmap => another bitmap == world of pain, heartbreak and gnashing of teeth.
how did you do the conversion, BTW?
 
@this just a simple euclidian distance calc, no dithering or fanciness
 
5:23 PM
hm. Why not use some paint software to convert?
see if it does better?
 
yes, suspect that's the right way
but given these:
are the only colours to play with, suspect hand-editing will be necessary
 
well suppose you used a grayscale version instead? would it be simpler and not require hand-editing?
(and here I thought 16-bit colors were a thing of DOS, not Windows 98/Office 97....)
 
@mansellan huh, then screw this. I'd rather have no icons than icons with that color palette.. or I guess we can do monochrome?
 
yeah, mono woudl be better than grayscale, possibly. just simple black and transparent
 
but then, the meaning might get lost
 
5:29 PM
well grayscale would require more work since we only have 4 shades to work with
and I think todays' grayscale have more shades than that.
 
oooh, I'm a blues expert now lol
Correct, and thank you - I was trying to make it simple, but was too simple for the blues experts. — dwilli 2 mins ago
 
they can look ok (ish!) with careful use - here's the standard VB6 toolbar
 
yeah... the only real solution is to recolor every icon one by one (I think)
 
yeah. we don't have that many though I think?
 
unit tests & refactorings are the bulk of 'em
 
5:34 PM
so - we'd add a couple of new props? LowColorImage and LowColorMask, and the VB6 SCWs would use those instead?
 
yeah, under Rubberduck.Core/Resources/Custom/LowColor I guess
pretty sure the existing masks can be reused, no?
 
ok cool, will take a look
@MathieuGuindon very possibly yes
 
they're basically the PNG images opened in MS-Paint and saved as monochrome bitmaps
(sometimes with a pixel or two manually painted black)
 
yeah
i'll pick one, hand-edit it, and paste it here
 
6:01 PM
I'd heard about using Shell before but today's the day I understood it.
 
the original is shaded, which definitely means no automation, i think.
otherwise, it looks good (for some value of "good")
 
workable I think
 
prolly should add something to the effect in the branding issue that we'll need to support those
 
@this What's a HANDLE exactly?
I've seen references to getting the handle for a window or a process. I can't grok what it is or what it represents?
 
6:08 PM
@IvenBach first I need to remind you --- have you walked it down to the base data type?
 
Nope. The thought just occurred to me and I asked without researching...
 
you need to get in the habit
so go to the MSDN article on Windows data type
find the HANDLE and walk down until you get to the original data type that's not a typedef.
(e.g. not an alias)
 
Working on that. Still getting used to being able to teach myself.
I sorta miss the spoonfeeding.
 
bbl
 
@this Handle -> PVoid -> Void -> #define VOID void
 
6:12 PM
right so void => a pointer.
 
And a pointer is just a memory address location.
 
Therefore, any HANDLEs and its derived types (e.g. HWINDOWS, HINSTANCE, etc.) are pointers.
but, they're no longer just a simple pointer.
if you've looked at few APIs, you might have noticed that you get some HANDLE out of some functions, then you are expected to pass the same into another API functions
 
> When used in the declaration of a pointer, void specifies that the pointer is "universal."
 
so you could almost think of them as "object"... except you have no information what they are exactly and that's the intended effect. The "HANDLE" is meant to be opaque to you.
 
:click:
 
6:15 PM
It's only for Windows' API use.
so it's basically your key to something that the Windows API created for you
so that when you want Windows API to modify something else, you provide it with a HANDLE (aka the key)
 
> A void pointer can point to a function, but not to a class member in C++.
 
but you of course don't have that knowledge of the object, and neither should you. it's exclusively for Windows API's use
 
That's because the members is based on whatever its parent is? IE You have some knowledge of what it is.
 
I think more likely, those API were written with C, not C++
therefore, no OOP
so it was their "poor man's object"
 
They were procedurally done?
 
6:17 PM
yeah because again, if you look at the API functions that modify something
you usually are expected to pass in the handle of something.
e.g. SetWindowsPos expect you to provide it with a HWND
 
@IvenBach just to check whether I actually got this: ... It should be ...: Set someRange ..., right?
 
@Vogel612 Yep. The Set keyword needs to be used because AFAIKT it's an object.
@this Thanks. I'll make it a habit to do what research I can to understand before asking.
@Vogel612 I used to get so confused with Dim i as long: i =5 working and wondering why it didn't work with objects. I had no clue there was a reason to use the Set keyword.
 
yeah that part of design wasn't probably the best thought out
 
#WorkingWithWhatYouGot
 
would have been better to always required the Let statement, or require neither. Not sometimes this/other times that.
Same problem with the (). Totally irks me.
One guy I know decided to use obsolete Call everywhere just so he can be consistent with ()s.
 
6:22 PM
:shudder:
 
@IvenBach 'course they were. Windows API stems from DOS, which is actually pre-C++ maturity
 
@MathieuGuindon not sure now - a few of the masks seem to be greyscales or PNGs...
 
@this :click: Makes sense why so many things value type comes up as Long. I know I'm slow on the uptake...
 
eg arrow_circle_double_mask.bmp
 
@IvenBach yeah, and they really should be LongPtr now in the VBA7 world. I hate that in pre-VBA7, Long were basically opaque as to whether you need a pointer or a 32-bit integer. In 64-bit OSes, a DWORD is still 32-bit integer but a pointer (e.g. any H*** data types) would be now 64-bit. Does not make for fun conversion.
 
6:35 PM
@this I'll try to make that a mental sticky-note. Thanks.
 
in theory, you'd have been able to tell from the HN on the API but in practice, there are cases where they don't use the same data type indicated by the prefix (e.g. PTR_LONG nIndex rather than more conventional DWORD nIndex.
 
@MathieuGuindon Make sure you add that to your resume!
 
@mansellan probably an artifact of lazy editing ...should be purely monochrome IIUC
 
7:03 PM
I"m wondering - does the "humble object" pattern make sense for unit testing the new SuspendParser method? or is there a better way to unit test where threading are involved?
 
hmm.. no idea. what's a humble object? do we have cocky ones?
 
lol. that's what i'm trying to decipher - saw it here: xunitpatterns.com/Humble%20Object.html
AIUI, it's a wrapper around the object that is usually hard to test (in this case threading) and thus provide synchronous methods to prove that the behavior is correct given a certain state.
But it falls short of a useful example so I'm not sure this is what I want or if there's something better since the UTs normally shouldn't be dealing with threading or asynchrony, or what-have-yous.
 
7:43 PM
Duck check: Shell refers to the UI of windows.
 
hm, are we referring to the function Shell that exists in VBA (and VB6?) If so, not really, no.
OTOH, "shell" has been used generically for UI of some kind.
 
@this VBA.Interaction.Shell
 
ok, not really anything to do with UI at all
 
Reading msdn.microsoft.com/en-us/library/windows/desktop/… made me wonder if it was accessing the Windows shell or if it was the same name being used.
 
all it simply does is spawn a new process as if you had typed the command via a command line window, that's it.
Yeah, two completely different meanings of the same word.
 
7:47 PM
Thanks.
 
we can speak of Windows shell or Visual Studio shell in the sense of "something that provides a UI"
 
I can only get so far reading on my own before needing to ask clarifications.
 
but VBA's Shell simply is "run this bad boy via the command prompt"
 
:+1:
 
yeah I know what you mean - not having the right context, it can be easy to get misled
 
7:48 PM
So in terms of programming Shell means the UI that you interact with (read Abstraction) that simplifies it's use for the flesh&blood users.
 
which is why it pays to take note of the breadcrumbs you see at the top of MSDN to give you a hint of what context you're in.
 
uuuhhhh, I wouldn't put it like that. The UI meaning is used generically, and wouldn't be a "code thing" (which is why I don't monospace it when speaking of "windows shell" or "visual studio shell" .
Now I understand why you are asking
so that is basically your API for the windows explorer
nothing whatsoever to do with VBA's Shell
basically anything you can do via the Shell32 namespace, you are simulating behavior on the Windows explorer.
and there is a Shell object which is the root object, similar to how FileSystemObject is for Scripting.
one more caveat. this is different from WScript.Shell which you may see in VBScript, too.
 
VBA.Interaction.Shell can be thought of as Explorer.exe->cmd?
In opening a new instance of a program.
 
sort of, yeah. You're literally executing a command.
 
7:53 PM
:+1:
 
granted, not any command, its' usually expecting a path to something that can be "run" or "open"
 
@this What's the difference between them?
 
for one thing, WScript.Shell exists only in VBScript. You can't have it (IIRC, you can create them, though but they are WshScript.WshShell or something like that but there are few small differences, again, IIRC). WScript.Shell provide few high-level functions for common tasks. Shell32.Shell exposes much more but requires much more objects to work with.
 
8:08 PM
Use of Dim sh as object: Set sh = CreateObject("shell.application") isn't dealing with VBA.Interactive.Shell but rather the Shell32 namespace?
 
oops, yes. What I said Shell32, should be just Shell
i think I conflated the namespace w/ the DLL name (shell32.dll ?)
 
00:00 - 21:0021:00 - 00:00

« first day (1417 days earlier)      last day (1763 days later) »