|
I have used a form view, its working well, the thing is how do I get it to display records one under the other instead of paging?
Ferron
|
|
|
|
|
I used a data list control to display all my records, but i have been trying to add paging capability.
Ferron
|
|
|
|
|
I am trying to write some code that will read the contents of a file (C:\Temp\index.html) and replace any smart quotes (“ and ”) with neutral quotes ("). I can find the quotes if I open the file with 1252 encoding, but the replacement does not work. Also, the quotes are found even though they are showing found as values of hex 201C and 201D even though the smart quotes are hex 93 and 94 if I open the file in a hex editor .
using System;
using System.Text;
using System.IO;
namespace EncodingExample
{
class Program
{
static int CharPositions(string data, char[] chars)
{
int count = 0;
int pos = data.IndexOfAny(chars);
while (pos > -1)
{
count++;
Console.WriteLine(" Position: {0}", String.Format("{0:X}", pos));
pos = data.IndexOfAny(chars, pos + 1);
}
return (count);
}
static void Main()
{
string srcFile = @"C:\Temp\bosssystems\index.html";
if (File.Exists(srcFile))
{
char[] chars = { '"', '"' };
char quote = '"';
string data = File.ReadAllText(srcFile, Encoding.GetEncoding(1252));
Console.WriteLine("Before Replacement");
CharPositions(data, chars);
Console.WriteLine();
foreach (char c in chars)
{
data.Replace(c, quote);
Console.WriteLine("Replacing {0}({1}) for {2}({3})", c, String.Format("{0:X}", (int)c), quote, String.Format("{0:X}", (int)quote));
}
Console.WriteLine();
Console.WriteLine("After Replacement");
CharPositions(data, chars);
Console.ReadKey();
}
}
}
}
|
|
|
|
|
When you load the file, the byte codes 0x93 and 0x94 are decoded into the unicode characters with character codes 0x201C and 0x201D.
Does the compiler support unicode in the source code? I would write the characters using escape codes so that I was sure that I got the correct characters:
char[] chars = { '\u201C', '\u201D' };
The replace is probably working just fine, but you are throwing away the result. The Replace method returns the result, and you have to assign it to something, like assigning it to the string variable where you had the input:
data = data.Replace(c, quote);
Despite everything, the person most likely to be fooling you next is yourself.
|
|
|
|
|
Hello again,
I'm wondering, is there a way to have an event set up so that if a registry key is created, accessed or modified in much the same way a FileWatcher works?
Thanks,
Michael Fritzius
|
|
|
|
|
I don't believe so.
Christian Graus
Driven to the arms of OSX by Vista.
|
|
|
|
|
See: http://www.codeproject.com/KB/system/registrymonitor.aspx[^]
...cmk
The idea that I can be presented with a problem, set out to logically solve it with the tools at hand, and wind up with a program that could not be legally used because someone else followed the same logical steps some years ago and filed for a patent on it is horrifying.
- John Carmack
|
|
|
|
|
|
hi,
I'm trying to write a simmple phonebook program in C#,that users can enter name,surname,Email adrs & phone number(I defined a class that has got these elements).this program can also do the searching by Hashtable with the Email key.these information are saved in a text file.but whenever I try to open the text file,the file opens,but I can't do the searching over the items of the list!!the question is how can I get access to the elements of an item?I guess I should define the opened file type,but I don't know how!!so if there is anybody that can help me,I would really appreciate that.tnx
|
|
|
|
|
Hi,
it is not completely clear what your problem is. Some facts for you:
1.
if you have a class Person holding all info regarding a person, then add instances of that class to the listbox (yes a listbox can hold items, not only strings; when they are not strings you must help it in displaying the items though, either by providing your own ToString method, or better yet by performing the painting yourself, i.e. DrawMode=OwnerDraw).
2.
if all info is in memory, it should be easy to find a specific person; Find could be a method inside the Person class, scanning all the existing Person objects (keep a static List of them in the class)
and return one Person, or a List< Person> when one or more matches are found.
3.
if all your persons info is in memory, there is no need to keep a file open at all. You could read the file once to populate the person objects and add them to the listbox, then keep the file closed; when you decide some changes in memory need to be saved to the file, just dump the current person info from memory to the file, overwriting everything that is there (for starters use a different filename, e.g. append current time as HHMMSS so you don't loose it all by mistake).
Luc Pattyn [Forum Guidelines] [My Articles]
- before you ask a question here, search CodeProject, then Google
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get
- use the code block button (PRE tags) to preserve formatting when showing multi-line code snippets
modified on Friday, June 10, 2011 11:26 PM
|
|
|
|
|
hi,
first of all tnx for your consideration.
yes I have a class called person.see,I don't have problem with saving and opening a text file & showing it in a list box.the problem is when I save a text file and close the program (stop it running)
and then run it again and click the Open button it opens the text file,and shows it in the list box,but can't do any searching over the opened file!!!
this is the search code:
private void btnSearch_Click(object sender, EventArgs e)
{
//objPersonArraylist is a hashtable object
if (objPersonArraylist.Contains(txtEmail.Text.ToLower()) == true)
{
//person is my class
MessageBox.Show("The person is :" + ((Person)objPersonArraylist[txtEmail.Text.ToLower()]).FullName, "Found!");
}
else
{
MessageBox.Show("No such person exist in the list!", "Not Found!", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
and this is the Open file code:
private void btnOpen_Click(object sender, EventArgs e)
{
string at="@";
openFileDialog1.Title = "Open A Text File";
openFileDialog1.Filter = "Text File(*.txt)|*.txt|All Files(*.*)|*.*";
openFileDialog1.FilterIndex = 1;
openFileDialog1.InitialDirectory = "C:\\Users\\Golputer\\Documents";
openFileDialog1.DefaultExt = "txt";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
strFileName = openFileDialog1.FileName;
try
{
lstOfNames.Items.Add(System.IO.File.ReadAllText(strFileName));
int what = lstOfNames.FindString(at,-1);
if (what != -1)
{
lstOfNames.SetSelected(what, true);
MessageBox.Show("that's it,found!");
}
else
{
MessageBox.Show("Sorry,item is not here");
}
}
catch
{
MessageBox.Show("Sorry,can't open the file!");
}
}
}
|
|
|
|
|
Hi,
please next time use the "code block" button to publish code, that way you get PRE tags which
provide a background and a monospaced font, and preserve formatting; all this makes it a lot
easier to read and help you.
Nevertheless there are two major errors I could spot:
1.
you are using File.ReadAllText() which returns a single string, hence your listbox contains only one item.
2.
you are using ListBox.Find(string str) which searches for an item STARTING with str, probably
not finding anything (because you only have one item, and it probably does not start with @)
You will need some more code to get your app to do what you want...
BTW: I advise against MessageBox for tracing what is going on, because you can see only one at a
time, once closed they are gone forever, and they soon become very annoying. I recommend you use
Console.WriteLine() instead. That creates a trace log in the output pane of Visual Studio, and does
not stop your thread.
Luc Pattyn [Forum Guidelines] [My Articles]
- before you ask a question here, search CodeProject, then Google
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get
- use the code block button (PRE tags) to preserve formatting when showing multi-line code snippets
modified on Friday, June 10, 2011 11:26 PM
|
|
|
|
|
hi there again.
I guess the first error you spoted is right,I'm using File.ReadAllText() which returns a single string,hence my listbox contains only one item.what should I do to make it not just one item?I mean it reads the text file and returns one item,instead of the several items that there are!!
|
|
|
|
|
Hi,
I am not going to hold your hand and spoon feed you.
There is a lot of documentation available that gives you all the details of the available classes and methods; whatever way you got hold of ReadAllText() is likely to also contain the right methods for your needs.
And if you are new to programming, to .NET or to C# the one and only right way to get started is by buying and studying a book on the subject. That way you get the overall picture, all the basic terminology and information, as well as a lot of examples; all this in a much shorter time than it would take you in any other way.
BTW I do not recommend any particular book, go to the bookstore, look at some, and pick one or two that look promising.
Luc Pattyn [Forum Guidelines] [My Articles]
- before you ask a question here, search CodeProject, then Google
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get
- use the code block button (PRE tags) to preserve formatting when showing multi-line code snippets
modified on Friday, June 10, 2011 11:27 PM
|
|
|
|
|
hi.
tnx for your help.I had searched and read 2 E-books and did'nt find what I was looking for.I studied one,was'nt there either.searched MSDN found something helpful,but not exactly though.I guess I should change the method of my researching.
but thank you,you did help me.
|
|
|
|
|
I recommend you buy and study a real book; downloading and browsing an ebook is no substitute.
Electronic information is fine as reference material, but introductions and tutorials better be
actual books you can read at your leisure; they do cost a few dollars/euros but are worth what you pay for them.
Luc Pattyn [Forum Guidelines] [My Articles]
- before you ask a question here, search CodeProject, then Google
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get
- use the code block button (PRE tags) to preserve formatting when showing multi-line code snippets
modified on Friday, June 10, 2011 11:27 PM
|
|
|
|
|
hi.
well in that case what book do you suggest?would Christian Nagel's be fine?or Andrew Stellman & Jennifer Greene's?I've heard so much about Christian Nagel complete refrence!!is that worthy?
|
|
|
|
|
Hi,
I don't know the books you are mentioning, which does not say anything about those books.
I own one where Nagel is one of many authors.
As I said before: "I do not recommend any particular book, go to the bookstore, look at some, and pick one or two that look promising"
To learn a language or technology, you need an introduction or a tutorial, not a "complete reference".
However you may want to possess a reference book too; it should not be your only book on the subject.
Luc Pattyn [Forum Guidelines] [My Articles]
- before you ask a question here, search CodeProject, then Google
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get
- use the code block button (PRE tags) to preserve formatting when showing multi-line code snippets
modified on Monday, February 9, 2009 3:45 PM
modified on Friday, June 10, 2011 11:27 PM
|
|
|
|
|
I have a windows form program that needs to check records to make sure they are valid, and if so will append the description to the record. In an effort to reduce the impact this has on our database server, I'm loading everything I need into memory using a DataAdapter and filling a DataTable. Now that I have my table filled, I want to go through each item number and search the table to see if it exists...that's where I seem to be stuck. I'm open to other ideas if this isn't the best method. I've considered arraylists, dictionarys, even jagged arrays but couldn't figure out how to iterate through the DataReader to fill the arrays which is why I fell back to the DataTable. Here's what I have so far:
string[] AllContents = File.ReadAllLines(scanner_number);
DataTable dt1 = inv1.get_part_information();
foreach (string s in AllContents)
{
string[] splitup = s.Split(new char[]{}, StringSplitOptions.RemoveEmptyEntries);
<big>DataRow[] row = dt1.Select("'I$PN' = 'CA-106-77'");</big>
string test1 = row[0].ToString();
string test2 = row[1].ToString();
splitup[2] = splitup[2].Remove(8);
splitup[2] = splitup[2].Substring(4, 2) + "/" + splitup[2].Substring(6, 2) + "/" + splitup[2].Substring(0, 4);
textBox1.Text += "...." + s + Environment.NewLine;
}
now, I've hard coded the select string because I'm just trying to figure out how to get the Expression correct. The system appears to find the column correctly, and that is a verified value, however it always fails on the string test line...and watching the datarow in visual studio shows that there is no data in the row.
I've searched around online and did see one forum suggest trying something like this considering I am only ever expecting one row to be returned:
DataRow row = dt1.Select("'I$PN' = 'CA-106-77'")[0]
but this gives me the indexoutofrange exception.
"You're damned if you do, and you're damned if you dont" - Bart Simpson
|
|
|
|
|
Hi,
I'm no DB specialist but did some, so I'll try and help:
1.
itmaster21 wrote: DataRow row = dt1.Select("'I$PN' = 'CA-106-77'")[0]
is bound to fail if no data is found: you can't access row 0 when there are no rows at all.
itmaster21 wrote: DataRow[] row = dt1.Select("'I$PN' = 'CA-106-77'");
seems OK with two comments:
1. it is unfortunate to have special characters in field names, without the dollar sign, the field name should not need single quotes, it could look like DataRow[] row = dt1.Select("name = 'CA-106-77'");
2. you are confusing yourself by calling the result row, it really should be rows indicating you may obtain 0, 1 or any number of rows.
itmaster21 wrote: string test1 = row[0].ToString();
string test2 = row[1].ToString();
is unsafe again: the number of rows returned can be less than 2, in which case one or both index operations would fail with an IndexOutOfRangeException. You need to program more defensively.
itmaster21 wrote: splitup[2] = splitup[2].Remove(8);
Dito. What guarantee do you have splitup holds 3 or more elements?
At the very least, you should put everything in a try-catch construct, and show the entire exception
if and when you get it (that is Exception.ToString, not just Exception.Message).
Hope this helps.
Luc Pattyn [Forum Guidelines] [My Articles]
- before you ask a question here, search CodeProject, then Google
- the quality and detail of your question reflects on the effectiveness of the help you are likely to get
- use the code block button (PRE tags) to preserve formatting when showing multi-line code snippets
|
|
|
|
|
Hello Luc,
Thank you for the response. Well, the splitup string array is actually where I am parsing out a text file I download from a hand held scanner basically containing the item, quantity, and date seperated by spaces. Up until now I've honestly never really worried too much about Exception handling in this stage. I'm a network professional by trade, but when I would work on programming projects like this I generally throw everything together sloppy to "learn" or figure out if I can even do what it is I'm trying to do before going back through and adding my try, catch blocks and writing the user friendly messages when an exception occours. It's probably not good, however, to get into that habbit though, huh? Thanks!
Furthermore, I know it's tricky when you have special characters in the column but this was all designed way before I came on board and I know they're not going to let me change that now
I'll play around with the code a bit and try to repost an update tomorrow.
"You're damned if you do, and you're damned if you dont" - Bart Simpson
|
|
|
|
|
Hi Luc,
I was able to get this to work. Looking at the debugger again, the system see's the column name with double quotes. I was able to get it to find the record by using this search expression:
DataRow[] rows = dt1.Select("[\"I$PN\"] = 'CA-106-77'");
Notice I changed the name to rows! Now I'm going to spend some time writing some try and catches just in the event there are no rows or multiple rows found.
Thanks for all of your help and input!
"You're damned if you do, and you're damned if you dont" - Bart Simpson
|
|
|
|
|
|
Hi Ennis,
That's the really weird part. I've tried enclosing the column in [], and when I do that the debugger throws the error: "Cannot find column named "CA-" which doesn't make any sense to me. Playing around, the only way I can get it to find the column is wrapping single quotes around it.
"You're damned if you do, and you're damned if you dont" - Bart Simpson
|
|
|
|
|
The link suggests that '-' is a special character and must be escaped.
Need software developed? Offering C# development all over the United States, ERL GLOBAL, Inc is the only call you will have to make.
If you don't ask questions the answers won't stand in your way.
Most of this sig is for Google, not ego.
|
|
|
|
|