|
"A foolish consistency is the hobgoblin of little minds" - R W Emerson.
I think it applies quite well to this questioner. Judging by his other posts, he is trying to punch well above his programming weight...You should never use standby on an elephant. It always crashes when you lift the ears. - Mark Wallace
C/C++ (I dont see a huge difference between them, and the 'benefits' of C++ are questionable, who needs inheritance when you have copy and paste) - fat_boy
|
|
|
|
|
You should never use standby on an elephant. It always crashes when you lift the ears. - Mark Wallace
C/C++ (I dont see a huge difference between them, and the 'benefits' of C++ are questionable, who needs inheritance when you have copy and paste) - fat_boy
|
|
|
|
|
Hi guyz.
I am writing a parental control system. This is a C#.NET executable ParentalController.exe and is started as System.Diagnostics.Process.Start. The app is working fine but i don't want the children to stop the ParentalController.exe from Task Manager. I have tried a solution in which another app (guard.exe) is guarding the ParentalController.exe but i dont like this solution theoritically because a clever child can stop both the executables. So i am looking for a solution in which the child just cannot stop the application and its guardian from Task Manager. However the administrator (Parent) can stop both executables.
I hope i have explained the problem properly. Please help me.
Thanks
|
|
|
|
|
If the ParentalController.exe is run under an Admin account, and the children are logged on as Users, they can't kill that process using Task Manager, right?
|
|
|
|
|
Thanks calla !
I am going to try your solution. But how to make a process run under admin account
|
|
|
|
|
You could run it as a Windows Service and choose to run it under LOCAL SYSTEM.
If you start it using System.Diagnostics.Process.Start then use the signature that takes a user name and password as well.
Check this link[^] out.
|
|
|
|
|
Hi, yes initially it was a windows service but then i made it a simple executable. I am going to use the signature solution now. A big thank you to you....
|
|
|
|
|
Hi,
I have only been using C# for a few weeks now and have recently found the following code and adjusted it to read a text file on my PC. It appears to be working as it is printing all of the data as expected to the screen in the following format;
3869;
4758;
7890;
9943;
and so on;
I would like to ask what is the best way to find the nearest value within the .txt file that is above another value. Let's say in the case the value is 4991 then I would like to return the value of 7890 only.
{
readText = File.ReadAllText("C:\\PIn.txt");
string [] split = readText.Split(new Char [] {';'});
foreach (string s in split)
{
count++;
levels[count] = int.Parse(s);
}
Print(readText);
}
As a newbie I really appreciate the help so thank in advance,
suprsnipes
|
|
|
|
|
When you read each value in your file, first check if the value you read is greater than the value you are interested in (in your example 4991). In case it is: calculate the difference between that number and 4991 and store the number and the result in memory in case it is the smallest difference so far. And just loop through all the numbers. In code something like this:
int num = 4991;
int tmp, res = 0;
int? diff = null;
foreach (string s in split)
{
count++;
tmp = int.Parse(s);
levels[count] = tmp;
if (tmp > num)
{
if (diff == null)
diff = num;
if ((tmp - num) < diff)
{
res = tmp;
diff = tmp - num;
}
}
}
Console.WriteLine(res);
Could probably be done in a better way, but you get the idea.
Good Luck!
|
|
|
|
|
|
|
Hi Everyone, I got a question,
I am very much fond of using
string fileContent = File.ReadAllText(fileName)
to read a file. But I found many programmers are using
StreamReader objReader = new StreamReader(fileName);
string fileContent = objReader.ReadToEnd();
objReader.Close();
So, my question, which option is better ? I mean, in what case, I should prefer to use StreamReader over File.ReadAllText() ?
|
|
|
|
|
File.ReadAllText internally makes use of a StreamReader , and is implemented like this:
public static string ReadAllText(string path, Encoding encoding)
{
using (StreamReader reader = new StreamReader(path, encoding))
{
return reader.ReadToEnd();
}
}
So the only real benefit is that it wraps the stream in a using statement and makes for simpler/smaller code.Scott Dorman Microsoft® MVP - Visual C# | MCPD
President - Tampa Bay IASA
[ Blog][ Articles][ Forum Guidelines] Hey, hey, hey. Don't be mean. We don't have to be mean because, remember, no matter where you go, there you are. - Buckaroo Banzai
|
|
|
|
|
Hi Scott,
Thanks for your answer. I see, I did not know that ReadAllText just wraps the StreamReader. So, I can say that, instead of using ReadAllText, it is MORE EFFICIENT to use the StreamReader Directly, because, I can save a function call (1 Stack Operation) by embedding the code block in my codes, Right ?
|
|
|
|
|
That is ridiculous; reading the whole text file will takes orders of magnitude more cycles than performing a single method call, and hence the latter is completely irrelevant.
|
|
|
|
|
To add to what Luc said, a single method call is pretty much irrelevant in the context of a ReadToEnd, but the fact that the wrapper includes the "using" statement to clean up resources isn't. It is too easy to forget that the resources are not immediately freed if you use the stream directly, so if you are reading multiple files, then ReadAllText can result in easier to read code that actually works better and more efficiently despite the additional method call! You should never use standby on an elephant. It always crashes when you lift the ears. - Mark Wallace
C/C++ (I dont see a huge difference between them, and the 'benefits' of C++ are questionable, who needs inheritance when you have copy and paste) - fat_boy
|
|
|
|
|
You're welcome. I think others have pretty much answered this question, but...
The "cost" of the extra method call is negligible, particularly when compared to the readability and safety concerns (it is entirely too easy to not properly wrap the StreamReader in a using statement.
That being said, you do need to consider the size of the file you are reading. Larger files will consume more memory in order to store the entire contents as a string. When C# 4 comes out, you can use the File.ReadLines method, which essentially does the same thing as ReadAllText or ReadAllLines except it returns an IEnumrable<string;> .Scott Dorman Microsoft® MVP - Visual C# | MCPD
President - Tampa Bay IASA
[ Blog][ Articles][ Forum Guidelines] Hey, hey, hey. Don't be mean. We don't have to be mean because, remember, no matter where you go, there you are. - Buckaroo Banzai
|
|
|
|
|
Hi,
ReadAllText and ReadToEnd are very similar.
the real question you should ask yourself is (assuming file size is significant): do I need all data in memory at once? If you do, use ReadAllText; otherwise, use a loop based on StreamReader.ReadLine
|
|
|
|
|
Hi Luc,
Thanks for your answer. So, looks like, ReadAllText is the one I will need as I never found reading part of the file applicable in my whole 10 years programming life, lol If I need to extract some information from a file, I use to Read the whole file and then, use REGEX to get particular information.
Thanks again.
|
|
|
|
|
That is the easy way out, storing all text potentially takes a lot of memory, and Regex is a powerful (i.e. compact) but most often in no way the fastest way to search something. But hey, if that fits your situation, go ahead!
|
|
|
|
|
I prefer a StreamReader in most cases.
You can look at it this way:
The StreamReader is the more general tool and can be used even where the ReadAllText will work.
But ReadAllText may not work in all cases where the StreamReader will.
If you master only one, make it StreamReader.
|
|
|
|
|
Hmm. I need if, I occasionally need goto, and I can build a loop using if and goto; I can't build a general jump out of a for. So I should master goto and forget about for?
|
|
|
|
|
Yes. But that's because you'll be using Assembly. For/while are just syntactic sugar anyway.
But, come to think of it, I learned programming in BASIC and I did learn loops with goto and then advanced to for and didn't get while until I learned Pascal. This served me well when using DCL which has goto but not for/while/etc. A programmer who knows for/while but not how to create them with goto is stunted.
I'm a big proponent of learning the history of programming, not just the latest hot language. If I ever teach programming I hope to impart this background knowledge to the students.
|
|
|
|
|
yes, I did my share of assembly programming. What impressed me most was IBM 360 having an assembly instruction almost equivalent to a printf() statement.
|
|
|
|
|
Luc Pattyn wrote: IBM 360 ... printf()
Which came first?
|
|
|
|