« first day (1490 days earlier)      last day (1690 days later) » 
00:00 - 18:0018:00 - 00:00

12:00 AM
RELOAD!
[rubberduck-vba/Rubberduck] 6 opened issues. 19 issue comments.
 
12:16 AM
@this Did that issue I linked, and the MSDN article it referenced, reconcile with your understanding of Access and the IDL indicator?
@Duga IIUC, we're still exporting modules to get the text, but that wouldn't be necessary if we got the text using the method described by Wayne. Does this refactor cater to parsing the text, regardless of where it comes from?
 
1:17 AM
0
Q: Collating data from multiple worksheets, conditional. VBA

Daniel502Currently creating a 'master' tasks sheet for work, that can draw uncompleted (pending or overdue) tasks from multiple worksheets (upto 10 different projects) and sort through the data. The most lines of data to be on a worksheet is probably 50 rows and 8 columns, but the worksheets grow with fol...

 
 
1 hour later…
2:25 AM
> :facepalm: forgot to handle the case where we just type the whole thing without meaning to use AC...
 
2:35 AM
@ThunderFrame TBH, this seems to me a completely separate thing from what I was telling Mat earlier.
This page gives more details about the effect of the appobject: docs.microsoft.com/en-us/previous-versions/windows/desktop/api/…
Particularly this part:
> The type description implicitly defines a global variable with the same name and type described by the type description. This variable is also globally accessible.
which is why it is possible to do a Cells(1, 1) inside an Access VBA project that references an Excel library - that creates a implicit Excel instance which creates all kind of problems.
 
wow did anyone write about this?
 
But... Cells is in the Globals, too.
@MathieuGuindon about the implicit application? Yes, it has been written about avoiding implicit references precisely because of that but about the technical details about why? IDK.
 
thing is, folks don't know they're referencing an object... they think it's keywords in the language
 
For an example of the former --- this is an old-ish article: btabdevelopment.com/…
yes, VBA does a horrid job of differentiating the type libraries.
and in Access, at least, people only bother to disambiguate DAO.Recordset and ADODB.Recordset because it's an object type they use a lot and often within same project but I've rarely seen anyone else consistently use two-part naming that I insist.
hmm.
[
  uuid(00020812-0000-0000-C000-000000000046),
  helpcontext(0x0002c738),
  appobject,
  hidden
]
coclass Global {
    [default] interface _Global;
};
it's an appobject....
[
  uuid(00024500-0000-0000-C000-000000000046),
  helpcontext(0x00020000)
]
coclass Application {
    [default] interface _Application;
    [default, source] dispinterface AppEvents;
};
.... soooo Microsoft Excel team broke their own convention of using Application for their appobject....
Now to jive up with the article that @ThunderFrame linked to...
 
wuuuuut
?TypeIf Excel.Global Is Excel.[_Application]
False
 
2:51 AM
yeah that was the first thing I tried.
 
so that's where one of the places they did magic tricks
 
You can tell they won't be same cos the UUIDs aint the same.
Keep in mind, however, it is legal for a class to have 2 unrelated COM interfaces
 
but... do we get to see the _Application interface on Excel.Global? in RD I mean
 
Not necessarily.
 
hmm. we can't have an IntelliSense replacement otherwise, no?
 
2:54 AM
I ran into a similar situation with the IOle*** interfaces. An ActiveX control must implement those but there is no way to cast MyActiveXControl into say, IOleObject without accessing the original class's method (or some equivalent operation).
 
IIRC there's a place we hack an interface onto an Excel type explicitly..
 
That no longer should be necessary
we need to implement typelib api which will give us types for those stuff.
 
hm, maybe it's just used in test paths
 
