|
You can use CodeDom to create source code at runtime, compile and run it. If your numerical expressions can be evaluated in a programming language then I guess this might be the easiest way. This article[^] might give you some clues.
|
|
|
|
|
This will cheating. LOL. But nice article.
|
|
|
|
|
I've used a much simpler approach to do this. The basic idea is you build a binary tree that represents your expression, where you have an interior node for each operator and its left and right sons are the operands.
1. Replace each token in your expression with a node that has left/right pointers, so it can be in a binary tree. Each number, operator, and parenthesis is a separate node. Initially the nodes are in a linear list, in the same order they appear in the expression.
2. We process the list, moving operand nodes to the left/right sons of operator nodes (or removing nodes) at each step, until we're left with a single node in the list: The root of the binary tree.
3. There are three operations:
a) If you have a single node enclosed by parentheses, eliminate the parentheses: (N) => N
b) Find the region most deeply nested in parentheses. Go through the nodes, moving the operands around the highest-precedence operators to the left/right sons: A + B * C + D => A + [* node with sons B and C] + D (Hard to draw a tree here...)
c) Go through this region again, this time doing the same operation to the next-lower-precedence operators:
[+ node]
/ \
[+ node] D
/ \
A [* node]
/ \
B C
When done, only the root [+ node] will remain in the list. To evaluate, call the Eval() method on the root. Eval returns the value of the node's operand, or for an operator, it returns the operator applied to the Eval() of its sons.
It works, and it's way simpler than the standard approach.
|
|
|
|
|
Why don't you use a switch instead of an if/else chain?
|
|
|
|
|
Hi,
I'm writing an application where I need administrator authority to create the database. I do not want to run as an administrator the entire time, just to create the file. How do I switch into Administrator mode and switch back? I know the User will get a prompt when trying to do this as I have seen other applications requesting administrator authority.
Thank you,
Glenn
|
|
|
|
|
Unless something has changed that I don't know about, you cannot switch back and forth. It's the entire process runs with admin priv's or nothing.
|
|
|
|
|
As Dave said - AFAIK you can't. You can create separate process to do the DB stuff and start that with elevated privileges though.
Google "start new process with elevated privileges" and you will find many results.
|
|
|
|
|
I prefer to include an empty copy of the database with the app.
|
|
|
|
|
how can i get usage cpu performance from wmi based on c# ?
many solution just write about sql script or the other.
|
|
|
|
|
when i use PerformanceCounter,
it can get a information cpu performance. but it just cpu own.
i.e, case of invoke progressbar, it can display cpu usage rate.
it just one thread. but i wanna get a cpu,network and memory usage rate.
so i make them in one thread. but always cpu usage rate 0% in my project.
i don't understand it.
following my code.
------------------------
PerformanceCounter p = new PerformanceCounter();
p.CategoryName = "Processor";
p.CounterName = "% Processor Time";
p.InstanceName = "_Total";
... progressbar invoke ...
float usage = p.NextValue();
progressBar1.Value = ((int)usage);
label1.Text = "CPU usage : " + ((int)usage).ToString() + "%";
.....
it can display useage rate...
i write this code in my project, but case on my project. it can't display performance.
|
|
|
|
|
Hello,
Have you tried this:
ManagementObject processor = new ManagementObject("Win32_PerfFormattedData_PerfOS_Processor.Name='_Total'");
processor.Get();
ulong value = (ulong)processor.Properties["PercentProcessorTime"].Value;
Valery.
|
|
|
|
|
I'm going to be writing a distributed app soon... a GUI will submit jobs to a server and the server will hand out jobs to up to 300 worker PCs.
Is there anything built in to .NET or some API available from Microsoft?
Seems like a lot of detail stuff (the 3 pieces communicating, updating status, etc) would have already been written?
I know there is Windows Azure / Cloud computing, but the boss doesn't want to use somebody elses cloud. Does Windows Azure let you build your own cloud? etc.
Basically looking for something like that.
Did a google search on some keywords, but found almost nothing.
|
|
|
|
|
Seems like a pretty standard operation except the worker PCs should request a job rather than have a job pushed to them.
Server creates a queue of jobs to be done, each pc grabs a job as it becomes free, fairly straght forward.
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
Hmm... whats the advantage of pulling vs pushing? seems like just moving status management from the server piece to the client itself. How should worker status / heart beat be handled?
Anyways, I didn't think it was exceptionally difficult, I just thought to get it ROBUST and STABLE would take a lot of detail work and I'd rather just re-use something if possible .
|
|
|
|
|
Is there any reason the server needs to know the status of the worker beyond the pass/fail result of the process.
And yes I'll be interested to see if a framework comes out of the question.
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
We need to know if a client is hung or crashed or had a hardware failure, etc. We aren't going to RDP or ping 300 machines .
|
|
|
|
|
my current project that is redesign about client framework architect.
i'm redesign to distribute process system from partial distribute system.
i'm allocate broker application server in framework and task base distribute.
it need some modify client system. but i will go almost least it.
current system base on c#.
if you have many client system, cloud is nice solution.
but cloud have many issue about system redesign.
sometimes you need modify your client software. it need too cost.
and you have plan system recovery about system shutdown.
|
|
|
|
|
that's a good question... i personally haven't seen a framework for this, but like you mentioned, i assume someone has already done this... post follow up info if you do find something...
|
|
|
|
|
Looked at BOINC[^]? Dunno if it's appropriate for you but it's free I'm pretty sure. And well tested - this is what runs SETI@home, I believe.
|
|
|
|
|
There is a native function wich takes arrays of pointers to data arrays e.g. char allocated with malloc.
void function(char** data, int nRows)
{
for (int i = 0; i < nRows; i++)
{
int nCols = _msize(data[i]);
for (j = 0; j < nCols; j++)
char val = data[i][j];
}
}
In managed code I have enumeration of byte[] arrays to pass to that function via PInvoke
unsafe void MyFunction(IEnumerable<byte[]> data)
{
var handles = data.Select(d => GCHandle.Alloc(d, GCHandleType.Pinned));
var ptrs = handles.Select(h => h.AddrOfPinnedObject());
IntPtr[] dataPtrs = ptrs.ToArray();
uint nRows = (uint)dataPtrs.Length;
function(dataPtrs, nRows);
handles.ToList().ForEach(h => h.Free());
}
[DllImport("function.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Unicode)]
static extern unsafe internal void function(IntPtr[] data, uint nRows);
However _msize call in native code leads to heap corruption. I remeber I used stackalloc with one dimensional array char* and concatenated byte[] arrays together.
But I need support for 'jagged array' with individual byte[] arrays of different sizes hence the need for array of pointers char**.
How to pin the byte[] arrays so that _msize correctly works as in stackalloc case?
Чесноков
|
|
|
|
|
Hello. Looking at the documentation for _msize function, it says that it returns the length of a memory block allocated by calloc, malloc or realloc so, since your byte[] arrays are allocated into the managed heap, I think it will not work unless you use Marshal.AllocHGlobal (and I am not sure if this would work) to allocate the memory and then copy data from managed heap to unmanaged heap and viceversa.
stackalloc could be used for one dimensional arrays becouse it is very similar to C _alloca function but, as far as I know, it is not possible in other cases, becouse stackalloc keyword can only be used when declaring and initializing a variable, I mean:
byte* pt = stackalloc byte[100];
byte* pt2;
pt2 = stackalloc byte[100];
|
|
|
|
|
Hello all,
My problem is I am having grey lines in a barcode after I resize it to a smaller size. Because of grays in the barcode, the reader cant read it.
The reader can read the original barcode before resizing it(it is all in black). I tried this but any improvement in my code or suggestion greatly appreciated;
Image bmpImage = Image.FromFile("C:\\barcode.bmp");
Bitmap bm = new Bitmap(bmpImage, new Size(192, 96));
Graphics gr = Graphics.FromImage(bm);
gr.SmoothingMode = SmoothingMode.HighQuality;
gr.InterpolationMode = InterpolationMode.High;
Rectangle rectDestination = new Rectangle(0, 0, 192, 96);
ImageCodecInfo codec = ImageCodecInfo.GetImageEncoders()[1];
EncoderParameters eParams = new EncoderParameters(1);
eParams.Param[0] = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, 100L);
gr.DrawImage(bm, rectDestination, 0, 0, 192, 96, GraphicsUnit.Pixel);
PictureBox pbox = new PictureBox();
pbox.Image = bm;
gr.Dispose();
pbox.Image.Save("C:\\barcode_resized.bmp");
|
|
|
|
|
Hi,
IMO the best approach is to create a totally new barcode, i.e. scan the original at its original size (result is a string), then "print" that string to a new barcode at the size you want. There are a number of articles available on barcodes here on CodeProject.
You can try to use the existing one and rescale it, however then you must avoid all interpolation, therefore I suggest you use InterpolationMode.NearestNeighbor Even then the best results are to be expected when the resizing is by a simple fraction such as 1/2 or 2/3. Don't expect any success with extreme resizing, say 1/10.
Luc Pattyn [Forum Guidelines] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, improve readability, and make me actually look at the code.
modified on Tuesday, March 15, 2011 2:50 PM
|
|
|
|
|
Well I am resing it from 300 x 150 to 192 x 96. I think the barcodes becomes blurry because the resolution drops. I tried InterpolationMode.NearestNeighbor but didnt help. I will try your first approach now
|
|
|
|
|
I'm working on a C# WinForms app in VS2010. It seems that Crystal Reports is no longer included in VS. You now have to go
to SAP and download it. So I did, and now I'm getting:
Could not load file or assembly 'log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=692fbea5521e1304' or
one of its dependencies. The system cannot find the file specified.":"log4net, Version=1.2.10.0, Culture=neutral,
PublicKeyToken=692fbea5521e1304"
on this line:
private void InitializeComponent()
{
this.CRViewer = new CrystalDecisions.Windows.Forms.CrystalReportViewer();
this.SuspendLayout();
this.CRViewer.ActiveViewIndex = -1;
this.CRViewer.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.CRViewer.Cursor = System.Windows.Forms.Cursors.Default;
this.CRViewer.Dock = System.Windows.Forms.DockStyle.Fill;
this.CRViewer.Location = new System.Drawing.Point(0, 0);
this.CRViewer.Name = "CRViewer";
this.CRViewer.Size = new System.Drawing.Size(508, 379);
this.CRViewer.TabIndex = 0;
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.Controls.Add(this.CRViewer);
this.Name = "crlReportViewer";
this.Size = new System.Drawing.Size(508, 379);
this.ResumeLayout(false);
}
I have been Googling this for 2 days and found nothing really. It seems that this problem can be generated
for a variety of reasons. Anyone have any clue what's going on & what to do about it?
Everything makes sense in someone's mind
|
|
|
|