|
Why can't you just use Split?
It's difficult to know why it's not working unless we can see which values work and which don't.
|
|
|
|
|
sudhir behera wrote: string s = rows[6].ToString();//DOB LIKE 15/JULY/1988
Assuming the contents of rows[6] is a DateTime structure then you can start with that value and extract the day, month and year strings directly by its methods. Take a look at the MSDN documentation here[^] for all the options.
|
|
|
|
|
Use Split to split the date by /,- or whichever seperator u use.
Then asign the values of each item in array to ur combobox.
simplest way and have always worked for me.
|
|
|
|
|
FEMDEV wrote: simplest way
Maybe not the simplest though.
FEMDEV wrote: always worked for me
Sure, it works, but there is very likely a better way.
|
|
|
|
|
I wrote a code that is using BackgroundWorker and updating ProgressBar on ProgressChanged. But when I ran it the ProgressBar shown some progress then app got hang for long time. So I thought to check the error and finally reached on a most annoying freaky error. That is the calculation is wrong. And after all I wrote a line for debugging
System.Diagnostics.Debug.WriteLine(bytesReaded + " * 100 / " + totalBytesToRead + " = " + ((bytesReaded * 100) / totalBytesToRead));
and the output will blow the mind of
a snippet
36257792 * 100 / 54444964 = -12
36274176 * 100 / 54444964 = -12
36290560 * 100 / 54444964 = -12
36306944 * 100 / 54444964 = -12
36323328 * 100 / 54444964 = -12
36339712 * 100 / 54444964 = -12
36356096 * 100 / 54444964 = -12
36372480 * 100 / 54444964 = -12
36388864 * 100 / 54444964 = -12
36405248 * 100 / 54444964 = -12
36421632 * 100 / 54444964 = -11
36438016 * 100 / 54444964 = -11
36454400 * 100 / 54444964 = -11
36470784 * 100 / 54444964 = -11
36487168 * 100 / 54444964 = -11
I have exactly same code line with ListView and it works good. But this one aint...any idea ?
TVMU^P[[IGIOQHG^JSH`A#@`RFJ\c^JPL>;"[,*/|+&WLEZGc`AFXc!L
%^]*IRXD#@GKCQ`R\^SF_WcHbORY87֦ʻ6ϣN8ȤBcRAV\Z^&SU~%CSWQ@#2
W_AD`EPABIKRDFVS)EVLQK)JKQUFK[M`UKs*$GwU#QDXBER@CBN%
R0~53%eYrd8mt^7Z6]iTF+(EWfJ9zaK-iTV.C\y<pjxsg-b$f4ia>
-----------------------------------------------
128 bit encrypted signature, crack if you can
|
|
|
|
|
What is the datatype of the variables used? Try using a double, this may solve your problem...
|
|
|
|
|
both are type of int .
TVMU^P[[IGIOQHG^JSH`A#@`RFJ\c^JPL>;"[,*/|+&WLEZGc`AFXc!L
%^]*IRXD#@GKCQ`R\^SF_WcHbORY87֦ʻ6ϣN8ȤBcRAV\Z^&SU~%CSWQ@#2
W_AD`EPABIKRDFVS)EVLQK)JKQUFK[M`UKs*$GwU#QDXBER@CBN%
R0~53%eYrd8mt^7Z6]iTF+(EWfJ9zaK-iTV.C\y<pjxsg-b$f4ia>
-----------------------------------------------
128 bit encrypted signature, crack if you can
|
|
|
|
|
Ah, you see.. int cannot contain decimals... all the devisions result (rounded) in -12.. If you change the data types to double (or decimal if you like) the problem should be solved...
|
|
|
|
|
okay, I compared the other code with this one and found I was using long in there and I changed this to long as well and it working nice
System.Diagnostics.Debug.WriteLine(bytesReaded + " * 100 / " + totalBytesToRead + " = " + (((long)bytesReaded * 100) / (long)totalBytesToRead));
but why ?? whats wrong with int
TVMU^P[[IGIOQHG^JSH`A#@`RFJ\c^JPL>;"[,*/|+&WLEZGc`AFXc!L
%^]*IRXD#@GKCQ`R\^SF_WcHbORY87֦ʻ6ϣN8ȤBcRAV\Z^&SU~%CSWQ@#2
W_AD`EPABIKRDFVS)EVLQK)JKQUFK[M`UKs*$GwU#QDXBER@CBN%
R0~53%eYrd8mt^7Z6]iTF+(EWfJ9zaK-iTV.C\y<pjxsg-b$f4ia>
-----------------------------------------------
128 bit encrypted signature, crack if you can
|
|
|
|
|
You could still overflow the longs someday.
|
|
|
|
|
Probably better to do the division and then the multiplication.
Edit: Yeah, that won't work with ints.
modified on Thursday, November 12, 2009 11:34 PM
|
|
|
|
|
you mean
(bytesReaded / totalBytesToRead) * 100
??
well, I'm not sure it will work a bit accurate...
>> (50 / 100) * 100
>> 0 * 100
>> 0
or
>> (50 * 100) / 100
>> 5000 / 100
>> 50
TVMU^P[[IGIOQHG^JSH`A#@`RFJ\c^JPL>;"[,*/|+&WLEZGc`AFXc!L
%^]*IRXD#@GKCQ`R\^SF_WcHbORY87֦ʻ6ϣN8ȤBcRAV\Z^&SU~%CSWQ@#2
W_AD`EPABIKRDFVS)EVLQK)JKQUFK[M`UKs*$GwU#QDXBER@CBN%
R0~53%eYrd8mt^7Z6]iTF+(EWfJ9zaK-iTV.C\y<pjxsg-b$f4ia>
-----------------------------------------------
128 bit encrypted signature, crack if you can
|
|
|
|
|
Just try it.
modified on Thursday, November 12, 2009 12:30 PM
|
|
|
|
|
you're a binary kind of guy then:
progress = "not done at all"
progress = "not done at all"
progress = "not done at all"
...
progress = "not done at all"
progress = "done"
In VB the intermediate quotient would be a real number; other languages would stay with integers, hence the quotient is either 0 or 1.
Luc Pattyn
I only read code that is properly indented, and rendered in a non-proportional font; hint: use PRE tags in forum messages
|
|
|
|
|
Oh, right...
So use floats, but I still stand behind doing the division first to avoid overflow errors.
|
|
|
|
|
PIEBALDconsult wrote: doing the division first to avoid overflow errors
overflow is very unlikely when using real numbers (most certainly when the result is to be a progress percentage).
my approach is to divide both numerator and denominator by some number; the obvious choice here is by 100.
try it!
Luc Pattyn
I only read code that is properly indented, and rendered in a non-proportional font; hint: use PRE tags in forum messages
|
|
|
|
|
Real numbers stored in what datatype?
Why not divide just the denominator by 100? (Unless you have a very small denominator.)
Or, find the Greatest Common Factor and reduce!
|
|
|
|
|
PIEBALDconsult wrote: Why not divide just the denominator by 100?
that's what I recommended.
PIEBALDconsult wrote: reduce!
That is costly and may not help at all, as you well know.
Next you're gonna calculate prime numbers first...
Luc Pattyn
I only read code that is properly indented, and rendered in a non-proportional font; hint: use PRE tags in forum messages
|
|
|
|
|
Luc Pattyn wrote: that's what I recommended
You said divide both.
Luc Pattyn wrote: calculate prime numbers
Oh, yeah, I meant to include that: first determine that neither is a prime, then determine the GCF...
|
|
|
|
|
when what you need is the value of N/D where N and/or D is a product, it helps to divide both N and D by some rather small value X.
in the current situation N is a product of a variable and a constant (N = bytesRead * 100), hence that constant 100 is the first candidate for X.
Luc Pattyn
I only read code that is properly indented, and rendered in a non-proportional font; hint: use PRE tags in forum messages
|
|
|
|
|
Hmmm... so (N/100)*100/(D/100) or (N/100)/(D/100)/100 ?
Maybe the OP should look into a checked scope...
|
|
|
|
|
"divide both N and D by some rather small value X" is the math recipe.
Always think in the problem domain, then come up with the matching codes.
Applied on bytesReaded*100 with X=100 it means you don't need the multiplication in the numerator, as again you well know.
Luc Pattyn
I only read code that is properly indented, and rendered in a non-proportional font; hint: use PRE tags in forum messages
|
|
|
|
|
As the poster before said use an other type or do the div before the mul, because your program calculates right.
36257792 * 100 = 3.625.779.200 (int can only hold 2.1 billion!)
-> 3.625.779.200 -> cast to int =~ -669188096
-669188096 / 54444964 = -12,29109263...
cast to int = -12
so your program is totally right!
Greetings
Covean
|
|
|
|
|
Yes I think I should use double, because if I div before mul then it may not show any progress at all if file size is small like 100 bytes. Anyway thanks for that info...
thanks others too, Eduard Keilholz and PIEBALDconsult
TVMU^P[[IGIOQHG^JSH`A#@`RFJ\c^JPL>;"[,*/|+&WLEZGc`AFXc!L
%^]*IRXD#@GKCQ`R\^SF_WcHbORY87֦ʻ6ϣN8ȤBcRAV\Z^&SU~%CSWQ@#2
W_AD`EPABIKRDFVS)EVLQK)JKQUFK[M`UKs*$GwU#QDXBER@CBN%
R0~53%eYrd8mt^7Z6]iTF+(EWfJ9zaK-iTV.C\y<pjxsg-b$f4ia>
-----------------------------------------------
128 bit encrypted signature, crack if you can
|
|
|
|
|
Xmen W.K. wrote: (bytesReaded * 100) / totalBytesToRead
when bytesReaded is of type int or less, the expression bytesReaded * 100 will be evaluated as int, which means the largest value it can have is Int32.MaxValue = some 2 billion. So for whenever bytesReaded exceeds some 20 million, the multiplication will overflow, resulting in a wrong value with a 50% probability of being negative.
Since you only want to know a percentage, the easiest solution is to use bytesReaded / (totalBytesToRead/100) , however this expression will throw whenever totalBytesToRead<100;
a very good approximation would be bytesReaded / (1+totalBytesToRead/100)
Keep in mind my approximations may never reach 100 as the division will round down.
Luc Pattyn
I only read code that is properly indented, and rendered in a non-proportional font; hint: use PRE tags in forum messages
modified on Thursday, November 12, 2009 11:07 AM
|
|
|
|