The case I describe is exceptional, though. Normally, it's in COM developers' interest to provide access to other interfaces so it's no problem converting IFoo into IBar but IOleObject is of completely different concern so there's no point in converting IFoo into IOleObject (?)
BTW, I read the article that ThunderFrame linked to.... it does not say so but the behavior it describe sounds suspiciously too much like the appobject.
It might be that that the decorating of a class with Global*** has the effect of adding the appobject attribute / TFLAG_APPOBJECT flag, which causes the same behavior we observe with Excel's Global class and Access's Application. I presume Word uses Application as well....
@MathieuGuindon I wouldn't say this prevent you from having a replacement. It's more that you can only expose what the developers want you to see, no more, no less.
 
the Global members (and everything in global scope) are what's shown when you just Ctrl+Space on a blank line, no?
 
3:03 AM
> Good points all around. I only have a question - is there something we can do with the PR #4153 so that it can help move toward that ideal you describe?
 
Yeah. Just think of it as simply another predeclared object.
rather, a special kind of predeclared object where you can skip the reference to the object's name and access members directly.
This is also why if you see a VBA project that references 4 Office products and few more, you are going to end up with lot of weird behaviors due to all those implicit references and global namespace pollution.
 
3:26 AM
@MathieuGuindon I know RD fakes function declarations for LBound and UBound, and fakes declarations for the Debug class and its Assert and Print methods. Are there any other language keywords that get fake declarations, or is that it?
 
I think that's all we've got
 
oh, I suppose there's also the fake declarations for the WorksheetFunctions?
or is that part of an inspection logic?
 
no, it would be part of the "declarations" pass I'd think
@this on second thought... not having intellisense on these toxic globals might not be a bad thing...
(autocomplete actually)
 
Please add a question. — gdir 4 mins ago
@this much more eloquently put, and accurate, than the explanation I gave to @PeterMTaylor
 
3:52 AM
#DidYouKnow An implicit Excel.Application instance is created when your not-Excel VBA code is too... implicit. Good read, important stuff: https://btabdevelopment.com/why-excel-has-a-problem-when-using-code-in-access/
 
@this that's a site run by your company? Did you write the article?
 
I didn't
hmm
 
4:24 AM
> This is what the VBA Rubberduck project is all about. They should be sponsored by Microsoft as an official plugin. I would love to see it accepted and integrated.
 
@MathieuGuindon see if you can pitch to the team that bid for GitHub...
 
4:46 AM
huh, we had this Global conversation before:
Dec 30 '16 at 5:20, by ThunderFrame
@Comintern I'm not sure about this. When you use Application.ActiveSheet in an Excel host, I think you're getting the Global.Application
 
 
2 hours later…
6:59 AM
> In a sense, yes and in a sense, no. What we could figure out in the PR is having we want to handle setting the parsing mode strategy. But maybe this will look different in the final design.

I can currently think of three ways to go for the class parsing token streams into parse trees:

1. Have one class per parsing mode strategy with the actual antlr parser getting constructor injected.
2. Having a base class implementing the three strategies in different methods and choosing based on
 
@ThunderFrame Yes, part of the idea of the refactoring is to completely separate getting the code from parsing it. The only thing that would need to change when switching to another method of getting the code for the attributes pass would be the corresponding source code provider.
 
 
1 hour later…
 
1 hour later…
9:18 AM
0
Q: Order Spreadsheet code cleaning project

Nils ZimmermannI am working on a bit of a multiple part project, the goal of the project is to have a spreadsheet full of order data (order number, customer data, products ordered, prices etc) merged so that the duplicate information is grouped up. https://gyazo.com/3034782c17256afac40f6a31cd469dc1 ^example o...

 
10:11 AM
@ThunderFrame Sorry - the article was originally written by a former MVP, Bob Larson - btabdevelopment was his site for a number of years until my company bought it. Hence the branding.
 
@this I see. Did you see the chat transcript I posted, regarding the prior discussion around Global.Application?
@M.Doerner So it ties in with the web parser too, the web form being a code source (do we even do an attribute parse on web submissions?)
 
yeah - comintern trod the steps much earlier. It was interesting to follow his discovery.
 
