|
Mike Nordell wrote:
if this works I wrote it, if not I don't know who wrote it
I'm a big Paul DeLascia fan myself
Christian
The tragedy of cyberspace - that so much can travel so far, and yet mean so little.
"I'm somewhat suspicious of STL though. My (test,experimental) program worked first time. Whats that all about??!?!
- Jon Hulatt, 22/3/2002
|
|
|
|
|
Hi.
Class CProgressCtrl is functionally simple and easy to understand. Nonetheless, I do have one question. How do you calculate the time duration from the start of a job (0% progression) to the completion (100% progression).
For example, let say we have a program that converts all letters in a text file into uppercase.
Original text file:
a
b
c
Output text file:
A
B
C
How do you implement a progression bar such that it displays the completetion animation accurately? I know the example above takes less than a second, but lets just imagine that it takes 10 *or* more.
Thanks,
Kuphryn
|
|
|
|
|
You'd need to get the length of the file and divide it by 100.
It's often difficult to get an exact idea of how long something will take, and often it seems to use more milestones than individual steps. i.e. I can break down my task into 7 sub tasks, I don't know how long most of those will take, so I step the progress counter 7 times instead.
Christian
The tragedy of cyberspace - that so much can travel so far, and yet mean so little.
"I'm somewhat suspicious of STL though. My (test,experimental) program worked first time. Whats that all about??!?!
- Jon Hulatt, 22/3/2002
|
|
|
|
|
Thanks.
To my understanding, there no accurate way to handle the process completion percentage. We can approximate. Approximating is good enough for some programs.
Kuphryn
|
|
|
|
|
In one of my apps, I have a repetative task that takes a certain amount of time. I need a progress on the individual task and an overall task. What I do is estimate how long the single task will take and actually measure the time it took. That way I update the estimate for the next run and I get a very accurate estimate of the total time.
As your using an example of a file, in a loop you can get the current file pointer, devide it by the length of the file and * 100 to get a current %age position (this sets the progress control). If you also took the system time at the start of the process, you can work out how long it took to get to the current %age and extrapolate to 100%. You can then subtract the elapsed time to get an estimate of time remaining.
Roger Allen
Sonork 100.10016
yet to be identified being from the planet Paltinmoriumbanfrettybooter
|
|
|
|
|
Nice!
Measuring the time someting takes to complete a cycle can be difficult if the job is fast.
Consider Microsoft's defragmentor. I do not think the programmers use the timer measure. Sometimes the progress bar jumps 20% or more.
Kuphryn
|
|
|
|
|
See this article.
/ravi
"There is always one more bug..."
http://www.ravib.com
ravib@ravib.com
|
|
|
|
|
Hi,
I'm having trouble linking a program. I've installed the latest SDK so I don't think thats the problem. The error I get is
error LNK2001: unresolved external symbol _NetServerEnum@33
I've included lm.h so I don't see what the problem could be.
Thanks for you help
Al
|
|
|
|
|
Are you linking with with netapi32.lib ?
/ravi
"There is always one more bug..."
http://www.ravib.com
ravib@ravib.com
|
|
|
|
|
Hi
I would like to change my freeware-software (MFC) to shareware.
Is there any class/tool I can use to let a customer easy register a trial-version after approx. 15 days? How do I generate keys from an E-mail-address?
Thanks
Ola Carlsson
|
|
|
|
|
Ola wrote:
Is there any class/tool I can use to let a customer easy register a trial-version after approx. 15 days?
They do exist, but it's pretty easy to write your own. The way I did it once was to write the day the user had started using my app and the current date in the registry. The current date was used to see if the user had rolled their clock backwards ( by more than one hour, to account for possible daylight savings).
Then I rewrote the same info into a file called msxmtd.dll, or something similarlly official sounding, and put it in windows/system. Then if the user found my registry entries and hacked them, their trial was officially over.
Ola wrote:
How do I generate keys from an E-mail-address?
All sorts of encryption methods exist. Do a google search and I'm sure you'll find tons. Hint - every char has a numeric value.
Christian
The tragedy of cyberspace - that so much can travel so far, and yet mean so little.
"I'm somewhat suspicious of STL though. My (test,experimental) program worked first time. Whats that all about??!?!
- Jon Hulatt, 22/3/2002
|
|
|
|
|
Hi,
Does anyone now a function/class to check if an e-mail address is valid?
/Ola Carlsson
|
|
|
|
|
Apart from parsing it for form, I don't think that is remotely possible. If I give you cgraus@mydomain.com, how can you tell that mydomain.com knows what to do with this address, except by sending an email to it and seeing if it bounces back ?
Christian
The tragedy of cyberspace - that so much can travel so far, and yet mean so little.
"I'm somewhat suspicious of STL though. My (test,experimental) program worked first time. Whats that all about??!?!
- Jon Hulatt, 22/3/2002
|
|
|
|
|
Christian Graus wrote:
except by sending an email to it and seeing if it bounces back ?
My domain has a catch all, so nothing bounces back, just forwards valid stuff and deletes junk after a while.
Regardz
Colin J Davies
Sonork ID 100.9197:Colin
I think it's interesting that we often qu-ote each other in our sigs and attribute the qu-otes to "The Lounge". --- Daniel Fergusson, "The Lounge"
|
|
|
|
|
Check the return status from the POP3 protocol's USER command. A "+OK" should be returned for valid usernames. This should work even for forwarding POP mailboxes.
/ravi
"There is always one more bug..."
http://www.ravib.com
ravib@ravib.com
|
|
|
|
|
Does this mean it would be trivial to write a spam filter, simply by checking all incoming mail for a valid return address ?
Christian
The tragedy of cyberspace - that so much can travel so far, and yet mean so little.
"I'm somewhat suspicious of STL though. My (test,experimental) program worked first time. Whats that all about??!?!
- Jon Hulatt, 22/3/2002
|
|
|
|
|
It's pretty easy to write, but I doubt it would be efficient, since you'd have to try to establish a connection to the POP server for each unique domain.
Also, it could easily give you bogus results - for example if you received mail from a valid address user@attbi.com , the checker would return "false" since you won't be able to connect to attbi.com 's POP server from outside their domain.
Further, if your domain's POP server had a catch-all account, any username at that domain could be flagged as being valid.
Imho, there's no foolproof way to verify the validity of an email address.
/ravi
"There is always one more bug..."
http://www.ravib.com
ravib@ravib.com
|
|
|
|
|
It's actually totally unworkable. You have no way of knowing what a remote domains POP server is. MX records only point to SMTP mail exchangers, and often these have nothing to do with pop.
Also, very often POP servers are behind firewalls.
Sorry to dissapoint you all with my lack of a witty or poignant signature.
|
|
|
|
|
Not all POP servers will let you connect from outside their domain!
In the US, ATTBI (previously MediaOne) is notorious for no longer allowing you to check your mail remotely thru a POP email client, unless you're logged into ATTBI. However, they do offer a crappy web interface into their email system, so you can get/send email from any browser.
/ravi
"There is always one more bug..."
http://www.ravib.com
ravib@ravib.com
|
|
|
|
|
Neither will Yahoo! starting with the 24th this month
Best regards,
Alexandru Savescu
|
|
|
|
|
Hello everyone,
I have a STL containers of pointers to objects, something like:
vector <cmyobject*> MyVector;
Suppose I want to erase an element at a specified iterator and I am not sure wheter I have to delete my object first like
delete *it;
MyVector.erase (it);
or just
MyVector.erase (it);
I suppose the first version is correct, but what confuses me is what the documentation says that erase(it) will call a destructor call.
Is this true with pointers to object as well?
Thank you very much!
Best regards,
Alexandru Savescu
|
|
|
|
|
Because it is a vector, calling erase is very expensive. If you're going to do this to a number of elements, use remove to partition them first, and if you do it a lot, consider std::list, or if you need faster lookup than std::list provides, try set.
If you have a container of pointers, then you need to delete the iterators contents first, otherwise the pointer will be deleted and not it's contents. If you have a container of objects, then the destructor is called, but calling a pointers destructor is not the same as calling the destructor of the object being pointed to. If it was, memory leaks would not be possible.
Christian
The tragedy of cyberspace - that so much can travel so far, and yet mean so little.
"I'm somewhat suspicious of STL though. My (test,experimental) program worked first time. Whats that all about??!?!
- Jon Hulatt, 22/3/2002
|
|
|
|
|
Thanks Chris for your quick answer. Now everything clear.
Actually I am not using a vector, I am using a multimap My question was about deleting the pointer so the vector was the first container that came to my mind.
Best regards,
Alexandru Savescu
|
|
|
|
|
Alexandru Savescu wrote:
Thanks Chris for your quick answer. Now everything clear.
No worries. It seemed to me at first that a vector should clean up after pointers, but on reflection it's obviously not the case. I usually write a function object and use for_each to clean up my containers of pointers, so that I don't get memory leaks on shutdown, etc.
Christian
The tragedy of cyberspace - that so much can travel so far, and yet mean so little.
"I'm somewhat suspicious of STL though. My (test,experimental) program worked first time. Whats that all about??!?!
- Jon Hulatt, 22/3/2002
|
|
|
|
|
My modeless dialog (the same one I was having trouble with before ) is created in it's parent (COleControl-derived) OnCreate handler:
m_msgDlg.Create(IDD_DIALOG_MSG, NULL);
When it is shown it is shown as follows:
m_msgDlg.SetWindowPos(&wndTop, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW);
This appears at first to have the desired effect, because I now have a modeless dialog with it's own task on the taskbar.
Unfortunately, as always seems to be the way, all is not as it seems. If I left-click on it's task on the taskbar, which should minimise it, nothing happens
The dialog (which is completely custom drawn as a skinned dialog using BitBlt) handles minimising from a button click using the following code:
void CMsgDialog::OnButtonMinimise()
{
WINDOWPLACEMENT wndpl;
GetWindowPlacement(&wndpl);
wndpl.showCmd = SW_MINIMIZE;
SetWindowPlacement(&wndpl);
}
This does correctly minimise the dialog and clicking on it's minimised task in the taskbar does restore it.
Any ideas why this "standard" behaviour isn't working properly?
Derek Lakin.
I wish I was what I thought I was when I wished I was what I am.
Salamander Software Ltd.
|
|
|
|