|
You have the code so look at what messages a CDialog sends and posts in response to it's WM_CLOSE and WM_DESTROY.
In vino veritas
|
|
|
|
|
I am trying to get the file size, with code:
::FindFirstFile((LPCTSTR)strFileSpec, &fd);
LARGE_INTEGER size;
size.HighPart = fd.nFileSizeHigh;
size.LowPart = fd.nFileSizeLow;
DWORD dwsize = (DWORD)size.QuadPart;
but is not right when the size of the file is huge, because at a file with 7.8 GB in windows explorer, my code says that has 3.03 GB ...
I have tried with this code too:
CFileStatus status;
CFile::GetStatus(strFileName, status);
DWORD dwsize = (DWORD)status.m_size);
the same result ... what I am doing wrong ?
My OS is Win10 64 bit.
modified 14-Mar-19 6:39am.
|
|
|
|
|
|
Yes, that was the problem. Thank you.
|
|
|
|
|
|
I am trying to get an image list handle from system icons, like that:
return (HIMAGELIST)SHGetFileInfo(_T("c:\\"), 0, &sfi, sizeof(SHFILEINFO), SHGFI_SYSICONINDEX | SHGFI_SMALLICON);
and is working good, except on some PCs, where there is some icons without any icon. I am using this handle to a CListCtrl:
Where icon has found: Capture — Postimage.org[^]
Where icon hasn't: Capture2 — Postimage.org[^]
Of course that OS has the icon and program for every type of files, including case where my code dont't work ...
Last edit: Here is what is looking the list control with this state of icons: Capture — Postimage.org[^]
So one of files has icons, one hasn't ... and I am not figure out why ...
modified 14-Mar-19 3:54am.
|
|
|
|
|
Try adding some debug code to see exactly what is being returned on your call to SHGetFileInfo .
|
|
|
|
|
I have solved, I have used the same image list handle for two controls, CTreeCtrl and CListCtrl ... and I haven't share this image list correctly ... now everything is alright.
|
|
|
|
|
Is there possible to write a registry key inside HKEY_LOCAL_MACHINE whith an app which is not running as admin ? I have tried that, I cannot write to HKEY_LOCAL_MACHINE with a MFC app where is run without administrator rights ...
modified 13-Mar-19 9:17am.
|
|
|
|
|
No - not unless an administrator has previously changed the permissions on the key in question to grant the non-admin user permission to write to it.
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
|
In a template does inline hold the same meaning as when it's used in a class?
I.e. the way I understood it in a class it "requests" the compiler to put it inline but the compiler was not required to do so and it was up to the compiler to decide.
template <typename T>
inline T const& MyTemplateFunc (T const& a, T const& b)
{ return a < b ? b:a;
}
|
|
|
|
|
Quote: it "requests" the compiler to put it inline but the compiler was not required to do so and it was up to the compiler to decide. That and more than that. See the documentation (inline specifier - cppreference.com[^]) for the gory details.
|
|
|
|
|
Hello,
I wanted to find the roots for 4th degree polynomials(aX^4 + bX^3 + cX^2 + dX + e = 0). Can anyone please help me, How to write C code or formula for this?
Thanks in advance,
Regards,
Harsha
|
|
|
|
|
|
|
Could somebody please explain to me why I do not see the "perror" in expected code sequence?
Thanks
int main() {
cout << "Basic bluetooth app BLUEZ_LINUX " << endl; inquiry_info *ii = NULL;
int max_rsp, num_rsp;
int dev_id, sock, len, flags;
int i;
char addr[19] = { 0 };
char name[248] = { 0 };
dev_id = hci_get_route(NULL);
SHOULD PRINT PERROR HERE ??
if (dev_id < 0) {
perror("Error: Bluetooth device not found"); }
#ifdef DEBUG
cout << " dev_id = hci_get_route(NULL) " << endl; cout << " dev_id " << hex << +dev_id << endl; #endif
#ifdef BYPASS // replaced with abpve perror
dev_id = hci_get_route(NULL);
#endif
sock = hci_open_dev(dev_id);
#ifdef DEBUG
cout << " sock = hci_open_dev( dev_id ) " << endl; cout << " sock " << hex << +sock << endl; #endif
if (dev_id < 0 || sock < 0) {
perror("Error: Opening socket");
}
#ifdef DEBUG
cout << " HERE @line " << dec << __LINE__ << endl; cout << " TRACE file " << __FILE__ << endl;
cout << " function " << __FUNCTION__ << endl;
#endif
len = 8;
max_rsp = 255;
flags = IREQ_CACHE_FLUSH;
#ifdef DEBUG
cout << " HERE @line " << dec << __LINE__ << endl; cout << " TRACE file " << __FILE__ << endl;
cout << " function " << __FUNCTION__ << endl;
#endif
ii = (inquiry_info*) malloc(max_rsp * sizeof(inquiry_info));
#ifdef BYPASS
if (ii)
perror("Error: inquiry_info*");
if (ii)
perror("Error: inquiry_info*");
#endif
#ifdef DEBUG
cout << " HERE @line " << dec << __LINE__ << endl;
cout << " TRACE file " << __FILE__ << endl;
cout << " function " << __FUNCTION__ << endl;
#endif
#ifdef DEBUG
cout << " max_rsp " << hex << +max_rsp << endl;
cout << " num_rsp " << hex << +num_rsp << endl;
cout << " len " << hex << +len << endl;
cout << " flags " << hex << +flags << endl;
#endif
num_rsp = hci_inquiry(dev_id, len, max_rsp, NULL, &ii, flags);
if (num_rsp < 0)
perror("Error: hci_inquiry");
#ifdef BYPASS
if (num_rsp < 0)
perror(NULL);
#endif
#ifdef DEBUG
cout << " num_rsp = hci_inquiry(dev_id, len, max_rsp, NULL, &ii, flags); "
<< endl; cout << " num_rsp " << hex << +num_rsp << endl; #endif
if (num_rsp < 0)
perror("Error: hci_inquiry");
#ifdef DEBUG
cout << " HERE @line " << dec << __LINE__ << endl; cout << " TRACE file " << __FILE__ << endl;
cout << " function " << __FUNCTION__ << endl;
#endif
for (i = 0; i < num_rsp; i++) {
ba2str(&(ii + i)->bdaddr, addr);
memset(name, 0, sizeof(name));
if (hci_read_remote_name(sock, &(ii + i)->bdaddr, sizeof(name), name, 0)
< 0)
strcpy(name, "[unknown]");
printf("%s %s\n", addr, name);
}
#ifdef BYPASS
free( ii );
close( sock );
#endif
return 0;
}
Basic bluetooth app BLUEZ_LINUX
dev_id = hci_get_route(NULL)
dev_id ffffffff
sock = hci_open_dev( dev_id )
sock ffffffff
HERE @line 84
TRACE file ../src/BLUE.cpp
function main
HERE @line 94
TRACE file ../src/BLUE.cpp
function main
HERE @line 109
TRACE file ../src/BLUE.cpp
function main
max_rsp ff
num_rsp 0
len 8
flags 1
num_rsp = hci_inquiry(dev_id, len, max_rsp, NULL, &ii, flags);
num_rsp ffffffff
HERE @line 154
TRACE file ../src/BLUE.cpp
function main
Error: Bluetooth device not found: No such device
Error: Opening socket: No such device
Error: hci_inquiry: No such device
Error: hci_inquiry: No such device
|
|
|
|
|
It does print the message at the bottom as you can see in the above output. Most likely because the stderr stream is not displayed until the application terminates
|
|
|
|
|
Richard MacCutchan wrote: Most likely because the stderr stream is not displayed until the application terminates
I think that's because C++ IO streams and C stdio streams are no synchronized. Try using stdi::ios_base::sync_with_sdio . std::ios_base::sync_with_stdio - cppreference.com
|
|
|
|
|
Not according to my tests, and ultimately cout (under the covers) will be printing to stdio/stderr in normal fashion.
|
|
|
|
|
Hmm.. I've compiled the OP's code and my own test code (below) and both times I get perror() and cout code interleaved. Not sure what I might be doing differently than the you guys. I've tried on both Fedora 29 (g++ v 8.3.1) and rpi (g++ v 6.3.0). Now I'm confused ...
$ cat errtest.cpp
#include <iostream>
#include <cerrno>
using namespace std;
int main()
{
for(errno= 0; errno < 4; ++errno) {
cout << "errno = " << errno << endl;
perror("Error");
}
}
$ make errtest
g++ -Wall -Wextra -std=c++17 -O2 errtest.cpp -o errtest
$ ./errtest
errno = 0
Error: Success
errno = 1
Error: Operation not permitted
errno = 2
Error: No such file or directory
errno = 3
Error: No such process
|
|
|
|
|
Sorry, my previous comment was unclear (or incorrect). I do get stdout and stderr correctly interleaved. I have a feeling that OP is using some weird stuff (cf Bluez questions).
Interesting how your sample code matches mine quite closely.
|
|
|
|
|
Only thing I can think of ATM is that the OP is running the code inside whatever terminal his IDE provides, and that's doing something odd with termio settings. I've tried messing with setvbuf() and various stty options, but always get interleaved output.
That being said, it should be pointed out to the OP that stdout (cout) and stderr (cerr), are different output streams. If you take my code and remove the << endl from line 9, then the output is quite different!
|
|
|
|
|
Really for the OP but I will put here to follow the discussion
Someone is on a multicore processor and the streams which are buffering are on different cores with resource locks
This is generally not guaranteed to give the expected order
printf("Expect 1\n");
perror("Expect 2\n");
printf("Expect 3\n");
Simply put two independent streams are not guaranteed to synchronize without you forcing the issue.
In the above Expect1 will always be before Expect3 but Expect2 can be before, in the middle or after those two lines.
sync_with_stdio() if implemented will work but it implies a heavy overhead on a many multicore situation which is why it might be off. I think it is supposed to default on with some c++ versions (but on multicore it is often violated because it is horrific) you would need to check with your compiler.
The simple answer is stop using perror and simply just use one stream aka printf/cout, flush after each print or put lock primitives in the order to guarantee the order.
It is easily avoidable ... so avoid it
In vino veritas
modified 12-Mar-19 1:36am.
|
|
|
|
|
#include <stdio.h>
#include<conio.h>
#include<string.h>
struct students {
char name[20];
int age;
};
void main(){
struct students firstyear_bex[5];
for(int i=0;i<5;i++){
puts("Enter your name:");
gets(firstyear_bex[i].name);
puts("\n");
puts("Enter your age:");
scanf("%d",&firstyear_bex[i].age);
}
puts("\n");
for(int i=0;i<5;i++){
puts(firstyear_bex[i].name);
puts("\t");
printf("%d",firstyear_bex[i].age);
puts("\n");
}
}
i am a real begineer and i wanted to ask for the name and the details and display it like it is. but when i run it, the outputs are a bit funny, i dont get the proper order of printouts and when i enter something more it does nothing, but if i keep on entering it will take it but show all of it at the end with not the proper order. please help.
.
i use mingw gcc compiler
modified 10-Mar-19 9:42am.
|
|
|
|