Post is pinned.Post has attachment

I'm somewhat angry today...

I'd just like to know if the Embarcadero guys are "eating their own dog food" for more than the obvious "it compiles...now we're ready to ship it!!" when it comes to CBuilder.
If they thoroughly did with the Berlin release, things like that unbelievable slow (and unreliable) code insight "feature" simply won't have found their way to the customers.
Today, I sat in front of 10.1.2 Berlin the whole working day. I'm writing a DLL extension for some measurement SW, where I need some other libs depending on C++11 features and the VCL for some GUI dialogs, so I have to (and can) use bcc32c. My machine at work is a Thinkpad with an i5 and 8 gigs of RAM, a 500 gig SSD and Win 7, so it's a machine quite common today.

After starting CBuilder this morning, my first action was trying to add a new line to a header file:

- Opening project
- Opening .h file
- Starting to edit
- Wait cursor...
- ... Wait cursor...
- Access violation
- Empty code proposal window
- 2nd try starting to edit
- Wait cursor
- "Not responding" in IDE title bar
- IDE crash
- Restarting the IDE...the same
- getting it to work for some minutes, constantly interrupted by some background info with wait cursor, blocking my typing
- full IDE crash nearly once an hour always in connection to some background code completion parsing...
- Lost nearly 30 mins. of productive work today due to that hefty IDE problems. Even with code completion off there seems to be some parsing and sometimes crashing, but I needed code completion more than ever today.

Conclusion after some month of with C++ Builder 10.1.2 and bcc32c: It still feels like an app is an very early Beta stage whereas it could be such a productive environment. These problems are more than just bugs for such an expensive IDE. Filing some bug reports just won't do it, so I gave it up for the most part. If it's to me, stop working on the Linux part for CBuilder completely now, until the things that are really important have been solved.

That are my two cents for today....feels better now ;)

Post has attachment
A preview of an interesting UI tweak in the upcoming 10.2 release.

https://community.embarcadero.com/blogs/entry/ui-changes-in-the-ide-s-the-view-menu 

Post has attachment

Post has attachment
Looks like 10.2.1 GodZilla C++ Linux release is going to be delayed.

For instance, C++ for Linux is proving to be a bit more challenging that we thought. We originally planned to release C++ for Linux with the 10.2 (Godzilla) release. But we don’t have to, and so we aren’t. Instead, we are going to get Delphi for Linux in your hands as soon as possible, and then get C++ for Linux in your hands a bit later, when it is ready. You get quality software sooner, and later. We ship Delphi for Linux now, and then in a few short months, we ship C++ for Linux in the 10.2.1 release.



Post has attachment
The Stack Overflow survey is out, and only open for a few more days!

https://www.surveymonkey.co.uk/r/VCLBYTL

Post has attachment

Post has attachment
C++ Books and Possible Insanity (RegEx’ing C++)…
http://www.davidghoyle.co.uk/WordPress/?p=1560

Have I found a bug in std::wregex or am I missing something?

Hi all, I hope you can help. This has been driving me nuts for days and this morning I wrote a console app to do some tests (its at the end of the post).

I'm wondering whether I've found a bug in the STL as the wregex/iterators I'm trying to use are failing.

I'm writing unit tests and the first is an identifier which has a regex of "[a-z_]\\w*", i.e. first character must be a letter or underscore and the rest letters, numbers or an underscore. You'll notice that I've only specified lowercase letters as I'm trying to use the std::regex_constants::icase option for wregex.

The first match in a string works but the rest fail (to return the correct information). If I remove the the std::regex_constants::icase and expand my regex to "[a-zA-Z_]\\w*" it works (this will be my workaround).

It's as if the wregex / iterators are loosing the std::regex_constants::icase setting between the first and subsequent matches. Is this a bug or is there something subtle that I'm missing (this regex code works perfectly with TRegEx and it's roIngoreCase switch).

#include <string>
#include <regex>
#include <iostream>
#include <algorithm>
#include <exception>

void MyFunction() {
//std::wstring strTest = L"Hello Dave Hoyle!";
std::wstring strTest = L"HEllO DavE HOylE!";

//
// Regex for an identitier: Must start with letter or underscore followed by zero or more
// letters, numbers or underscope.
//
// "\\w" is the same as "[a-zA-Z0-9_]"
//
// Initial character class works for first match BUT seems to fail for subsequent
// matches when std::regex_constants::icase (case-insensitivity) is used.
//
std::wregex RegEx(L"[a-z_]\\w*", std::regex_constants::icase); // Doesn't Work
//std::wregex RegEx(L"[a-zA-Z_]\\w*"); // DOES Work
// The below are the same as above but with grouping to test whats happening
//std::wregex RegEx(L"([a-z_])(\\w*)", std::regex_constants::icase); // Doesn't Work
//std::wregex RegEx(L"([a-zA-Z_])(\\w*)"); // DOES Work

std::wsregex_iterator pos(strTest.cbegin(), strTest.cend(), RegEx);
std::wsregex_iterator end;
for (; pos != end; ++pos) {
std::wcout << pos->str() << L", " << pos->position() << std::endl;
for (auto i = 0; i < pos->size(); i++) {
std::wcout << L" Match (" << i << L"): [" << pos->str(i) << L"], Position: " <<
pos->position(i) << L", Length: " << pos->length() << std::endl;
}
}

std::wcout << std::endl;

std::wsregex_iterator beg(strTest.cbegin(), strTest.cend(), RegEx);
for_each (beg, end,
[] (const std::wsmatch& Match) {
std::wcout << Match.str() << L", " << Match.position() << std::endl;
for (auto i = 0; i < Match.size(); i++) {
std::wcout << L" Match (" << i << L"): [" << Match.str(i) << L"], Position: " <<
Match.position(i) << L", Length: " << Match.length() << std::endl;
}
}
);
}

int main() {
try {
MyFunction();
} catch(std::exception& e) {
std::wcout << L"An exception was thrown: " << std::endl << L" " << e.what() << std::endl;
} catch(...) {
std::wcout << L"An UNKNOWN exception was thrown: " << std::endl;
}
}

Post has attachment
I'm trying to get Box2D running with C++ Builder.
It can be compiled with bcc32c successfully ... with one curious exception:

In the file b2math.h you have to replace the line

float32 d = twoPi * floorf(a0 / twoPi);

by

float32 d = twoPi * floor(a0 / twoPi);

because the linker simpy won't resolve the first one:

[ilink32 Error] Error: Unresolved external '_floorf'

+David Millington
Why does this happen?
Both functions definitions are included in math.h:

float _RTLENTRY _EXPFUNC floorf(float);
double _RTLENTRY _EXPFUNC floor (double __x);

but the linker only can resolve the double one.
Wait while more posts are being loaded