|
Manas Bhardwaj wrote: Leave alone the fast execution part
Why?
Manas Bhardwaj wrote: do you know that these two statements may not give the same result always
Do you have any examples ?
|
|
|
|
|
Mohammad Dayyan wrote: Do you have any examples ?
Have a look at it[^]
Please remember to rate helpful or unhelpful answers, it lets us and people reading the forums know if our answers are any good.
|
|
|
|
|
|
Hey Manas, he's asking about speed and you send him off to MSDN, for shame. I use that only when all other avenues are exhausted.
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
Mohammad Dayyan wrote: I saw somewhere that obj1.Equals(obj2) is faster than obj1==obj2
First of all, that depends on the type of the objects. That will decide which operator or method will be used.
If there is a difference in performance, it's because they don't do the same thing. You should find out which one that does what you want, because it's totally irrelevant if the method is fast if it doesn't do what you need it to do. That's like saying that "you should use addition instead of division, because it's faster".
Despite everything, the person most likely to be fooling you next is yourself.
|
|
|
|
|
Thank you Guffa.
For example when we wanna use two string Object which one of them is faster ?
|
|
|
|
|
The == operator first checks if the references are the same, so if you are comparing a string instance to itself (or comparing two null references) that would be faster. Otherwise they call the exact same private method to do the value comparison, so the difference can only be marginal.
Despite everything, the person most likely to be fooling you next is yourself.
|
|
|
|
|
It depends on how it's implemented in the object being compared. Have a look at operator overloading for == and overriding the Equals(object obj) method for the other. The results could be the same or very different, as can the execution times.
DaveBTW, in software, hope and pray is not a viable strategy. (Luc Pattyn)Expect everything to be hard and then enjoy the things that come easy. (code-frog)
|
|
|
|
|
Hello everyone,
I want to add buttons to a panel dynamically at runtime. I use the following code:
Button myCmd = new Button();
myCmd.Location = new System.Drawing.Point(570, Prev);
myCmd.Name = "cmd" + Token + Nr.ToString();
myCmd.Size = new System.Drawing.Size(20, 21);
myCmd.TabIndex = int.MaxValue;
myCmd.Text = "O";
myCmd.TextAlign = ContentAlignment.MiddleCenter;
myCmd.Click += new System.EventHandler(cmdOK_Click);
panMain.Controls.Add(myCmd);
Each button shares the same Click event handler. Is there a way for each button to have it's own event handler?
Thank you
|
|
|
|
|
What is the problem in sharing same event handler ?
|
|
|
|
|
Each button performs a different task.
|
|
|
|
|
Again, so what ?
The sender passed into the event is your button, you can use the Tag property to identify your action and use one event for all your buttons.
Christian Graus
No longer a Microsoft MVP, but still happy to answer your questions.
|
|
|
|
|
pkruger wrote: myCmd.Click += new System.EventHandler(cmdOK_Click);
is where you're specifying the event handler.
Why not put this line in a switch block or similar then you can change the method called depending on the criteria you're testing for.
DaveBTW, in software, hope and pray is not a viable strategy. (Luc Pattyn)Expect everything to be hard and then enjoy the things that come easy. (code-frog)
|
|
|
|
|
Hello,
I am designing an application where data is stored in files. My file is in XML format so that I can easily manipulate it's data. Everything worked really well so far. Recently we are getting many support mails which says the program showing some weird errors. We have found that it is mainly because people open the file in a text editor and edited the XML data manually.
I am looking for a method which will prevent users from editing it. How do you guys usually manage it ? Any suggestions ?
|
|
|
|
|
Hide the files.
Giorgi Dalakishvili
#region signature
my articles
#endregion
|
|
|
|
|
Thanks,
But that's not a reliable way as it can be made visible by the user. Any other suggestions ? How about writing the XML content into a binary file ?
|
|
|
|
|
Hi ! is your xml file large?
Do you load it entierly when executing your program?
if you load your xml file into an object you can do a binary serialization. You save your object or array of objects into a binay file.
When executing your program you can load this file at start up.
|
|
|
|
|
That's a brilliant suggestion. I will check it.
|
|
|
|
|
Hi !
Just you have to be sure that when you serialize or deserialize your object you MUST keep the same class structure (same fields, same names, sames types)
regards
|
|
|
|
|
In the past I've used xml in memory and used simple encryption/decryption for writing to disk.
This can slow stuff down a little though. Alternatively, encrypt just the tag contents rather than the xml file - but make sure the encryption only uses characters that are going to be valid.
DaveBTW, in software, hope and pray is not a viable strategy. (Luc Pattyn)Expect everything to be hard and then enjoy the things that come easy. (code-frog)
|
|
|
|
|
Hi there.
I've installed Windows XP(SP2), Microsoft Office 2003 and Visual Studio 2005 on my computer. And there is such an error.
I need to create or open Excel document from my application. I've wrote some code here.
using Core = Microsoft.Office.Core;
using Word = Microsoft.Office.Interop.Word;
using Excel = Microsoft.Office.Interop.Excel;
private void button1_Click(object sender, EventArgs e)
{
object oMissing = System.Reflection.Missing.Value;
Word.Application app = new Word.ApplicationClass();
app.Visible = true;
Word.Document doc = app.Documents.Add(ref oMissing, ref oMissing, ref oMissing, ref oMissing);
Word.Range rng = doc.Content;
rng.InsertAfter("Some text.");
rng.InsertParagraphAfter();
rng.InsertAfter("new paragraph");
}
private void button2_Click(object sender, EventArgs e)
{
try
{
object oMissing = System.Reflection.Missing.Value;
Excel.Application app = new Excel.ApplicationClass();
app.Visible = true;
Excel.Workbook wb = app.Workbooks.Add(oMissing);
}
catch (Exception error)
{
MessageBox.Show(error.ToString());
}
}
The Word application starts normally and there is no problems with new document creation.
The Excel application also starts normally, but there is problem when I'm trying to create new workbook.
Here is error message
System.Runtime.InteropServices.COMException (0x80028018): Old format or invalid type library. (Exception from HRESULT: 0x80028018 (TYPE_E_INVDATAREAD))
at Microsoft.Office.Interop.Excel.Workbooks.Add(Object Template)
at WindowsApplication1.Form1.button2_Click(Object sender, EventArgs e) in C:\Documents and Settings\Davit\My Documents\Visual Studio 2005\Projects\WindowsApplication1\WindowsApplication1\Form1.cs:line 40
I've also tried to create new workbook with xlWBATWorksheet template
Excel.Workbook wb = app.Workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);
but I get the same error.
The Open function doesn't work too.
The same code was working when there were Windows Vista and Office 2007 installed on my computer.
Please help me to solve this problem.
|
|
|
|
|
Its probably similar to the probably when I tried creating Excel charts. It worked well with Office 2003 but not with Office 2007. I would suggest to use Reflection .( It worked for me, might work for you as well.)
|
|
|
|
|
Thanks for your answer.
What you mean under Reflection? Is it System.Reflection class, how can I use it?
Thanks
|
|
|
|
|
dsamvelyan wrote: System.Reflection class
Its a namespace.
You use it to create instance of Excel object at runtime using Assembly.CreateInstance . And then create or open file using this object. You can find on google about writing code using reflection.
"If you had to identify, in one word, the reason why the human race has not achieved, and never will achieve, its full potential, that word would be 'meetings'." - Dave Barry
|
|
|
|
|
Assembly assembly = Assembly.LoadFrom(@"C:\WINDOWS\assembly\GAC\Microsoft.Office.Interop.Excel\11.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Excel.dll");
object obj = assembly.CreateInstance("Microsoft.Office.Interop.Excel.ApplicationClass");
Excel.Application app = obj as Excel.ApplicationClass;
app.Visible = true;
Excel.Workbook wb = app.Workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);
I have same error in this code!
|
|
|
|