|
Thanks Jeff.
I found something usefull in the MSDN:
DataTable.Compute() and DataColumn.Expression()
DataSet myData = new DataSet();
//
myData.Tables.Add("Orders");
myData.Tables["Orders"].Columns.Add("ParentID", typeof(int));
myData.Tables["Orders"].Columns.Add("Exp", typeof(string));
myData.Tables["Orders"].Columns.Add("Exp2", typeof(string));
myData.Tables["Orders"].Columns["Exp"].Expression = "substring('abcdefg',2,3)";
myData.Tables["Orders"].Columns["Exp2"].Expression = "IIF(1=2,'A',iif(3>4,'B','C'))";
myData.Tables["Orders"].Rows.Add(new object[1] {123});
DataTable myTable;
myTable = myData.Tables["Orders"];
// Declare an object variable.
object objSum;
objSum = myTable.Compute("substring('123456',3,2)", null);
MessageBox.Show(objSum.ToString() + "\n"
+ myTable.Rows[0][1].ToString() + "\n"
+ myTable.Rows[0][2].ToString()
);
|
|
|
|
|
Hey, that's pretty cool. You should write an article on it! Wish I could've gotten that JScript call working-- I tried for about half an hour and gave up in disgust. You'd think they would've put a simple expression evaluator in the base class library, eh?
I wrapped it up in a little class for you-- I may use this code myself on a project:
<br />
public sealed class Evaluator {<br />
private static System.Data.DataTable table = new System.Data.DataTable("dummy");<br />
<br />
private Evaluator() {}<br />
<br />
public static object Evaluate(string _expression) {<br />
if (_expression == null) {<br />
throw new ArgumentNullException();<br />
}<br />
return table.Compute(_expression, null);<br />
}<br />
<br />
}<br />
Note that this simple implementation will simply throw any exception encountered when calling Compute on the DataTable , but I figured that that was desirable behavior.
Regards,
Jeff Varszegi
|
|
|
|
|
|
|
Another way is through DataSet s. These are disconnected recordsets you could get from the SQL Server/MSDE (or whatever data provider, so long as it has either an OLE DB provider or classes designed specifically for it using ADO.NET) using a DataAdapter or DataReader (the latter would force you to fill the DataSet yourself).
Using a DataView on a DataTable lets your sort and filter using SQL-like expressions (some simple and aggregate functions are supported, too). See the documentation for the DataView in the .NET Framework SDK for more information.
Also, if you plan on displaying these in a DataGrid , you can also use expressions in the columns.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
If I were to have two classes that refer to each other, how do I create them both? Here is an example of what I'm talking about:
test.cs
<br />
namespace yadda<br />
{<br />
public class A<br />
{<br />
public class A()<br />
{<br />
...<br />
}<br />
public B MethodForA()<br />
{<br />
...<br />
return B();<br />
}<br />
}<br />
<br />
public class B<br />
{<br />
private A variable1;<br />
<br />
public class B()<br />
{<br />
...<br />
}<br />
}<br />
}<br />
Notice how classes A and B refer to each other. If I were to do this, there would be a compile error in class A saying more or less that it doesn't know what "B" is. Should I split these classes out into separate class files (.cs)? I don't want to have to make them into separate projects or anything like that.
In C++, I remember being able to create class prototypes, where I could say:
<br />
class A;<br />
class B;<br />
<br />
class A<br />
{<br />
public:<br />
A()<br />
{<br />
...<br />
}<br />
<br />
B MethodForA()<br />
{<br />
...<br />
}<br />
};<br />
<br />
class B<br />
{<br />
private:<br />
A variable1;<br />
public:<br />
B()<br />
{<br />
...<br />
}<br />
};<br />
Any ideas? As you might have guessed, I'm still somewhat new to C#. Thanks in advance!
|
|
|
|
|
My advice would be to try something out for yourself before you ask a question like this-- not because you annoy people, but because you'll learn more that way. I only ask people for help if it's something I can't get myself.
In this case, it's obvious that you didn't try to compile this code, or you would've found out things like the fact that
return B();
should be
return new B();
and that a constructor method doesn't have the word class in its signature. You would've also found out that when you fix all these problems, your code compiles fine! The .NET compiler is pretty smart; it seems to've been built for dummies in some respects. Not that I'm saying yours is a stupid question-- it definitely isn't. I remember having to change my design once on a Java project due to circular references.
Regards,
Jeff Varszegi
|
|
|
|
|
I have a clock bitmap,and I want to draw the hour hand on the bitmap?
how can i do this?
|
|
|
|
|
Create a Graphics object like this:
Graphics g = Graphics.FromImage ( YourBimap );
and then you can draw text, lines, rectangles, ...
If you do not know anything about this topic look into MSDN for GDI+
Q:What does the derived class in C# tell to it's parent?
A:All your base are belong to us!
|
|
|
|
|
I have another question.
if I want to show a picture in my aspx file and I want to add some something like line or rectangle beyone the jpeg picture(not the bitmap) before show the jpeg picture,how can i do this?
thank you
|
|
|
|
|
Same way. The Bitmap class represents all images - even indexed images like GIF. See the Image and Bitmap (a derivative of Image ) documentation in the .NET Framework SDK.
For ASP.NET, however, you can't generate an image inline with the page. You must either have a page that sets it's Response.ContentType to something like image/jpeg and output only an image.
This concept is covered in many articles here on CP and MSDN[^], like this article here: An ASP.NET Thumbnail Solution[^]. Many others exist, too - just search this site or google.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
first Thanks a lot to your answer.
But I got error.
the following code:
Bitmap myBitmap = new Bitmap(@"C:\My Documents\My Pictures\GaugeTime.gif");
Graphics g = Graphics.FromImage(myBitmap);
//error is:A Graphics object cannot be created from an image that has an indexed pixel format.
It seems the gif picture is not supported? what should I do?
thank you
|
|
|
|
|
You'll need to save myBitmap to a stream as a different format (the easiest way, though other ways exist - see the .NET Framework SDK for more information about the Bitmap class). You can do this by creating a MemoryStream , saving the Bitmap as a different format, and then get a Graphics object from that:
using (Bitmap myBitmap = new Bitmap(@"C:\...\GaugeTime.gif"))
{
using (MemoryStream ms = new MemoryStream())
{
myBitmap.Save(ms, ImageFormat.Bmp);
ms.Seek(0, SeekOrigin.Begin);
using (Bitmap newBitmap = new Bitmap(ms))
{
using (Graphics g = Graphics.FromImage(newBitmap))
{
}
}
}
} The various using statements just dispose the object when it falls out of scope - even if an Exception is thrown for some reason. Each using statement compiles to the following:
using (Bitmap bmp = new Bitmap(32, 32))
{
}
Bitmap bmp = new Bitmap(32, 32);
try
{
}
finally
{
if (bmp != null) bmp.Dispose();
}
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
Thank you very much.
I think I understand.
|
|
|
|
|
i got a string in a textBox like this:
"45991476873-0+72396251509/408744738491*408744738491"
please help me to get the result.
thanks.
Mr Duc Linh Nguyen
|
|
|
|
|
|
I have a project that does just that
http://www.codeproject.com/Purgatory/AderEvaluator.asp
|
|
|
|
|
If you’re going to ask someone to do your homework for you the night before it’s due, at least try searching for it online before you post! I will give you a clue; there is an article here on CP that covers this.
- Nick Parker My Blog | My Articles
|
|
|
|
|
SOL huh?
// Steve McLenithan
Cluelessnes: There are no stupid questions, but there are a lot of inquisitive idiots.
|
|
|
|
|
Or maybe we're trying to help you help yourself. You won't learn anything by being given the answer. Do you think the regulars here learned by being told how to do everything? If you don't understand what you're doing, then learn. There's plenty of resources and as Nick said, there's even an article here on CP about Blowfish encryption using C#.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
Heath Stewart wrote:
Do you think the regulars here learned by being told how to do everything? If you don't understand what you're doing, then learn.
I completely agree.
// Steve McLenithan
Cluelessnes: There are no stupid questions, but there are a lot of inquisitive idiots.
|
|
|
|
|
I just find it slightly strange that you don't even know where to start and yet you are trying to implement blowfish encryption in C#, the night before none-the-less. Did you find the article here on CP?
- Nick Parker My Blog | My Articles
|
|
|
|
|
http://www.google.ca/search?q=blowfish+encryption+in+c%23&ie=UTF-8&oe=UTF-8&hl=fr&meta=
good old copy and paste homework 
|
|
|
|
|
How can I change the line spacing in a chedkedListBox, thanks.
Interlocked
|
|
|
|
|
P/Invoke the SendMessage native API and send the LB_SETITEMHEIGHT (0x01a0) message to the CheckedListBox 's Handle .
If you override CreateParams and set the LBS_OWNERDRAWVARIABLE (0x0020) style, then specify the item index in the WPARAM parameter (3rd parameters to SendMessage ) to set just a single item's height, otherwise the height is set uniformly for all items.
Microsoft MVP, Visual C#
My Articles
|
|
|
|