|
Vectors are quite simple, but very powerful. But the usage will depend on what you are actually trying to do. In your example your func method does nothing useful, so it is not clear what actual problem you are trying to solve.
|
|
|
|
|
Quote: That would not work in my function which retrieves unknown "size" of (string) data. That's not a problem.
It would work as well. Try, for instance
#include <iostream>
#include <vector>
using namespace std;
vector <int> get_a_fresh_vector_with_unknown_size()
{
vector <int> v;
int N = rand() % 128;
for (int n = 0; n < N; ++n)
v.push_back( rand() );
return v;
}
int main()
{
auto v = get_a_fresh_vector_with_unknown_size();
for (auto x : v)
cout << x << " ";
cout << endl;
}
"In testa che avete, Signor di Ceprano?"
-- Rigoletto
|
|
|
|
|
Hi Guys,
I have an app which does not use latest common control library. This app have Combo box which is in old style (like 3d style) but now we need to modernize the combo control like Flat (new window 10 style) without using latest common control library.
Can anybody help?
|
|
|
|
|
That is a contradiction in terms. You cannot have the modern style and still use the old library. However, it may be possible if you implement the OwnerDraw property.
|
|
|
|
|
There are many examples of CMFCRibbonComboBox that display simple text. I am actually looking for a CMFCRibbonComboBox example that display image or something like graphic, or say is ownerdraw.
Unless I mistake, I think CMFCRibbonComboBox class and inherited classes have ownerdraw capabilities since in afxribboncombobox.cpp there is a Draw and OnDrawLabelAndImage and others functions with CDC arguments.
Unfortunately, without step by step example, it is very difficult to implement such a class.
Any links or suggestions are welcomed
Pierre
|
|
|
|
|
There are plenty of examples of using OwnerDraw on controls. Adding it to this class will be no different.
|
|
|
|
|
|
|
These are derived from CComboBox, not from CMFCRibbonComboBox.
We are in a C++ MFC thread
|
|
|
|
|
But the main principle of the owner drawing is still the same! You implement it in both edit (or static) box and in the listbox.
|
|
|
|
|
|
Sorry for the cryptic nature of this question just trying to condense as much as I can.
I am trying to write a program in "C" which has a twist on the normal echo command in XPSP3
XP echo does not allow you to remove EOL characters when you redirect into text file with the >
I think they call it CRLF. However in my wanderings I have come across some "C" code that I think could compile a useful program. Here is some background info to illustrate:
The program that I hope to use would be called ECO.COM would be commandline for usage in CMD
ECO would be furnished with a flag (-X) that would give the user the choice to include the CRLF removal or would just be used just like echo command in XP without the -X flag. The ECO.COM file would be restricted to one line (80 Chars) long so the following could take place. The user could type for example
ECO.COM -X SET VARIABLE= (the ECO.COM would have with the -X flag to strip out the end CRLF so once the
SET VARIABLE= line was ridected to text file could easily be appended (>>) with a second ECO command or text file all on the same line. The resultant Text file could then be renamed to a .CMD file & called from another batch file thus setting the given %Variable%
I think they call it backticks or command substitution or some call it back quotes anyway here is the code which I have sought & tried to compile to create ECO.COM/EXE but it is not working can someone assist to make it work Please I think it would be very useful alternative to SET/P option in XPCMD?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
for (i = 1; i < argc; i++) {
if (argv[i][0] == '-') {
switch (argv[i][1]) {
case 'x':
printf("flag a was called\n");
break;
}
}
}
int echo()
{
char input[80];
while(fgets(input, 80, STDIN)){
printf("%s\n", input);
memset(input, 0, strlen(input));
return 1;
}
if (*char == -x) {
goto remit;
else
if (*char == " ") {
goto exit;
}
Best Regards
JacknGill 
modified 12-Jan-21 15:57pm.
|
|
|
|
|
jackngill wrote: ...tried to compile to create ECO.COM/EXE but it is not working... What exactly does that mean?
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles
|
|
|
|
|
Hi David,
Many thanks for responding to my posting & yes I should of explained with more clarity in respect of my failure. This will be my first program written in "C" I usually write small batch programs in XP and/or sometimes in Win9x. I have found that CMD (although) is very good sometimes I could do with some assistance programs to ease XP's CMD. So I am trying to write small helper programs in "C" to facilitate this, just some background info which may or may not be relevant.
I have been to an online site which compiles my code as a check & a series of errors are reported which lead me to believe my code has errors & is not right I will display the output below from "https://www.onlinegdb.com/online_c_compiler"
The Compilation failed due to following error(s).
main.c:7:1: error: expected identifier or ‘(’ before ‘for’
for (i = 1; i < argc; i++) {
^~~
main.c:7:15: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘<’ token
for (i = 1; i < argc; i++) {
^
main.c:7:24: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘++’ token
for (i = 1; i < argc; i++) {
^~
main.c: In function ‘echo’:
main.c:29:28: error: ‘STDIN’ undeclared (first use in this function)
while(fgets(input, 80, STDIN)){
^~~~~
main.c:29:28: note: each undeclared identifier is reported only once for each function it appears in
main.c: At top level:
main.c:38:7: error: expected identifier or ‘(’ before ‘if’
if (*char == -x) {
^~
main.c:42:7: error: expected identifier or ‘(’ before ‘else’
else
^~~~
main.c:47:14: error: unterminated comment
I am unclear as to what these errors messages mean really. Hope this gives you a rough idea as to where my failure is. I am concerned also about the structure of my potential program as I am not sure if it is right? any guidance would be appreciated? Also just as a tag-on due to the fact I am writing very small programs could you advise as to a small .com .EXE builder that I could use Please?
Best Regards
modified 12-Jan-21 4:38am.
|
|
|
|
|
You cannot have lines of code outside of functions in that way. Line 7 is a for statement but it cannot exist stand-alone like that, it needs to be part of some function. If you look below at function main, you can see the correct structure. I suggest you get hold of a copy of The C Programming Language - Wikipedia[^] and learn from the beginning.
|
|
|
|
|
Hi Richard,
Reading between the lines I think you are saying my code is way off base & is fundamentally wrong. would the following correct the For section like so I have removed the int main() as I am assuming only one int main() is required. your advice is duly noted in respect of ground up code writing many thanks?
int main()
{
for (i = 1; i < argc; i++) {
if (argv[i][0] == '-') {
switch (argv[i][1]) {
case 'x':
printf("flag a was called\n");
break;
}
}
}
|
|
|
|
|
Yes, all code must be contained in a function. you can put it all in main for a simple program, but for more complex problems you should create other functions that can be called with different parameter values. The documentation explains it clearly.
|
|
|
|
|
Thanks Richard,
I have edited/amended my first post to reflect what you have said. Yes small programs are a good place to start
many thanks!
|
|
|
|
|
You have another function inside main, which is also wrong:
int echo(){
char input[80];
Each function must stand alone in the main part of the source file:
int echo()
{
}
int main()
{
}
And get rid of those goto statements, that is really bad practice in modern programming. As I suggested above, get a copy of K & R and spend time learning the language properly. Trying to learn by questions here will take ten times as long, and not be comprehensive.
|
|
|
|
|
Hi Richard,
Sorry for not being attentive but I have been trying to find the book that you referred to in respect of "C" programming & I have finally sourced a copy albeit in PDF format but I have none-the-less found it, so I've got it now. Also I have been viewing a u-tube video which I have downloaded from here:
https://www.youtube.com/watch?v=KJgsSFOSQv0[^]
Only because I am the type of person if I can see it visually I tend to retain the info a bit better as I am not the sharpest tool in the toolbox if you know what I mean.
The narrator in the video mentions code::blocks which comes with IDE text editor & compiler to run the programs I selected the portable version with mingw to get started I will install tommorrow & give test run I have also been listening to some of the examples on the utube video. I may be able to break my code sample down into say 3 stages and run the code in Code::Blocks to check if the code is somewhere near possibly (Test-running)?
When you refer to the goto statements as being very bad practice in modern programming the only reason I opted to use these was because batch scripting is familair ground to me & Batch uses goto :labels therein quite a lot. Also one of the web-sites stated that goto statements are bad because of the dangers of spaghetti code, however they went onto say that if used sparingly & in the case of flag usage e.g. & only confined to purely isolated cases (like flags -X) they were, (although frowned upon) were permissable.
If I could use them until I acquire the necessary alternative skillset would it be okay for now given my obvious limitations. I could then interchange the new code with the goto code at a later date or is there another reason which I am missing here that I should not be using them, like they will not compile etc?
I will also attempt to amend the 1st post code with amended curly brackets.
Best Regards
modified 12-Jan-21 16:11pm.
|
|
|
|
|
jackngill wrote: I have been trying to find the book Amazon has it The C Programming Language (2nd Edition): Amazon.co.uk: Kernighan, Brian, Ritchie, Dennis: 8601410794231: Books[^].
jackngill wrote: The narrator in the video mentions code::blocks I would recommend Visual Studio 2019 from Microsoft. It's free and runs natively, so does not require mingw.
jackngill wrote: If I could use them (goto) until I acquire the necessary alternative skillset If you do it properly in the first place you will find there is no need for them. Whilst they will always compile they really are best avoided, especially as a new boy.
|
|
|
|
|
Hi Richard
Thanks for sharing your experience & advice it has ironed out quite a few wrinkles- I will Kinda work last to the first of your quotes or in reverse order.
Quote: If you do it properly in the first place you will find there is no need for them. Whilst they will always compile they really are best avoided, especially as a new boy.
I see, what about if I used a "if" "else" statement like e.g. if the user types or stipulates the "-x" flag with "ECO" then "ECO" removes the CRLF/EOL, "else" the user fails to input "-x" flag then "ECO" just echo's one line of text to the screen in the same fashion the normal echo statement does? If this is a suitable alternative I will work on amending the code?
Quote: I would recommend Visual Studio 2019 from Microsoft. It's free and runs natively, so does not require mingw.
I have downloaded the community edition of Visual Studio 2019 it seems to be the free version, will I need additional software to convert code (ECO.h) to EXE/COM once I have corrected all my errors? and last but not least... (Edit) Oop's It does not seem I will be able to use the 2019 version as it is asking for Dot net vers 4.6 which is a bridge too far for winXPSP3 I think Vers 4.0 was the last for XP I will look for earlier vers compatable with XP.
Quote: Amazon has it The C Programming Language (2nd Edition): Amazon.co.uk: Kernighan, Brian, Ritchie, Dennis: 8601410794231: Books[^].
It's okay I have managed to get hold of a copy "The C Programming Language" & will inwardly digest & will be good for referencing study.
Best Regards
David
|
|
|
|
|
jackngill wrote: I see, what about if I used a "if" "else" statement Exactly right, and you can eliminate any requirement for goto by correct use of if/else , while , switch , etc. My point was (sort of) do it the right way now, and life becomes much easier. Writing code that you know is poor or less efficient with a mental note to fix it in the future is usually a path to problems in the future.
jackngill wrote: will I need additional software No, Visual Studio includes all the components necessary to build source code into executables. BTW .COM files were abandoned years ago. Just make sure you include the right components (Visual C++ package) for building C/C++ programs. The same integrated compiler will build code written in either language.
|
|
|
|
|
It seems that one of my previous replies/posts is under review for possible spam or at least at my end it is showing so. I do not understand why this is I have been reflecting over the content trying to think what may have triggered this, I'm not sure what would cause this reaction. Perhaps I need to contact a mod for clarification.
I think, I will need to check at further length Visual Studio 2017 works with XP but it depends on what vers of Dotnet is required I think Dot net framework Vers 4.0 was the last for XP
modified 13-Jan-21 11:43am.
|
|
|
|
|
Nothing showing here. When and if it does happen, just be patient. The automatic spam checker holds "suspect" messages in a queue. They are then reviewed by one of the many moderators here, and accepted or rejected as appropriate. Your messages may get picked up for spurious reasons, but it is a fairly intelligent system and will improve once it recognises you.
|
|
|
|