|
Shameel wrote: they like to see 'A' on top of lists and 'a' below that.
Exactly. That's how I want it, and the Ordinal comparer does it, but the InvariantCulture (and en-US) does it the other way.
Edit: Well not exactly, come to think of it, because the Ordinal comparer also say "Z" < "a", which I don't want.
modified on Friday, August 19, 2011 12:15 PM
|
|
|
|
|
PIEBALDconsult wrote: Exactly. That's how I want it, and the Ordinal comparer does it
The Ordinal comparer uses the ASCII order of the characters.
Char Dec Oct Hex | Char Dec Oct Hex | Char Dec Oct Hex | Char Dec Oct Hex
-------------------------------------------------------------------------------------
(nul) 0 0000 0x00 | (sp) 32 0040 0x20 | @ 64 0100 0x40 | ` 96 0140 0x60
(soh) 1 0001 0x01 | ! 33 0041 0x21 | A 65 0101 0x41 | a 97 0141 0x61
(stx) 2 0002 0x02 | " 34 0042 0x22 | B 66 0102 0x42 | b 98 0142 0x62
(etx) 3 0003 0x03 | # 35 0043 0x23 | C 67 0103 0x43 | c 99 0143 0x63
(eot) 4 0004 0x04 | $ 36 0044 0x24 | D 68 0104 0x44 | d 100 0144 0x64
(enq) 5 0005 0x05 | % 37 0045 0x25 | E 69 0105 0x45 | e 101 0145 0x65
(ack) 6 0006 0x06 | & 38 0046 0x26 | F 70 0106 0x46 | f 102 0146 0x66
(bel) 7 0007 0x07 | ' 39 0047 0x27 | G 71 0107 0x47 | g 103 0147 0x67
(bs) 8 0010 0x08 | ( 40 0050 0x28 | H 72 0110 0x48 | h 104 0150 0x68
(ht) 9 0011 0x09 | ) 41 0051 0x29 | I 73 0111 0x49 | i 105 0151 0x69
(nl) 10 0012 0x0a | * 42 0052 0x2a | J 74 0112 0x4a | j 106 0152 0x6a
(vt) 11 0013 0x0b | + 43 0053 0x2b | K 75 0113 0x4b | k 107 0153 0x6b
(np) 12 0014 0x0c | , 44 0054 0x2c | L 76 0114 0x4c | l 108 0154 0x6c
(cr) 13 0015 0x0d | - 45 0055 0x2d | M 77 0115 0x4d | m 109 0155 0x6d
(so) 14 0016 0x0e | . 46 0056 0x2e | N 78 0116 0x4e | n 110 0156 0x6e
(si) 15 0017 0x0f | / 47 0057 0x2f | O 79 0117 0x4f | o 111 0157 0x6f
(dle) 16 0020 0x10 | 0 48 0060 0x30 | P 80 0120 0x50 | p 112 0160 0x70
(dc1) 17 0021 0x11 | 1 49 0061 0x31 | Q 81 0121 0x51 | q 113 0161 0x71
(dc2) 18 0022 0x12 | 2 50 0062 0x32 | R 82 0122 0x52 | r 114 0162 0x72
(dc3) 19 0023 0x13 | 3 51 0063 0x33 | S 83 0123 0x53 | s 115 0163 0x73
(dc4) 20 0024 0x14 | 4 52 0064 0x34 | T 84 0124 0x54 | t 116 0164 0x74
(nak) 21 0025 0x15 | 5 53 0065 0x35 | U 85 0125 0x55 | u 117 0165 0x75
(syn) 22 0026 0x16 | 6 54 0066 0x36 | V 86 0126 0x56 | v 118 0166 0x76
(etb) 23 0027 0x17 | 7 55 0067 0x37 | W 87 0127 0x57 | w 119 0167 0x77
(can) 24 0030 0x18 | 8 56 0070 0x38 | X 88 0130 0x58 | x 120 0170 0x78
(em) 25 0031 0x19 | 9 57 0071 0x39 | Y 89 0131 0x59 | y 121 0171 0x79
(sub) 26 0032 0x1a | : 58 0072 0x3a | Z 90 0132 0x5a | z 122 0172 0x7a
(esc) 27 0033 0x1b | ; 59 0073 0x3b | [ 91 0133 0x5b | { 123 0173 0x7b
(fs) 28 0034 0x1c | < 60 0074 0x3c | \ 92 0134 0x5c | | 124 0174 0x7c
(gs) 29 0035 0x1d | = 61 0075 0x3d | ] 93 0135 0x5d | } 125 0175 0x7d
(rs) 30 0036 0x1e | > 62 0076 0x3e | ^ 94 0136 0x5e | ~ 126 0176 0x7e
(us) 31 0037 0x1f | ? 63 0077 0x3f | _ 95 0137 0x5f | (del) 127 0177 0x7f
As you can see from the table, 'Z' (90) is "less than" 'a' (97).
EDIT: Well, the Ordinal comparer uses Unicode ordering which is the same as ASCII for the first 127 characters.
"Don't confuse experts with facts" - Eric_V
|
|
|
|
|
Yes, I know that, but I don't know who gave you the 1, take a 5 for your efforts.
|
|
|
|
|
PIEBALDconsult wrote: I don't know who gave you the 1
I get downvoted all the time and the people who do it do not have the courage to own up and explain it.
PIEBALDconsult wrote: take a 5 for your efforts
Thanks
"Don't confuse experts with facts" - Eric_V
|
|
|
|
|
What I came up with as a simple interim solution is this:
private sealed class MyComparer : System.Collections.Generic.IComparer<string>
{
public int
Compare
(
string Op0
,
string Op1
)
{
int result = System.StringComparer.InvariantCultureIgnoreCase.Compare ( Op0 , Op1 ) ;
if ( result == 0 )
{
result = System.StringComparer.InvariantCulture.Compare ( Op0 , Op1 ) * -1 ;
}
return ( result ) ;
}
}
|
|
|
|
|
<?xml version="1.0" encoding="utf-8"?>
<LicenceManager xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://visionontech.com/vbp/LicenceConfiguration">
<ApplicationName>ovE1c/0l6IoKP/KF6bpqv22zqoYuT3Wv</ApplicationName>
<LicenseType>7Ax330npgHE=</LicenseType>
<VersionType>bbUl/DISjDzJkqERNmGqY8eWlTKz+Er3qSWdcEGFDUdsWo9DJrviULY/entknwWw2Z67rm0RnqeB3ENiAa1blfEkGPtfeELVxVG44JG4J5w=</VersionType>
<CompanyName>KWZwGJLdl+pI240K/PURWg==</CompanyName>
<SerialNumber>7515b594-6afb-4f0f-bf4c-13351339191c</SerialNumber>
<MachineID>I50NMYu1RZix+7AuMOhIDyhyFkiepjdK1Sy93luDdi4nCxRLW+Yy259FgXAvKvX9</MachineID>
<Signature>9XvKvAXgF952yY+WLRxCn4idDul39yS1KdjpeikFyhyDIhOMuA7+xiZR1uYMN05I</Signature>
<City>Q6H8NNOnO80=</City>
<CreatedBy>TZdhgIlUIBo2BIm8yvL3ww==</CreatedBy>
<LicenseCreationDate>1xtf7PZmvZQ5e+ohObsHFHokaELQyvIq</LicenseCreationDate>
</LicenceManager>
my laptop licence is
i m using other computer d'not work plz help me brack my code
|
|
|
|
|
Hi,
I have WindowsForms application where I should execute method n-times in a second. The method should be executed inside of its own separate thread. I use thread pool for that purpose.
UI contains text box where I enter the number of times of execution and button, which I click to start processing.
I've tried to use System.Windows.Forms.Timer but it works for smaller number of executions (~ up to 100). It works means for example 50 calls can be done in 1 second. When the number of calls is growing they can't be executed in 1 second. They need more and more time.
The code looks as follows:
private int count = 0;
private int tps;
public Form1()
{
InitializeComponent();
ThreadPool.SetMaxThreads(500, 500);
}
private void button1_Click(object sender, EventArgs e)
{
listBox1.Items.Clear();
timer1.Enabled = true;
tps = Int32.Parse(textBox1.Text);
timer1.Interval = 1000 / tps;
timer1.Start();
label1.Text = "Start time: " + DateTime.Now.ToString("hh:mm:ss.fff");
label2.Text = "End time: ";
}
private void timer1_Tick(object sender, EventArgs e)
{
ThreadPool.QueueUserWorkItem(new WaitCallback(DoWork));
}
private void DoWork(object stateInfo)
{
count++;
listBox1.Items.Add(count);
if (count == tps)
{
count = 0;
timer1.Stop();
label2.Text = label2.Text + " " + DateTime.Now.ToString("hh:mm:ss.fff");
timer1.Enabled = false;
}
label3.Text = listBox1.Items.Count.ToString();
}
Do you have an idea how I can resolve this issue?
Thank you in advance.
Regards,
Goran
|
|
|
|
|
Try System.Timers.Timer[^] which is more accurate than its forms counterpart.
"Don't confuse experts with facts" - Eric_V
|
|
|
|
|
Thanks for your answer.
I've tried to use System.Timers.Timer and the results a bit better. But, there's one thing I've noticed. Sometimes, the number of items I've added to listbox is greater than number I've entered to text box. For example, when I enter 11 to text box, the number of items in list box is 12. The order is as follows: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 1. I don't understand why 1 again?
|
|
|
|
|
The bad news is that you can't resolve this issue. If you think about it for a little bit, you'll see why. Here's a hint - you need to execute a task several number of times a second and those tasks take a finite amount of time; creating the threads (or switching to them in a threadpool) also takes a period of time - even if you are running on a multi-core machine, there are only a set number of tasks that can be spawned and run in that period of time.
By the way, you have a marshalling issue in your code (you may be suppressing it, but it still takes time). Basically, you are interacting with a UI component from a none-UI thread. WinForms is STA, so you should be marshalling the calls back to the UI thread.
|
|
|
|
|
Thanks for the answer.
Yes. I supposed this couldn't be resolved to be absolutely accurate. But what to do? I need to write the application that should load test WCF RIA service and the results should be confidential.
|
|
|
|
|
If you are load testing an application, you need to take a different approach. You should be attempting to target it from multiple machines.
|
|
|
|
|
Some comments:
1. this article may enlighten you on some timer characteristics: Timer surprises, and how to avoid them[^]
2. this one could help you in solving cross-thread problems: http://www.perceler.com/articles1.php?art=crossthreads1[^]
3. ThreadPools have their own algorithm for launching and creating threads; e.g. launching ten jobs at pretty much the same time would not necessarily cause ten threads to be used, and that is why it's method is called QueueUserWorkItem , rather than ExecuteNow . Last time I checked, the ThreadPool, when sufficient work has been queued, would launch new threads at a pace of 2 per second.
4. Load testing a component may not be handled best with equidistant requests; I would consider using a fixed number of real threads (not pooled ones), and give each the job to wait a random time, then issue a request, in a loop-forever style. That way you can simulate an average load of your choice with arbitrary phase between the requests. Furthermore I agree with Pete, when he says having more machines to realistically simulate load would be better.
|
|
|
|
|
|
Hi Everyone,
Please I need help with an online Travel Guide Project that I've been unsuccessful at. Its a .NET Project but can be coded with c# so I don't know if this Forum is the right place to post this. Please any help whatsoever would be greatly appreciated. Thanks in advance
|
|
|
|
|
If this is a homework assignment. We don't do homework for you.
If this is a work project. We don't do your work for you.
If you have tried something on your own and are stuck and in need of assistance then post what you have tried and what problem you are having.
I know the language. I've read a book. - _Madmatt
|
|
|
|
|
Go here [^]
".45 ACP - because shooting twice is just silly" - JSOP, 2010 ----- You can never have too much ammo - unless you're swimming, or on fire. - JSOP, 2010 ----- "Why don't you tie a kerosene-soaked rag around your ankles so the ants won't climb up and eat your candy ass." - Dale Earnhardt, 1997
|
|
|
|
|
What kind of help do you need? If you are running into any specific issues with the code, then post only those specific questions here.
Someone may be able to help you.
Too much of heaven can bring you underground
Heaven can always turn around
Too much of heaven, our life is all hell bound
Heaven, the kill that makes no sound
|
|
|
|
|
Hi,
I'm trying do write a backup program in VB .NET. It needs to avoid backing up files that have already been backed up and so it compares the last write times of the source and backup files. If they are the same, the backup for the file is not performed.
If both the source file the backup file are on the local hard drive, the comparisons work correctly.
If both the source file the backup file are on a Network Attached Storage drive, the comparisons work correctly.
But if the source file is on the local hard drive and the backup file is on the Network Attached Storage drive, the comparison always says the they are different no matter what.
Code: (I'm using the CompareTo method.)
Dim SourceHasLaterDate As Int16 = SourceWriteTime.CompareTo(BackupWriteTime)
Is there any way I can get an accurate result for the third condition?
Thanks,
Mike
PS: I'm modifying the backup program written by Taner Riffit.
|
|
|
|
|
there are a couple of reasons why two DateTimes that should be equal actually can be different, here are the most important ones:
- some file systems only have a resolution of 2 seconds (long ago the date was stored in 16-bit, and the time in another 16-bit number (5-bit for the hour, 6-bit for the minutes, and 5 rather than 6 for the seconds).
- some file systems have a different way of dealing with daylight savings time (should the correction be applied dynamically, or should the corrected time be stored in the directory information?).
When I created my backup/synchronize utility years ago, I ended up comparing DateTimes with a tolerance: any pair of DateTime values that differed by -1, 0 or 1 hour give or take -2 to +2 seconds, I consider identical. And yes, that could lead to false identicals, but since I also compare file size and file name, chances are slim.
|
|
|
|
|
When I compensate for the differences in the storage devices by converting the last write date/time results to concatenated strings containing Year, Month, Day, Hour, and Second, the comparison works properly. With this approach I'm assuming that going to the second is accurate enough. You may want to use the same approach with yours.
Thanks for the explanation.
Here is my code:
Dim SourceWriteTime As DateTime = CDate(File.GetLastWriteTimeUtc(SourceFileName))
With SourceWriteTime
Test1 = .Year & "/" & .Month & "/" & .Day & "/" & .Hour & "/" & .Minute & "/" & .Second
End With
Dim BackupWriteTime As DateTime = CDate(File.GetLastWriteTimeUtc(BackupFileName))
With BackupWriteTime
Test2 = .Year & "/" & .Month & "/" & .Day & "/" & .Hour & "/" & .Minute & "/" & .Second
End With
Dim SourceHasLaterDate As Int16 = Test1.CompareTo(Test2)
If the SourceHasLaterDate > zero, I backup the file.
|
|
|
|
|
|
|
Thanks! I will move this post there.
|
|
|
|
|
Hiiiiiiii to all
Dear sir
any one can give link where to get about THREE TIER project in ASP.NET WEBSERVICES good tutorial and and also download small project THREE TIER programming in ASP.NET WEBSERVICES asap
rizvan sivally
|
|
|
|