|
Check out
Environment.CurrentDirectory
Application.ExecutablePath
Application.StartupPath
For a detailed description of those paths see the MSDN documentation
regards
modified 12-Sep-18 21:01pm.
|
|
|
|
|
what code i write to my form to make lines when i selected it and click button bold or italic the lins it begin bold or italic like what happend in word or this form i can make this line bold or ialik or underline
mostafasafy
|
|
|
|
|
Hello
Use RichTextBox class.
Regards
|
|
|
|
|
When I call the OCR Function through C# on a computer with office 2000 it gives an error message in trying to load the COM object. It seems to work fine with office 2003. Is there something special I need to do for office 2000.
|
|
|
|
|
Hello
Maybe that function is available only in 2003 or later. Did you revise the documentaion for that? And what error message do you get?
Regards
|
|
|
|
|
hi again guys, still same problem, this time i'll post my code:
(the previous thread : Link
<br />
m_prsAlgorithm = new Process();<br />
<br />
m_prsAlgorithm.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;<br />
m_prsAlgorithm.StartInfo.FileName = "Lottery.exe";<br />
m_prsAlgorithm.StartInfo.UseShellExecute = false;<br />
m_prsAlgorithm.StartInfo.RedirectStandardInput = true;<br />
m_prsAlgorithm.StartInfo.RedirectStandardOutput = true;<br />
<br />
m_prsAlgorithm.OutputDataReceived += new DataReceivedEventHandler(prsAlgorithm_OutputDataReceived);<br />
<br />
m_prsAlgorithm.Start();<br />
<br />
m_prsAlgorithm.BeginOutputReadLine();<br />
<br />
System.IO.StreamWriter swWriter = m_prsAlgorithm.StandardInput;<br />
<br />
swWriter.WriteLine(m_strArgList + " d");<br />
<br />
swWriter.Close();<br />
<br />
m_prsAlgorithm.WaitForExit();<br />
<br />
}<br />
<br />
void prsAlgorithm_OutputDataReceived(object sender, System.Diagnostics.DataReceivedEventArgs e)<br />
{<br />
this.txtOutput.Text += e.Data;<br />
}<br />
the code above couses my program to freeze (just hangs), if i uncomment the code in
<br />
void prsAlgorithm_OutputDataReceived(object sender, System.Diagnostics.DataReceivedEventArgs e)<br />
and comment out the:
<br />
this.txtOutput.Text += e.Data;<br />
it works but it's not thread safe and it only shows me the output when the other process has finished...
any suggestions?
Thanks in advance,
Erik.
|
|
|
|
|
prsAlgorithm_OutputDataReceived<br /> might be executing on a different thread so you need to check and Invoke the UI thread call to transfer the data.
led mike
|
|
|
|
|
hi guys, finally i have something that works:
<br />
<br />
private void RunAlgorithm()<br />
{<br />
m_prsAlgorithm = new Process();<br />
<br />
m_prsAlgorithm.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;<br />
m_prsAlgorithm.StartInfo.FileName = "Lottery.exe";<br />
m_prsAlgorithm.StartInfo.UseShellExecute = false;<br />
m_prsAlgorithm.StartInfo.RedirectStandardInput = true;<br />
m_prsAlgorithm.StartInfo.RedirectStandardOutput = true;<br />
m_prsAlgorithm.StartInfo.CreateNoWindow = true;<br />
<br />
m_prsAlgorithm.OutputDataReceived += new DataReceivedEventHandler(prsAlgorithm_OutputDataReceived);<br />
m_prsAlgorithm.Start();<br />
<br />
m_prsAlgorithm.BeginOutputReadLine();<br />
<br />
System.IO.StreamWriter swWriter = m_prsAlgorithm.StandardInput;<br />
<br />
swWriter.WriteLine(m_strArgList);<br />
<br />
swWriter.Close();<br />
<br />
m_prsAlgorithm.WaitForExit();<br />
<br />
ProcessExitedCallback pecProcessExited = new ProcessExitedCallback(OnProcessExited);<br />
<br />
m_prsAlgorithm.WaitForExit();<br />
<br />
btnRun.Invoke(pecProcessExited, new object[] { });<br />
}<br />
i've inserted this into a function and called this function in a new thread (from the main thread) and it seems to work like a charm... does anyone know why this solved the problem?
Thanks in advance,
Erik.
|
|
|
|
|
ok this almost solved the problem
The program works perfectly if the process executed runs for a short amount of time,
but if that process works a couple of minutes than it takes a pretty long time for the redirected output to show in the textbox (output in the other process is written continuously while calculating)
any suggestions?
Thanks in advance,
Erik
|
|
|
|
|
I am sorting an array of object arrays (string,int). It will work fine is the string is only one character long, but if it is two it will error. I'm not sure why or how it errors. I have done some testing, but still don't understand how to fix it. Any help is appreciated. Thanks in advance.
private object[,] SortByFirst (object[,] RevAr) {
object[,] NewAr = new object[3,2];
for (int i = 0; i < (RevAr.Length / 2); ++i) {
int NewArLoc = (RevAr.Length / 2);
--NewArLoc;
string TestStr = RevAr[i,0].ToString();
for (int j = 0; j < (RevAr.Length / 2); ++j) {
if (i != j) {
string tempStr = RevAr[j,0].ToString();
int intTest = string.Compare(TestStr, tempStr, true);
if (TestStr.Length < tempStr.Length || (intTest < 0 && tempStr != "")) {
--NewArLoc;
}
}
}
NewAr[NewArLoc,0] = RevAr[i,0];
NewAr[NewArLoc,1] = RevAr[i,1];
}
//MessageBox.Show (NewAr[0,0].ToString() + NewAr[0,1].ToString() + "\n" + NewAr[1,0].ToString() + NewAr[1,1].ToString() + "\n" + NewAr[2,0].ToString() + NewAr[2,1].ToString());
//MessageBox.Show (NewAr[2,0].ToString());
return NewAr;
}
The inital array could look like
{ {"A",0} {"C",6} {"B",12} }
This array would work, and would be returned like
{ {"A",0} {"B",12} {"C",6} }
ps. I don't know how to post code correctly still, so sorry for the way my post looks.
Tim
|
|
|
|
|
What error message do you get?
If you use framework 2.0 you could use a sorted dictionary instead:
SortedDictionary<string, int> items = new SortedDictionary<string, int>();<br />
items.Add("A", 0);<br />
items.Add("C", 6);<br />
items.Add("B", 12);
Voila. Sorted.
---
b { font-weight: normal; }
|
|
|
|
|
It doesn't really stop the code, it's just that the finished product isn't correct if the string has more than one character. I'm still on framework 1.1.
This code is use to update revision levels. So if the current revision is A, the new one is B. So if the current one is Z, the new one is AA. We show three revision levels on our drawings. Sometimes they are in the correct order, and sometimes they are not, so I'm sorting them first before I update the revisions.
So say I have revisions 'AA', 'Z', 'Y' (in order top to bottom). It will say that the new revision is 'Z' and will order them 'Z', 'Y', 'Z', in this order from top to bottom, when it should be 'AB', 'AA', 'Z'.
This is why I'm thinking something is wrong in the sorting code I posted.
Tim
|
|
|
|
|
If you want to sort them in that way, you have to first compare the length of the strings, then compare the values. If you just compare the values, "AA" comes before "Z".
---
b { font-weight: normal; }
|
|
|
|
|
I thought that is what I was doing here, and I wrong?
int intTest = string.Compare(TestStr, tempStr, true);
if (TestStr.Length < tempStr.Length || (intTest < 0 && tempStr != "")) {
--NewArLoc;
}
I saying that the NewArLoc is equal the to the length of the array minus one. Then if the length of the string I'm working with 'TestStr' is shorter that the one I'm testing it against 'tempStr', or the value is less (value from string.Compare), then minus one. I want the lowest string value to be first in the array.............
I see what you mean now. Let me see what I can come up with. My test line isn't correct. It will test the length, and then if 'TestStr' is longer, then it will test the value of the compare, which it shouldn't. I will have to rewrite that part.
Thanks.
Tim
|
|
|
|
|
Thanks Guffa. Here is how I solved it, incase only looks at this.
int intTest = string.Compare(TestStr, tempStr, true);
if (TestStr.Length < tempStr.Length || (intTest < 0 && tempStr != "" && TestStr.Length == tempStr.Length)) {
--NewArLoc;
}
This is the portion I added to my check.
&& TestStr.Length == tempStr.Length
Tim
|
|
|
|
|
You can make it a bit more efficient by only doing the compare when needed, and check the length of tempStr instead of comparing it to an empty string:
if (TestStr.Length < tempStr.Length || (TestStr.Length == tempStr.Length && tempStr.Length > 0 && string.Compare(TestStr, tempStr, true) < 0)) {<br />
NewArLoc--;<br />
}
As the condition is evaluated using shortcut, the compare is only done if the lengths are equal and tempStr is not empty.
---
b { font-weight: normal; }
|
|
|
|
|
True. Thanks of the tips Guffa. I'm just starting, so help/tips are always appreciated.
Tim
|
|
|
|
|
How would one implement the "save value, and restore on leaving scope" mechanism in C#
i.e. the one you do in C++ as:
class IntSaver
{
public:
CIntSaver(int & i) : m_orgValue(i), m_ptr(&i) {}
~CIntSaver() { *m_ptr(m_orgValue) {}
private:
int m_orgValue;
int * m_ptr;
}
void Foo()
{
CIntSaver sve_(Repunkulator.CurrentPosition);
Repunkulator.CurrentPosition = rand();
}
IDisposable and a using (x) { ... } statement?
If so, is the "messing around with the finalizer" and Dispose(bool) still the way to go?
-- modified at 13:02 Tuesday 3rd October, 2006
We are a big screwed up dysfunctional psychotic happy family - some more screwed up, others more happy, but everybody's psychotic joint venture definition of CP
Linkify! || Fold With Us! || sighist
|
|
|
|
|
You can't use a finalizer that way in .NET, as the finalizer isn't called when the object goes out of scope, but rather when the object is being taken care of by the garbage collector.
IDisposable and using would work. Then you would restore the value in the Dispose method.
The finalizer is usually used as a backup for the disposal, so that the object will be cleaned up when it's collected in case the programmer failed to call Dispose. In this particular case you would probably not want to do anything in the finalizer. If the programmer fails to use the class correctly, it would probably cause more confusion if you change the value back at a later, more or less randomly chosen, time.
You would implement the class for a reference type instead of an int. If you stored a pointer to an int, you would have to make sure that the int stayed pinned in memory while the class exists. For a local variable in a method that would not be a problem as it resides on the stack, but for a member of a class it would, as the garbage collector may move objects around at any time. If you use a reference to an object instead of a pointer that is not a problem, as the reference would be updated if the object moves.
---
b { font-weight: normal; }
|
|
|
|
|
I have a program that need to call a function in another application. How can I do it?
Thanks,
Leo
|
|
|
|
|
In what language is the other program writen? Does it exposes any public methods trough a DLL?
--------------------------------------------------------
My portfolio & development blog
Q:What does the derived class in C# tell to it's parent?
A:All your base are belong to us!
|
|
|
|
|
The answer depends on the other application. Is it a .NET application? Is it a native application? Does it use COM?
|
|
|
|
|
I have been searching around for about 2 hours and decided to resort to posting a question. Sorry because I know this question has to of been answered before.
Ok....so my question is how do i manipulate a number so that it is a multiple of 10....
such as .... 57 = 60
The number 57 would go to the number 60.
To my knowledge I would use the Math.Something, but I searched through the C# variables and did not find anything that would work.
Anyhelp would be greatly appreciated.
|
|
|
|
|
Well, there's Math.Round, but you may have to do a little work to get what you want:
double multiple = 10;
double value = 57;
double result = Math.Round(value / multiple) * multiple;
Console.WriteLine(result);
|
|
|
|
|
Ok, thank you for your response.
I knew there had to be a way to use Math.Round and get the answer, but i wasn't clever enough to think of your equation. Thanks for the response maybe now I'll be able to finish my homework.
|
|
|
|
|