@this the chat history is full of discoveries, it's a good thing the search capability is reasonable (but not perfect), or we'd gradually forget everything. Fortunately most of the good stuff ends up in GitHub issue at some point.
I'm still confused/unconvinced by how controls expose IControl. Even if it is a hidden interface(s), we might not have a choice other than to manually add the IControl members in RD?
 
10:32 AM
I need to look closer at that first to make sure I'm not talking gibberish
but AIUI, Wayne already solves the problem via the typelib API
unlike the IOle*** scenario, I believe you can cast a MSForms.TextBox to IControl, right? If so, then we can discover all interfaces by cycling all the ITypeInfo that an object has.
 
> # [Codecov](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/4153?src=pr&el=h1) Report
> Merging [#4153](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/4153?src=pr&el=desc) into [next](https://codecov.io/gh/rubberduck-vba/Rubberduck/commit/debf4a6bc809b79fa70428de598b6913b068905d?src=pr&el=desc) will **increase** coverage by `0.04%`.
> The diff coverage is `85.71%`.


```diff
@@ Coverage Diff @@
## next #4153 +/- ##
=======================
> Hi, I'd love to use Rubberduck,
but I just can't get the parser working in a bigger project.
Cheers
Matthias

Version 2.2.0.3439
OS: Microsoft Windows NT 10.0.17134.0, x64
Host Product: Microsoft Office 2013 x86
Host Version: 15.0.5013.1000
Host Executable: MSACCESS.EXE

[RubberduckLog.txt](https://github.com/rubberduck-vba/Rubberduck/files/2166104/RubberduckLog.txt)
[rubberduck-vba/Rubberduck] build for commit 294ab90f on unknown branch: AppVeyor build succeeded
> # [Codecov](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/4153?src=pr&el=h1) Report
> Merging [#4153](https://codecov.io/gh/rubberduck-vba/Rubberduck/pull/4153?src=pr&el=desc) into [next](https://codecov.io/gh/rubberduck-vba/Rubberduck/commit/debf4a6bc809b79fa70428de598b6913b068905d?src=pr&el=desc) will **increase** coverage by `0.04%`.
> The diff coverage is `85.37%`.


```diff
@@ Coverage Diff @@
## next #4153 +/- ##
=======================
[rubberduck-vba/Rubberduck] build for commit 294ab90f on unknown branch: 52.48% (target 0%)
 
11:23 AM
@this isn't there a chance that the TypeLib for the project is contrived, (i.e. just like Left and Left$ are in the generated VBA TypeLib, but not in the underlying TLB, the generated TypeLib for the project might add the IControl members manually)?
I guess we'll need to observe the TypeLib and see. Now, where was that issue for building a better Object Browser...
 
this seems to me two different problems.
BSTR _stdcall _B_str_Left(
                [in] BSTR String,
                [in] long Length);
[entry("(null)"), helpcontext(0x000f653e)]
VARIANT _stdcall _B_var_Left(
                [in] VARIANT* String,
                [in] long Length);
Based on that, I have to think that the aliasing is happening at higher level than TLB.
That's a completely separate thing from the issue w/ a object not exposing an interface.
In case of IControl, I just verified and yes a MSForms.Textbox can be cast to IControl, even though the coclass Textbox does not expose IControl as one of possible interface. From that observation, it has to mean that they set up the QueryInterface to allow substituting the one with the other.
 
@this Yep, but the VBE Object Browser is a lie. It does show the aliases, but doesn't show the underlying functions (even though they still work in code)
 
As I said earlier, the developers can choose whether they will tell you that their object exposes so and so interfaces or not. They are not obliged to tell you about all interfaces their object implement and there is no method within COM framework to enumerate all interfaces.
Not sure I follow the part about showing alias but not function.
 
@this my understanding of COM is limited here. Is it the developers of the Forms TLB that are doing that, or the VBE that is doing that?
 
RE: enumeration - the closest thing within COM is to call QueryInterface on all possible interfaces and hope for the best.
I would say the developer of the Forms TLB in this case.
 
11:38 AM
@this The OB doesn't show you _B_str_Left or _B_var_Left but VBA will let you use them in code, but it does show Left and Left$ (where the $ in Left$ is not a type suffix, but is actually part of the function name) even though they don't actually exist in the TLB.
 
Yes. Aliasing can't be coming from the TLB
hmm....
or is it?
 
And LBound and Ubound look like functions, but aren't in the OB.
 
do you know their names?
 
@this RD treats anything with a prefix of _B_str as a function that needs to be aliased as a string returning function with a $ suffix.
@this which names?
 
LBound/UBound's names in the TLB, if they exist aliased?
@ThunderFrame yeah I was wondering whether this is part of the decoration that would make it possible for OB to alias without specific knowledge.
 
11:45 AM
@this I think they're VBA keywords. They're not really functions. I don't think they exist, in any form in the TLB.
 
One way to find out is to create a TLB with a _B_str_foo and see if it comes out in VBA as foo$
Did anyone try that already?
 
@this hence the OB is a lie, but then I suspect the TypeLib does have the aliases, even though they're not defined anywhere in the TLB.
@this I don't think so, but then VBA might choose to only alias those functions if they're in the VBA TypeLib? A 3rd party TLB might just show the underlying functions. But I agree, we should check.
 
well that's interesting.
if you type in the actual function, the quick info still shows the alias
 
unit test each function as an assumption is time consuming just to find which alias in action right?
 
@this have a look for LBound in Intellisense, it's not there.
 
11:59 AM
indeed it's not.
@PeterMTaylor sorry I don't follow.
 
neither do I appear to ramble too soon in trying to comprehend your conversations
 
@this it's almost as if VBA has made _B_str_Left an Alias for Left$
 
I'll leave peacefully now to resume what your doing. bed time for me. bye
 
@PeterMTaylor it's more that we don't know what it's doing exactly.
Yes, @ThunderFrame it certainly does seems that way.
 
as in unknown unknowns...or something known into the unknown? @this
 
12:02 PM
Hence why we should test with a custom TLB to see if VBE will give the same treatment to the _B_str_foo
I looked quickly but I don't see any MIDL documentation suggesting that they decorate names, but that might not be MIDL's problem at all. It might be a convention held by the VBA environment, for example.
 
@this IIRC, C++ will let you create a function with a period in it %^/
 
@PeterMTaylor no, simply whodunnit.
 
okay.
 
1
Q: Is it possible to use a backslash `\` character in an Excel UDF?

ThunderFrameI already answered a similar question here, about periods . in a name, but I'm unsure about whether the same rule holds for backslashes. Is it possible to write a UDF in VBA that contains a period in the name? If the UDF is written in an external library, will the library allow backslashes in f...

 
@ThunderFrame a question, is there a byte somewhere to represent an alias or is this alias only recognized from a structured data perspective as in the order of which data is received to represent? in other words, how to do know that it is an Alias? on a higher level you mentioned left$ lower level is ...?
night
 
12:09 PM
@PeterMTaylor Left$ doesn't exist in the library, but _B_str_Left does. There doesn't appear to be any byte or flag or attribute that makes VBA create the alias, so Rubberduck has always assumed that a method that starts with _B_str_ should take the remaining characters and create an alias with a $ suffix. We just don't know what the exact rules are, and which process is responsible for it in VBA.
We also don't know if there might be other things that aren't as they appear in the Object Browser.
 
@this Of course, the VBA library has always been special. For example, VBA will not allow you to use CLng on the LHS and ignore the result: CLng 1 'Syntax error, but prefixing it with VBA is valid: VBA.CLng 1 'Not a syntax error. However, VBA will let you use CDec in either form: CDec 1 'Not a syntax error and VBA.CDec 1 'Not a syntax error
it's almost like VBA is treating CLng as an internal keyword rather than a library method.... And whoever implemented CDec didn't read the comments...
 
12:49 PM
and even CLng on the RHS is problematic in certain cases:
  x = CLng(AddressOf foo)     'Compile Error
  x = VBA.CLng(AddressOf foo) 'Not a compile error
makes you wonder whether CLng is built-in, and then shadowed by the VBA library?
 
IDK what to think, TBH. Maybe @WaynePhillipsEA would have an answer to that.
Just for note - CVDate 1 is ok.
But so is VarType 1 or TypeName 1
 
@this Yep, you'd think the p-codes/exe-codes would verify whether CLng and VBA.CLng are the same thing.
 
1:05 PM
and it might be that they are same; only that compiler treats it differently. IOW, p-code could be identical but compiler has some special if() that executes when it encounters that particular p-code(s).
One thing is for sure. VBA library and compiler were probably written by cowboys.
 
pictures the cowboy, from the Village People, hacking together the conversion functions
Maybe that's what the "C" stands for.
 
> According to the logs, this project consists of at least 253 modules. During parsing, Rubberduck throws an OutOfMemoryException **18** times.

Skimming the exception stacktrace it seems like we might have a parser-rule on our hands that indefinitely recurses, which is ... bad.
 
1:32 PM
@ThunderFrame YMCA!
It’s the Navy!
 
@Duga user probably just wants RD for the @Folder capabilities - just to organise 253 modules.
 
IMO, we do need to encourage more modularization. With vanilla IDE, the tendency is to encourage people to make one huge sized module so that they can avoid dependencies.
It's a PITA to find that to use this module, you need that module, which needs that module which ....
so I see lot of people dumping it into one module so that it's easy to export and share.
wishes nuggets for RD was here today
 
1:52 PM
@this called Module1
 
at least for those who do share code, they usually have the decency to not leave the name at that.
 
@this haven't got long, but... it is VBA that does the $ special casing for _B_str etc, and it does this regardless of what library (i.e. not just the VBA type library)
 
Thanks. It does imply that if one used different programming languages, they might find out that the calling conventions would be quite different.
 
With regards to special internal functions, this is absolutely correct. VBA inlines some functions for performance reasons. For example, if you've got CInt(SomeLongValue), instead of going to the VBA library version of CInt(Variant), it can just handle the specific Long to Int case
There are many execode opcodes that handle these optimized conversions, and also LBound/UBound
Sorry, got to dash. Back later
 
thanks!
 
2:29 PM
Contributors are expected to know how to handle constructive criticism on their post. Questioners are expected to treat it like a personal attack and lose their marbles. — Hans Passant 2 days ago
 
@MathieuGuindon welp, the latter is unsalvageable....
 
 
1 hour later…
3:34 PM
this is just mainly an idle curiosity but does anyone know why a number of Excel constants/enums uses negative number in the range of -4000?
 
4:08 PM
the -4000$ question...
 
groans IOU ok?
 
4:22 PM
> Most of all, I would like to see a migration path from MS Access using SQL Server to VB 6. Starting with some sort of integration of MS Access into Visual Studio.
.....
 
yeah saw that, thought "boy you have no idea"
 
@this I'm trying to follow and understand this discussion. Where are you finding these signatures? Are you using oleview on VBA to see this?
 
I can only sincerely hope that the VB 6 was typo but even so, how does one use SQL Server to migrate from Access to VB.... I'm sorry, I lost the plot.
Yes, @IvenBach
open up the oleview, then have it load the DLL in the C:\Program Files*\Common Files\microsoft shared\VBA\*\VBE*.dll.
 
Ooooooh! The mysteries of the magic-verse begin to unfold before me.
I wonder what happens if I tug on this stray thread.
Confirming that VARIANT* is denoting a pointer because of the *.
 
yeah
remember in VBA world, there's no such things as pointers.
You don't need to know about them.
Please stop looking behind the curtain, shoo, shoo!
 
4:33 PM
This is a dreadful day, I've shown I can learn and understand.
In coclass ErrObject it has a parameter of [out] void** ppvObj. What does the ** denote? A pointer to a pointer?
 
yes
 
More to think over.
Thanks for continually helping me learn along the way. I really appreciate it.
 
yw!
 
One day I'll wade into the deep end of the pond. Inching closer every day.
@this Is this for Left$?
 
yes
e.g. ?VBA.[_B_str_Left]("foo", 1)
Note the quick info that shows up., too.
 
4:47 PM
I just noticed that _B_str_Left is the actual name defined in the DLL. Yet we use Left$ in VBA. Where is the alias defined? Is this what you and Thunder were discussing?
 
anything _B_str_Whatever in a type library is basically a Whatever$ alias
#FunFact: that's precisely how RD handles it, too :)
 
Because of the signature convention.
 
yeah.. it's gotta be hard-coded somewhere
 
Not sure if you saw this:
3 hours ago, by WaynePhillipsEA
@this haven't got long, but... it is VBA that does the $ special casing for _B_str etc, and it does this regardless of what library (i.e. not just the VBA type library)
 
I read it but didn't understand what it meant, now I do.
 
4:51 PM
Which kinda of stinks because that implies that if you have a type library that uses the VBA convention, the other languages that tries to use the type library are #Screwed
Granted, there's not much use for say... C# or even C++ client to use VBA type library.
 
@this Why is this? I'm missing the bigger picture.
 
They do have their own framework, but for other type libraries... eh.
Ok, let's say so I spent 5 years programming in VBA exclusively.
now I need to migrate to oh, let's say JavaScript.
Let's pretend they migrated the VBA library, ok?
so I try to use Left$("foo" 1)
uh oh, I can't.
I must use the fugly name _B_str_Left("foo", 1) if I wanna string back
 
:click: OK. NOW I understand.
 
Heck, If I want to use plain old Left(), I can't! Doesn't exist! So I must use _B_var_Left("foo", 1). Yuck!
 
VBA is converting the _B_(str|var)_Foo to be the appropriate Foo[$]() for us.
 
4:55 PM
So what I'm saying is that whoever wrote the type library really did not give a fig about portability. "This will be forever and more used by VBA and no others.", which kind of contradicts the whole premise of COM (which promises you that you can use any language as long you adhere to the same binary convention).
yeah
 
public string Left(string value, int length)
{
     return _lib._B_str_Left(value, length);
}
 
I didn't know that was the mentality of COM.
 
and if MSFT did expose it in JS, they'll provide that anyway.
Yes, in theory, you even could use Java to create and itneract with COM objects.
 
I keep trying to understand what COM is but it's still elusive.
 
It's been done before.
Ok, you know what API is, right?
 
4:57 PM
Application Programming Interface. I know the definition but what exactly it is other than the public interface exposed not really.
 
OK - so you have all those functions from win32
that let you manipulate stuff without you having to program it yourself
 
TBH my mental concepts of COM and Win32 kinda overlap
 
Consider the rendering of fonts. Do you want to program that yourself? Probably not. That's what API does for you, basically.
 
user32.dll
 
Rather than coding everything, every time, you use the already done version that works
That much I understand.
 
4:59 PM
COM is closer to an ABI than an API, however.
 
an ABI?
 
with an API, you get a bunch of functions.
 
Application Binary Interface.
 
Application Boilerplate Interface?
 
That's my guess.
 
5:00 PM
Iven got it
with an ABI, you are basically saying "this space here is something, and that region is something else" - everything is laid out at the binary level.
which is why COM is language-agnostic. All you need to do is to build the v-table and interfaces to the specifications it requires, with all the pointers in the right location.
 
#simple
 
I think I get it. Still not comfortable/familiar enough with v-tables to say "Yep, makes sense".
 
so that's why you can in theory create a COM object with literally any language; it's a matter of having enough control over the binary output emitted by language's compiler.
 
@IvenBach essentially a map of an object's members
 
Is the binary that's used by Windows the same as those for Mac, *Nix, etc...?
 
5:02 PM
In theory, COM can run on any OS, too.
In practice, I'm not sure it does.
 
in practice, *nix said "FU"
 
Fair enough. Theory != Reality
 
because one problem w/ COM is that it has lot of tie-ins with Windows API stuff
which is why Mat is correct when he say he sees a overlap between the win32 and COM.
 
no no no, I mean my [mis]understanding of COM is intertwined with that of Win32
 
It would seem natural that both go hand-in-hand together.
 
5:05 PM
like, when you p/invoke user32.dll, you're doing Win32
 
they're almost inseparable. Heck, we're still using COM even in latest and greatest release of Windows. But the intended goal of COM was indeed to be language-agnostic (which they did achieved) but not totally platform-agnostic (not sure if that was ever a goal of COM).
 
p/invoke?
 
.net's way of calling
equivalent to VBA's Declare, more or less
 
what's the p stand for?
 
platform
why, don't ask me
TBH it's stupid name
 
5:06 PM
platform-invoke?
I got the answer, still don't know what it means though.
 
external declaraction would have worked and be understandable but nooo, they had to go fancy pant and call it.... Platform-invoke. Complete with the snooty accent.
if you know what VBA's Declare is, then you've understood what you need to know about p/invoke.
 
Just run whatever method has been written into another assembly?
 
careful - only .NET stuff can be in an assembly.
The unmanaged code can only live in DLL, never in an assembly.
 
@this I've wondered this as well.
 
you basically can only p/invoke unmanaged code.
just like you can't use Declare to call some other VBA function.
 
5:10 PM
msdn.microsoft.com/en-us/library/55d3thsc.aspx is the .NET equivalent to a VBA Declare?
 
yeah
fyi we have a number of them in RD project, too.
 
using namespace System::Runtime::InteropServices; makes me think its C++ or C.
 
Is the :: the same as . in .Net?
 
that's the C# example
well, in C#, there is no distinction between a namespace disambiguation and a method access. In C++ there is.
 
5:12 PM
I'm a bit too far out of my comprehension zone.
 
for example, you can do var foo = Rubberduck.Core.SomeStaticClass.SomeStaticFunction(), OK?
 
So SomeDLL.Foo.Bar() vs SomeDLL::Foo.Bar() would be C# and C++ respectively?
 
Rubberduck.Core is the namespace where the SomeStaticClass lives.
SomeStaticFunction() is a member of that class.
 
You included Static to omit the requirement of instantiating that variable. I think I see it now.
 
In C++, you'd go var foo = Rubberduck::Core::SomeStaticClass.SomeStaticFunction() (I think but don't quote me on this).
 
5:14 PM
I'm now on the same page.
:: denotes namespace stuff and . denotes member calls.
 
in C++, yes.
 
#Words
Back to coding for me. Thanks again for the education lesson.
 
@this IIRC, there's another accessor for interface members?
 
You mean ->?
 
5:23 PM
that's what you use when you're dealing with a pointed to object.
so obj* foo = GetIt(); foo->DoIt();
In contrast: obj foo = GetIt(); foo.DoIt();
 
Dereference a pointer?
 
no, that's what & operator is for
in example above, both are about member access on the object.
but when you use a pointer, you must use ->... why, I'm not 100% clear. My understanding is shaky there.
 
@this I seem to recall -> being the "gets" symbol in pseudo-code/algorithm syntax, from high school.
 
seems it is alll about precedence
266
Q: What is the difference between the dot (.) operator and -> in C++?

moorthyWhat is the difference between the dot (.) operator and -> in C++?

 
@this my understanding of C++/Win32 is just enough to make Declare statements achieve amazing feats, most of the time, and to crash the host, the rest of the time.
 
5:37 PM
I don't write enough C++ to be fluent in it, either. The PR I provided for the olewoo was my latest fray into C++ and probably the biggest one I made ever. Other times, it was just dumb simple stuff.
 
5:58 PM
@DavidCarlisle Welcome to the pond.
 
@IvenBach I'm just passing through:-)
 
> when i change a random comma here or there, I get different errors
Have fun.
 
00:00 - 18:0018:00 - 00:00

« first day (1490 days earlier)      last day (1690 days later) »