Click here to Skip to main content
Rate this: bad
good
Please Sign up or sign in to vote.
See more: C#
Good Morning experts,
 
As shown in this image:
http://s2.postimage.org/5ed0wl5tl/issue.jpg[^]
 
I am trying to save the data from a list to a text file. I am successfully righting ti file, but i cannot read from the file as shown in the image. I would really apprieciate all the help and wishing you a Happy new year.
 
Thanks Smile | :)
Posted 30-Dec-12 22:19pm
Edited 30-Dec-12 22:21pm
v2
Rate this: bad
good
Please Sign up or sign in to vote.

Solution 1

Hi the problem is you are checking only once if the tr.readline is null. in your text file after the last item I would believe there is a space
Mr Saliba.
causing it to attempt to read the next one.
 
Also tr readline takes you to the next line so what to do is the following
 
Loop through the items but keep track of the index 0 - 3 (1 to 4 if your prefer
int index = 0;
string value;
while((value = tr.Readline()) != null){
if(index == 1){
 stList[counter].firstname = value;
} else if//. . . . all the cases

}
 
index++;
 
if(index == 4){
index = 1;
}
 
}
 
[Edit]Syntax errors fixed[/Edit]
  Permalink  
v2
Comments
ProgramFOX at 31-Dec-12 4:38am
   
Good solution, +5!
Gilmore Sacco at 31-Dec-12 4:38am
   
hello sir and thx for your quick response. I did understand what are you saying, but the problem is i dont know how many profiles of students does the file contain.
prashant patil 4987 at 31-Dec-12 4:43am
   
5+.... owesome solution
Chona1171 at 31-Dec-12 4:45am
   
Heres what you can do is , if you have 4 lines per student. then I suggest you can use the Readall lines command
 
string[] lines = System.IO.File.ReadAllLines("Filepath");
if(lines.count != 0){ //avoid zero devision error
int studentCount = lines.count /4
}
 
but I would recommadn instead of having diferent lines per block of info is creating comma delimited information
 
firstname, surname, telephone ect
 
so you have 1 student per line, then you can simply use a
Regex.Split(line, ",")
to split the information and read the text like that , much xleaner and less prone to error.
Gilmore Sacco at 31-Dec-12 4:52am
   
thx chonal1171. is it possible to find an example or an article i can read about your solution please?
Gilmore Sacco at 31-Dec-12 4:48am
   
hello again, i read the solution multiple times, i have an idea of what you are saying but still i cannot quite understand it. Can you please explain it again to me?
Chona1171 at 31-Dec-12 7:58am
   
Ok lets say in your text file you have the following file in "c:\myfile.txt":
1, John Smith,054 654 1234
2, Jane Smith,054 654 1235
3, Andrew Smith, 054 654 1236
 
This is comma delimited data in the form: id, fullname, phone number
 
now you wish to break it down so in C# you go
string filename = @"C:\myfile.txt";
string[] fileLines = System.IO.File.ReadAllLines(filename);
foreach(string line in fileLines){
string[] dataBreakdown = System.Text.RegularExpressions.Regex.Split(line,","); //seperating the comma delimited data
Console.WriteLine("ID:"+dataBreakdown[0]+" Full Name: "+dataBreakdown[1] +" Tel: "+dataBreakdown[2];
}
Gilmore Sacco at 31-Dec-12 9:40am
   
I tried this method and it worked great for the purpose you made it. My original purpose is a liitle different. I have iploaded a screenshot. If you can help me it would be fantastic, as i feel very close to finally make it.
http://s1.postimage.org/dfruddoi7/Problem.jpg Thank you very much :)
Chona1171 at 2-Jan-13 0:14am
   
I looked at the error, can you please show me the format of your text file becuase something tells me its not comma dlimited or place a line
 
if(line.Length > 3){
string[] dataBreakdown = System.Text.RegularExpressions.Regex.Split(line,","); //seperating the comma delimited data Console.WriteLine("ID:"+dataBreakdown[0]+" Full Name: "+dataBreakdown[1] +" Tel: "+dataBreakdown[2];
}
after the foreach string
sariqkhan at 31-Dec-12 8:12am
   
can you help me sir fox
http://www.codeproject.com/Questions/519171/showingplusonlyplustheplusfilteredpluscolumnplusin
Rate this: bad
good
Please Sign up or sign in to vote.

Solution 2

When you read from a file by calling ReadLine, you take a line of text from the file, return it, and advance the pointer. So when you discard one of those lines each time you go round the loop by reading a line and checking if it is null, you are both getting out of step, and running out of file.
Suppose your file contains
Name1
Surname1
Address1
Preference1
Name2
Surname2
Address2
Preference2
Name3
Surname3
Address3
Preference3
The entry to your loop reads and discards "Name1", then puts "Surname1" into the Name field, "Address1" into teh Surname feild, "Preference1" into the Address field, and "Name2" into the Preference field.
 
Change the Loop condition:
while (tr.Peek() >= 0)
  Permalink  
Comments
Gilmore Sacco at 31-Dec-12 4:44am
   
hello OriginalGriff,
 
I did try your suggestion but still, the the problem persists.
OriginalGriff at 31-Dec-12 4:53am
   
Is there any chance that you are saving data which may contain newlines? For example, addresses often do - if any single address contains a newline, it will throw out your whole system.
 
Personally, I would store the data a little differently, either as comma separated values or as XML (either of which has facilities to cope with newlines and so forth).
There is a nice article here:
http://www.codeproject.com/Articles/415732/Reading-and-Writing-CSV-Files-in-Csharp
which would make your job a lot easier!
Gilmore Sacco at 31-Dec-12 5:05am
   
hello once again. Yes i quite like the idea of comma separation and i implemented it in the writing part as sugessted by Chona1171. now i shall try and read. I dont thing there is a newline command in the variables. It it true i am using it to display them, but not the variables themselves
OriginalGriff at 31-Dec-12 5:10am
   
Depends where they came from - if at any time they were in a multi-line text box for example, the user can add all teh newlines he wants! :laugh:
Gilmore Sacco at 31-Dec-12 5:13am
   
is it possible? since a am implementing a command line application
OriginalGriff at 31-Dec-12 5:24am
   
Without knowing what code you use to read the data and insert it into the class fields I cannot say! :)
sariqkhan at 31-Dec-12 8:12am
   
can you help me sir
http://www.codeproject.com/Questions/519171/showingplusonlyplustheplusfilteredpluscolumnplusin

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
0 Sergey Alexandrovich Kryukov 598
1 OriginalGriff 280
2 George Jonsson 258
3 CPallini 190
4 Animesh Datta 130
0 OriginalGriff 5,985
1 Sergey Alexandrovich Kryukov 5,341
2 CPallini 4,760
3 George Jonsson 3,400
4 Gihan Liyanage 2,522


Advertise | Privacy | Mobile
Web01 | 2.8.140916.1 | Last Updated 31 Dec 2012
Copyright © CodeProject, 1999-2014
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100