|
They sort of did fix that but they are finding different ways to break things.
Another thing - when I link with static libraries then my apps can't load resources from the libraries so several of the built-in controls won't work. The hits just keep on coming.
The most annoying thing is the fingers are pointed at someone else and there is no way (I have found) to inform the target of those fingers. This means the likelihood of the issues being fixed is minimal.
"They have a consciousness, they have a life, they have a soul! Damn you! Let the rabbits wear glasses! Save our brothers! Can I get an amen?"
|
|
|
|
|
Today, I encountered a problem that appeared to suggest that stringizing behaves differently when headers are fed to the Win32 Resource Compiler, rc.exe . My research led me to a post by Raymond Chen, The Resource Compiler’s preprocessor is not the same as the C preprocessor – The Old New Thing, which included the following comment posted by laonianren at October 5, 2017 at 5:26 am:
Stringizing can be persuaded to work in rc files. This converts version numbers into a dotted string suitable for the text part of a version resource:
#define STRINGIZE(x) #x
#define EXPAND(x) STRINGIZE(x)
#define MAJOR_VERSION 10
#define MINOR_VERSION 0
#define RELEASE_NUMBER 14393
#define BUILD_NUMBER 0
#define DOTTED_VERSION EXPAND(MAJOR_VERSION) "." EXPAND(MINOR_VERSION) "." EXPAND(RELEASE_NUMBER) "." EXPAND(BUILD_NUMBER)
I ultimately discovered that the workaround described above is not only no longer needed, but actually won't work, because the EXPAND directive used therein is no longer recognized. With the current tools, you can do this.
#define VER_DESCRIPTION_AND_PLATFORM VER_FILE_DESCRIPTION VER_PLATFORM
Though this improvement may be buried in a changelog, it's just as likely that it was quietly fixed, but never reported.
The bottom line is that it opens some very cool possibilities, such as incorporating variable text that depends on preprocessor values in standard version resources.
David A. Gray
Delivering Solutions for the Ages, One Problem at a Time
Interpreting the Fundamental Principle of Tabular Reporting
|
|
|
|
|
It was interesting to read Raymond's blog on this. Someone asked me the other day about my style of include guards and my reply was I've been doing it this way for so long I don't remember exactly why. That blog posted reminded me - I didn't have a compiler that supported pragmas back then it was quite a while until "pragma once" existed.
FWIW, this is what I do :
#ifndef HEADER_H
#define HEADER_H
#else
#error repeated include of this file
#endif
and I ALWAYS have the little commented section so I can copy and paste it and I am always safe. I did this back in the days when a global file change resulted in a compile and build process that took about forty minutes for our system. I cut that down by two thirds by putting this into the headers and I still do it today. I actually got the idea from Microsoft's headers and added the error statement to let me know of offenders. Microsoft still does this today, minus the error. Have a look at afxwin.h for an example.
"They have a consciousness, they have a life, they have a soul! Damn you! Let the rabbits wear glasses! Save our brothers! Can I get an amen?"
|
|
|
|
|
I think that this is programming, so I{ll read something else in the Lounge.
CQ de W5ALT
Walt Fair, Jr., P. E.
Comport Computing
Specializing in Technical Engineering Software
|
|
|
|
|
The new way to make a ListView in Android apps is to use the RecyclerView.
It's quite a complex thing, just to create a ListView.
You will have to create an Adapter class based off your Model type (in my case and the example below that Model type is called Entry -- think JournalEntry).
The Adapter you create will contain a list of your Model :
List<Entry> allEntries;
But, here is where it starts getting weird:
Your EntryAdapter has to extend A RecyclerView.Adapter of EntryAdapter.Viewholder :
So your class definition will look like the following:
public class EntryAdapter extends RecyclerView.Adapter<EntryAdapter.ViewHolder>
It Gets Weirder
And it gets weirder (to me).
That Generic type (RecyclerView.Adapter ) expects that your EntryAdapter contains a class named ViewHolder and EntryAdapter.ViewHolder extends RecyclerView.ViewHolder .
So here is just the basic outline of your EntryAdapter:
public class EntryAdapter extends RecyclerView.Adapter<EntryAdapter.ViewHolder>{
public List<Entry> allEntries;
public EntryAdapter() {
}
public EntryAdapter(List<Entry> entryList) {
allEntries = entryList;
}
public class ViewHolder extends RecyclerView.ViewHolder {
}
}
My Head Explodes
For me, my head kind of explodes on all of that.
The entire reason you need to do all of that is because you need to override a method and implement a couple of methods from the Generic RecyclerView.Adapter .
So really, your basic class will look like the following
public class EntryAdapter extends RecyclerView.Adapter<EntryAdapter.ViewHolder>{
public List<Entry> allEntries;
public EntryAdapter() {
}
public EntryAdapter(List<Entry> entryList) {
allEntries = entryList;
}
public EntryAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
}
@Override
public void onBindViewHolder(EntryAdapter.ViewHolder holder, int position) {
}
public int getItemCount() {
}
public class ViewHolder extends RecyclerView.ViewHolder {
}
}
A Few of Things That Stand Out
1. This really is the new expected way to simply create listview type of items in the Android dev world. The ListView type is being deprecated.
2. Generic / template type syntax is always difficult to read.
Here's my natural language reading of my EntryAdapter type:
I have an EntryAdapter that is a RecyclerView adapter of EntryAdapter viewholder.
3. This kind of thing makes it kind of difficult to talk about the types and the code and ends up causing me just to memorize all of this. Maybe that is good but it's quite an extensive pattern just to get to a listview of items.
My brain hurts. But I did get it working at least.
|
|
|
|
|
That's not too bad as far as infrastructure support goes. If you want a real nightmare, have a look at the Zend Framework someday. It will test your sanity.
I haven't written Java in years, but can you not define a generic version of the Adapter?
public class ModelAdapter<T> extends RecyclerView.Adapter<ModelAdapter<T>.ViewHolder>{
public List<T> allItems;
...
}
Or are the needs of that overriden method too specific?
"Never attribute to malice that which can be explained by stupidity."
- Hanlon's Razor
|
|
|
|
|
Nathan Minier wrote: but can you not define a generic version of the Adapter?
I'm not sure. But since I'm digging through this myself what would that do for me?
Are you thinking of creating a generic one that handles multiple types, maybe?
I think the only reason this is genericized is because it is an attempt to provide a generic way to bind model elements to the view and since those end up being specific fields then you have to (at this point) give it a specific implementation that you want to bind.
Anyways, I think that is the point.
Thanks for chiming in on the discussion.
|
|
|
|
|
That almost sounds like a programming discussion in the Lounge.
CQ de W5ALT
Walt Fair, Jr., P. E.
Comport Computing
Specializing in Technical Engineering Software
|
|
|
|
|
Walt Fair, Jr. wrote: That almost sounds like a programming discussion in the Lounge.
Is this sentence stating your shock?
A programming discussion in the lounge!!! What!?!
|
|
|
|
|
Yeah, but I could be wrong. After all, I'm an engineer who never studied programming in school.
CQ de W5ALT
Walt Fair, Jr., P. E.
Comport Computing
Specializing in Technical Engineering Software
|
|
|
|
|
From the TCP/IP interface specification for some hardware I have to talk to:
A command is always sent from the CT to the WS and a response is always sent from the WS to the CT. The term command and response no longer dictate the order that the messages are sent, that is, the WS may send a response first and the CT will respond by sending a command.
And people wonder why I don't have any hair left...
Software Zen: delete this;
|
|
|
|
|
But only psychic sites use that feature.
Or the amazing Carnack.
|
|
|
|
|
|
Describes my life.
Peter Wasser
"The whole problem with the world is that fools and fanatics are always so certain of themselves, and wiser people so full of doubts." - Bertrand Russell
|
|
|
|
|
Your sig is somehow very fitting to this thread.
|
|
|
|
|
Quote: this thread
Are you letting the rest of the world off the hook?
Peter Wasser
"The whole problem with the world is that fools and fanatics are always so certain of themselves, and wiser people so full of doubts." - Bertrand Russell
|
|
|
|
|
Nah, I'm just making a point of judging everyone on their own merits. So I don't consider people to be fools until they prove me wrong.
The fact that I anyway end up with the same conclusion in 98% of the cases, tend to make me seem a bit naive at times.
I guess that makes me kind of a fool, even if I'm not according to the quote.
|
|
|
|
|
The Typo "to" instead of "too", or the essence of the message?
|
|
|
|
|
Gary Wheeler wrote: ...the WS may send a response first... The only appropriate command for that is a middle finger, which happens to now be an emoji that I won't embed here...
|
|
|
|
|
You don't need an emoji
.i..
M.D.V.
If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about?
Help me to understand what I'm saying, and I'll explain it better to you
Rating helpful answers is nice, but saying thanks can be even nicer.
|
|
|
|
|
Just wait until they add request into the mix.
If you're not cross-eyed by Friday, it'll be because you've gone blind.
I wanna be a eunuchs developer! Pass me a bread knife!
|
|
|
|
|
Oh, it's in there. Their command descriptions use the words 'get', 'report', and 'request' arbitrarily for retrieving information.
Software Zen: delete this;
|
|
|
|
|
Ah, the joys of reading text by people who've heard that you shouldn't use the same word too often.
Look on the bright side: at least you've got something to complain about.
I wanna be a eunuchs developer! Pass me a bread knife!
|
|
|
|
|
Mark_Wallace wrote: at least you've got something to complain about To quote a line: don't get me started .
Software Zen: delete this;
|
|
|
|
|
quantum communication
|
|
|
|