|
Ennis Ray Lynch, Jr. wrote: I would be surprised if any of my answers compiled.
<Onslow Voice>Oh. Nice.</Onslow Voice>
|
|
|
|
|
Is you posted malformed XML.
|
|
|
|
|
I had it without spaces first, but then decided to make it somewhat easier to read...
|
|
|
|
|
My article, StringBuilderPlus, explains the problem with successive string concatenations and even has some nice graphics to help you understand.
Basically, string concatenations take N^2 time where StringBuilder concatenations take N time.
|
|
|
|
|
Hey guys, I'm trying to generate a report from an xml file, when I view the report it only shows the first client on the first page and doesn't add the other entries.
E.g. I have an xml file as follows
<br />
<?xml version="1.0" encoding="utf-8" ?><br />
<api_response><br />
<code>ok</code><br />
<noofrows>3</noofrows><br />
<site_entry><br />
<id>1</id><br />
<client_name>NAME 1</client_name><br />
<available_hours>12</available_hours><br />
<used_hours>12:30</used_hours><br />
<entry_count>9</entry_count><br />
<bug_count>3</bug_count><br />
<development_count>3</development_count><br />
<new_feature_count>3</new_feature_count><br />
</site_entry><br />
<site_entry><br />
<id>2</id><br />
<client_name>NAME 2</client_name><br />
<available_hours>12</available_hours><br />
<used_hours>9</used_hours><br />
<entry_count>2</entry_count><br />
<bug_count>0</bug_count><br />
<development_count>1</development_count><br />
<new_feature_count>1</new_feature_count><br />
</site_entry><br />
<site_entry><br />
<id>4</id><br />
<client_name>NAME 3</client_name><br />
<available_hours>12</available_hours><br />
<used_hours>19</used_hours><br />
<entry_count>12</entry_count><br />
<bug_count>1</bug_count><br />
<development_count>6</development_count><br />
<new_feature_count>5</new_feature_count><br />
</site_entry><br />
</api_response><br />
The report shows the name and hours used and a lot of other stuff but it should show each entry (name 1, name 2 and name 3) on a different page instead it just shows name 1 and thats it.
|
|
|
|
|
Sounds like you've got a bug in your report, then. I'd fix it, if I were you.
|
|
|
|
|
string varTempStr = "20100720";
System.Globalization.CultureInfo enUk = new System.Globalization.CultureInfo("en-GB");
DateTime billingDate1 = System.DateTime.ParseExact(varTempStr, "yyyyMMdd", enUk);
System.Globalization.CultureInfo enUS = new System.Globalization.CultureInfo("en-US");
DateTime billingDate2 = System.DateTime.ParseExact(varTempStr, "yyyyMMdd", enUS);
string x = billingDate1.ToString();
string y = billingDate2.ToString();
Why are 'x' and 'y' coming back as the same value ("20/07/2010 00:00:00")?
Why not x= "20/07/2010 00:00:00" and y = "07/20/2010 00:00:00"?
modified on Wednesday, August 11, 2010 10:02 AM
|
|
|
|
|
Because billingDate1 and billingDate2 are just DateTime objects that contain no information on which CultureInfo should be used to output their values.
What you are doing when assigning values to the objects (though ParseExact) is simply to specify how varTempStr should be interpreted. But once the DateTime objects have their values they have their values.
It is when you export those values to a string that you have to be specific as to how it's supposed to be done.
Try:
string x = billingDate1.ToString(enUk.DateTimeFormat);
string y = billingDate2.ToString(enUS.DateTimeFormat);
|
|
|
|
|
Because you're supplying the culture to the parser... So it's using that to change "20100720" into a date. Since you specified an exact format string ("yyyyMMdd"), that culture really doesn't mean much in this case, since both cultures use the same calendar.
Then, when you turn the dates back into a string (x and y), you're just using ToString() , so it's using your default culture.
You need to specify a culture-specific format provider in the ToString() calls.
|
|
|
|
|
Hi Experts,
In generics we can give constraints using the "where" clause like
public void MyGeneric <T>() where T : MyClass1 {...}
Now if i want the type T to be of type MyClass1 and say an interface IMyInterface then i need to do something like
public void MyGeneric <T>() where T : MyClass1, IMyInterface {...}
But I dont know (or maybe it is not possible) if we can create a generic method that can take types which inherits from either of the 2 types. i.e. if any of my other classes inherits from MyClass1 or implements IMyInterface but neither of my class has both then my generic method should work for these classes.
I hope I have been clear.
Please help!
Thanks in advance!
Regards,
Samar
|
|
|
|
|
The concern is type. You need to create a common interface that both MyClass1 and IMyInterface can share. Usually MyClass1 will just implment IMyInterface negating the problem.
|
|
|
|
|
I think you cannot do that. But, on the other hand, I see no reason to do that, too. If either of the two types works for you, then they must have some common interface. So, all you have to do is to have both MyClass1 and IMyInterface implement some IGeneralInterface.
|
|
|
|
|
I knew this would come. But my problem here is the class MyClass1 in my case is a .net class and i cannot modify it to make it implement an interface. Thanks for your time kapax5.
Regards,
Samar
|
|
|
|
|
unless the .NET class is sealed, you could derive from it and make that implement the interface of your choice.
|
|
|
|
|
Yes, a very good note.
I am pretty sure that the author of the question understands why his provided idea is impossible. So, something must be done with inheritance, or maybe if we knew what exactly he is trying to do, we could find a workaround for the problem.
|
|
|
|
|
You could try to simulate this with inheritance. You could do:
class MyGenericBase<T>{
public virtual T DoSomeStuff() { ... }
}
class MyGeneric<T> : MyGenericBase<T>
where T : MyClass1
{
public override T DoSomeStuff { ... }
}
class MyGeneric1<T> : MyGenericBase<T>
where T : IMyInterface
{
public override T DoSomeStuff() { ... }
}
I'm pretty sure, that you wan't be able to give derived class with the same identifier (but check it, compiler will tell you )
And question is: "Why would you want to do it?". Seems like your design isn't perfect.
Don't forget to rate answer, that helped you. It will allow other people find their answers faster.
|
|
|
|
|
In some situations I also think it would be nice to have this possibility.
But take this example:
public void MyGeneric<T>(T tValue) where T : InterfaceA | InterfaceB
{
tValue.<what>();
}
I hope you see where your logical mistake lies.
Greetings
Covean
|
|
|
|
|
That's a very bad idea, but if you need it you can simulate it by providing your own checks.
|
|
|
|
|
What do you mean is a very bad idea, to have this 'OR' constraint?
I don't think so. Take a look at this example:
Lets say you want to add an extention to the values types short, int, long.
public static class ValueTypeExtention
{
public static ulong ToUnsignedLongUnchecked<T>(this T signedValue) where T : IConvertible
{
return signedValue.ToUInt64();
}
public static ulong ToUnsignedLongUnchecked<T>(this T signedValue) where T : struct { ... }
public static ulong ToUnsignedLongUnchecked(this short signedValue) { return signedValue.ToUInt64(); }
public static ulong ToUnsignedLongUnchecked(this int signedValue) { return signedValue.ToUInt64(); }
public static ulong ToUnsignedLongUnchecked(this long signedValue) { return signedValue.ToUInt64(); }
public static ulong ToUnsignedLongUnchecked<T>(this T signedValue) where T : short | int | long
{
return unchecked((ulong)signedValue);
}
public static ulong ToUnsignedLongUnchecked<T>(this T signedValue) where T : (short | int | long) as IConvertible
{
return signedValue.ToUInt64();
}
}
A, B and C are versions how you could solve this problem nowadays.
But lets have a deeper look:
- A allows bool bValue=false; ulong ulVal = bValue.ToUnsignedLongUnchecked(); . It allows it for
every class/struct that implements IConvertible.
- B needs type checking and offers ToUnsignedLongUnchecked() to every struct even BITMAPINFO.
- C is the only way to solve the condition completely but needs multiple implementations.
Using where T : struct, IConvertible as constraints is the best way to solve this problem with generics so far.
The 'pseudo' constraint D just allows T to be one of this 3 value types. And I think E could be the best way.
Greetings
Covean
|
|
|
|
|
I'm not sure what you mean.
MyClass1 doesn't need to implement IMyInterface -- as long as the provided class does and derives from MyClass1.
public class Base
{
}
public class Derived : Base , System.IDisposable
{
public void
Dispose
(
)
{
}
}
public class Generic<T> where T : Base , System.IDisposable
{
}
var x = new Generic<Derived>() ;
|
|
|
|
|
Hi
When I do the installation from my windows app, it installs and finishes but my program throws errors...
If I go into the folder where the sqlexpress.exe file is and click on it then it installs and my app works!!
Here is my code I'm using :
Process myProcess = new Process();
myProcess.StartInfo.FileName = @"C:\folder\sqlexpr32.exe";
myProcess.StartInfo.Arguments = "start /wait " + vlNew_SQLExpressFilePath.ToString() + " /qn username=test companyname=testany addlocal=ALL disablenetworkprotocols=0 instancename=MyInstance SECURITYMODE=SQL SAPWD=test123";
myProcess.StartInfo.UseShellExecute = false;
myProcess.Start();
thanks in advance
|
|
|
|
|
You shouldn't force the install of any particular version of a third-=party product -- the user may alreday have a better one installed.
Simply document the requirements and let the user install what he chooses.
|
|
|
|
|
that was quick thanks...
I'm doing checks to see if there is an older or new version on there and if there is a version on there then it wont install.
The user cant select what they want to install, I need to install that somewhere in the background so that the user does not know about it, silent install...
-- Modified Wednesday, August 11, 2010 9:24 AM
|
|
|
|
|
Your design assumes that your users all have permissions to install software, or has admin rights to their own machines. This is not always the case and is rare to find in a corporate environment. You should not be installing anything from your application at all. This should be done from your installer for your app instead.
|
|
|
|
|
Thanks, I know but I didnt have any other solutions. How can I install sql express when they install the click once app?
is there settings that I must set before publishing?
|
|
|
|