Kamilek Opublikowano 28 Sierpnia 2008 Udostępnij Opublikowano 28 Sierpnia 2008 Posiadam nastepujacy plik .txt Agnieszka Rytka;28;30;198;K; Franek Wagner;33;32;200;M; Ada Lada;34;27;157;K; Jurek Rower;94;90;27;M; Jakie operacje wykonac aby to wczytac? Chcialbym to oczywiscie jakos uporzadkowac. I mam pytanie czy najlepiej zeby kazda ta postac bylaby osobna klasa? Bylbym wdzieczny za jakis przyklad, kod wczytywania danych z plikow txt. Nie pogardze takze linkiem do strony (chociaz szukalem). Pozdrawiam Kamil ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Will Opublikowano 28 Sierpnia 2008 Udostępnij Opublikowano 28 Sierpnia 2008 fs = new FileStream("cos.txt", FileMode.Open); byte[] fileBytes = new byte[fs.length]; fs.Read(fileBytes, 0, (int)fs.Length); Console.WriteLine(ASCIIEncoding.ASCII.GetString(fileBytes)); lub StreamReader sr = File.OpenText("cos.txt"); Console.WriteLine( sr.ReadToEnd()); sr.Close(); i jest jeszcze kilka innych sposobów. To tylko 2 przykłady jak można to zrobić. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności Ranmus Opublikowano 28 Sierpnia 2008 Filar Społeczności Udostępnij Opublikowano 28 Sierpnia 2008 Jak wrócę do domu i nie zapomnę, to postaram się nasmarować kod. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Kamilek Opublikowano 28 Sierpnia 2008 Autor Udostępnij Opublikowano 28 Sierpnia 2008 Dzieki Will. :) Zaraz cos pokombinuje :P Ranmus bybym wdzieczny. Zapomnialem jednak dodac zeby kod uwzglednial sredniki, jako przerwa miedzy danymi. Czyli zeby byla klasa. A w niej: Imie nazwisko: Agnieszka Rytka Zmienna 1: 28 Zmienna 2: 30 Zmienna 3: 198 Plec: K Pzdro ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Will Opublikowano 28 Sierpnia 2008 Udostępnij Opublikowano 28 Sierpnia 2008 Może to wyglądać tak, wczytywanie jest analogiczne używasz tylko StreamReader. Resztę danych i odpowiednie zapisanie tego należy do Ciebie, jak chcesz się nauczyć musisz sam kombinować. ;] Możesz zrobić prostą klase: class dane { public string name; public int wiek; } dane klasa=new klasa(); klasa.name="Zenek Stachetnik"; klasa.wiek=234; //potem StreamWriter sw = File.CreateText("plik.txt"); char srednik=';'; //reszta danych analogicznie, //all dane do tablicy i pętla sw.Write(klasa.name); sw.Write(srednik); sw.Write(klasa.wiek); sw.close(); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Kamilek Opublikowano 28 Sierpnia 2008 Autor Udostępnij Opublikowano 28 Sierpnia 2008 Zle mnie zrozumiales :D Nie chodzilo mi o zapisywanie lecz odczytywanie. Czyli zeby byla klasa. A w niej: Imie nazwisko: Agnieszka Rytka Zmienna 1: 28 Zmienna 2: 30 Zmienna 3: 198 Plec: K A to mial byc efekt koncowy :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności Ranmus Opublikowano 28 Sierpnia 2008 Filar Społeczności Udostępnij Opublikowano 28 Sierpnia 2008 btw. Kamilek. To Twój wymyślony format zapisu danych w pliku czy narzucony przez kogoś innego? Właśnie instaluję Visuala C# Express, bo niedawno miałem instalkę, a dosyć dawno w C# kodziłem, więc z pamięci nie uda mi się napisać poprawnie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Kamilek Opublikowano 28 Sierpnia 2008 Autor Udostępnij Opublikowano 28 Sierpnia 2008 Wymyslem to jak pisalem posta bo chyba taki jest czytelny i latwy do edytowania. Spoko i tak dzieki ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Will Opublikowano 28 Sierpnia 2008 Udostępnij Opublikowano 28 Sierpnia 2008 eee... ale co za problem dodać do tej klasy odpowiednie elementy? using System; using System.Collections.Generic; using System.Collections; using System.Linq; using System.Text; using System.IO; namespace dane { class dane { public string m_sImieNazw; public int m_iZmienna1; public int m_iZmienna2; public int m_iZmienna3; public char m_cPlec; public dane(string s_in,int z1, int z2,int z3,char p) { m_sImieNazw=s_in; m_iZmienna1=z1; m_iZmienna2=z2; m_iZmienna3=z3; m_cPlec=p; } } class Program { static void WriteData(ArrayList al,string File) { char prz = ';'; StreamWriter sw = new StreamWriter(File); foreach (dane d in al) { sw.Write(d.m_sImieNazw); sw.Write(prz); sw.Write((char)d.m_iZmienna1); sw.Write(prz); sw.Write((char)d.m_iZmienna2); sw.Write(prz); sw.Write((char)d.m_iZmienna3); sw.Write(prz); sw.Write(d.m_cPlec); sw.Write(prz); } sw.Close(); } static void ReadData(ref ArrayList al, string File) { FileStream sr = new FileStream(File,FileMode.Open); //dane d = new dane(); while(!(sr.Position==sr.Length)) { char[] ch=new char[100]; int i=0; char k = new char(); while (1==1) { k=(char) sr.ReadByte(); if (k == ';') { break; } ch[i] = k; i++; } char prz = new char(); int zm1 = new int(); zm1 = (int)sr.ReadByte(); prz = (char)sr.ReadByte(); int zm2 = new int(); zm2=(int)sr.ReadByte(); prz =(char) sr.ReadByte(); int zm3 = new int(); zm3=(int)sr.ReadByte(); prz = (char)sr.ReadByte(); char znak = new char(); znak=(char) sr.ReadByte(); prz = (char)sr.ReadByte(); string osoba=new string(ch,0,i); al.Add(new dane(osoba, zm1, zm2, zm3, znak)); } sr.Close(); } static void Main(string[] args) { ArrayList nowa = new ArrayList(); dane jeden=new dane("jan hej",1,2,3,'K'); dane dwa = new dane("jan bej", 4, 5, 8, 'M'); nowa.Add(jeden); nowa.Add(dwa); WriteData(nowa, "dane.txt"); ArrayList czyt = new ArrayList(); ReadData(ref czyt, "dane.txt"); foreach (dane d in czyt) { Console.WriteLine(d.m_sImieNazw); Console.WriteLine(d.m_iZmienna1); Console.WriteLine(d.m_iZmienna2); Console.WriteLine(d.m_iZmienna3); Console.WriteLine(d.m_cPlec); } Console.Read(); } } } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Kamilek Opublikowano 28 Sierpnia 2008 Autor Udostępnij Opublikowano 28 Sierpnia 2008 :o Dzieki wielkie :o Teraz juz prawie wszystko wiem :D A ze sie tak zapytam co to jest w tych nawiasach w petlach? foreach (dane d in czyt) foreach (dane d in al) EDIT: a dobra juz wiem ;) dzieki jescze raz :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności Ranmus Opublikowano 28 Sierpnia 2008 Filar Społeczności Udostępnij Opublikowano 28 Sierpnia 2008 @Will: Żeś pojechał z tym kodem nie ma co. :D Ogólnie najłatwiejszy sposób odczytu, to plik xmlowy i wciągnięcie go za jednym zamachem do tablicy w DataSet, utworzonej na podstawie pliku zrodlowego. Dam jednak prostszy do zrozumienia na poczatku przyklad. Nie zrobilem jednak sprawdzania czy dane sa poprawn, to juz zadanie dla Ciebie Kamilek. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace ConsoleApplication1 { class Program { static void Main( string[] args ) { List<Osoba> osoby = new List<Osoba>(); //Stworzenie listy obiektow "osoba" FileStream fs = new FileStream( "dane.txt", FileMode.Open ); StreamReader sr = new StreamReader( fs ); //Wykorzystanie klasy do prostego czytania tekstu while ( sr.EndOfStream == false ) //Wykonuj dopoki odczyt nie dojdzie do konca pliku { string linia = sr.ReadLine(); string[] dane = linia.Split( ';' ); //Rozbij string na tablice stringow przy pomocy separatora ';' string[] personalia = dane[0].Split( ' ' ); // Rozbij imie i nazwisko, glupie Osoba osoba = new Osoba(); // Nowy obiekt klasy Osoba osoba.Imie = personalia[0]; osoba.Nazwisko = personalia[1]; osoba.Zmienna1 = int.Parse( dane[1] ); osoba.Zmienna2 = int.Parse( dane[2] ); osoba.Zmienna3 = int.Parse( dane[3] ); osoba.PlecOsoby = dane[4] == "M" ? Plec.Mezczyzna : Plec.Kobieta; // Operator trojargumentowy osoby.Add( osoba ); } } } public class Osoba { public string Imie; public string Nazwisko; public int Zmienna1; public int Zmienna2; public int Zmienna3; public Plec PlecOsoby; } public enum Plec // Enumeracja do okreslenia nowego typu danych - plec, ktory moze miec tylko dwie wartosci. { Kobieta, Mezczyzna } } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Kamilek Opublikowano 28 Sierpnia 2008 Autor Udostępnij Opublikowano 28 Sierpnia 2008 No ten o wiele schludniejszy skrypcik. Dzieki wam obydwu ;) Ide teraz troche pogrzebac w kodzie. Pozdro ;) O i jeszcze komentarze :D Double THX! :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności Ranmus Opublikowano 28 Sierpnia 2008 Filar Społeczności Udostępnij Opublikowano 28 Sierpnia 2008 Do C# naprawdę polecam dobrą książkę kupić, która choć trochę wprowadzi Cię w zasady użytkowania biblioteki standardowej .NET, bo tam jest tyle klas i obiektów ułatwiających, że głowa mała. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Will Opublikowano 28 Sierpnia 2008 Udostępnij Opublikowano 28 Sierpnia 2008 No ja mam przyzwyczajenia z C++ a tam nie ma takich cudów :P Nie tak łatwo się przyzwyczaić, że można coś zrobić tak łatwo ;) Ale jest jeden niewątpliwy plus, nauka c# po c++ jest banalna ;D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Kamilek Opublikowano 28 Sierpnia 2008 Autor Udostępnij Opublikowano 28 Sierpnia 2008 To jak jestesmy juz przy ksiazkach. Moglbys polecic jakas? Jak uczylem sie podstaw C++ to korzystalem ze Symfoni, Grebosza. Ksiazka napisana banalnie prostym jezykiem. Moze cos podobnego? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Will Opublikowano 28 Sierpnia 2008 Udostępnij Opublikowano 28 Sierpnia 2008 Microsoft® Visual C# 2005 Unleashed Co prawda po ang ale nie piszą 200 stron o pętlach for. Podstawowe dane co musisz wiedzieć i jazda do next tematu a po szczegóły do dokumentacji ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Saus Opublikowano 28 Sierpnia 2008 Udostępnij Opublikowano 28 Sierpnia 2008 http://wysylkowa.pl/ks834767.html Ja kupiłem ta :P Ma chyba kolo 1000 stron ale wszystko jest tak wytlumaczone ze omg. Ogolnie fajne przyklady, porownania i w ogole :P Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Will Opublikowano 28 Sierpnia 2008 Udostępnij Opublikowano 28 Sierpnia 2008 Ale tandeta ;D Szczerze to znając c++ (pisał, że zna) takie tematy można przeglądnąć pobieżnie i przerobić w kilka dni(przeglądając tylko różnice). Przeglądnij sobie spis treści tej podanej przeze mnie wyżej. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Kamilek Opublikowano 28 Sierpnia 2008 Autor Udostępnij Opublikowano 28 Sierpnia 2008 Po angielsku to ja moge sobie opowiadanie przeczytac :P Ale nie ksiazke o programowaniu w ktorej musze zrozumiec sens wlasnie owego programowania. Bardzo niewygodnie by mi sie czytalo :/ Chociaz MSDN czytalem co potrzebowalem. Ale i tak mam czas sie podszkolic narazie 3 kl. gimnazjum. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Will Opublikowano 28 Sierpnia 2008 Udostępnij Opublikowano 28 Sierpnia 2008 Angielski i tak musisz znać a im lepiej go poznasz tym łatwiej będziesz znajdywał informacje. Czy ja wiem? Ja tam raczej wątpię czy masz czas.. Teraz większość czasu pewnie spędzasz na rozrywce a w sumie napisanie prostego programiku trwa dość krótko. Ale aby nauczyć się na prawdę programować zajmie Ci to z 3-4 lata minimum i to ciężkiej pracy. Jako przykład napisze, że wczoraj od 17 do 3 w nocy próbowałem poprawić błąd w moim prostym vfs'ie no i udało się dopiero dziś przed 12 ;) Może czasem szlak trafić... edit: http://www.download25.com/install/free-c-school-e-book.html tu masz dość krótkiego darmowego e-booka na temat c# co prawda w ang ale możesz poćwiczyć. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności Ranmus Opublikowano 28 Sierpnia 2008 Filar Społeczności Udostępnij Opublikowano 28 Sierpnia 2008 Ja nic nie polece, bo nie jestem na biezaco z najnowszymi książkami, a "C# i .NET" jest troszkę starą pozycją, mimo że kultową. Ogólnie w grę wchodzą "C# i .NET", "Język C#. Szkoła programowania" i "C# Programowanie". Ta ostatnia najtańsza, ale i najmniej danych zawiera, pierwsza ciężej napisana, ale jak kodzę w C#, to zawszę mam ją pod ręką, bo świetnie opisane niektóre klasy (korzystałem z niej także przy pisaniu kodu w tym temacie), a drugiej książki nie znam. ps. Nie polecam kupowania książek po angielsku w początkowej fazie nauki danego języka programowania. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Kamilek Opublikowano 28 Sierpnia 2008 Autor Udostępnij Opublikowano 28 Sierpnia 2008 Mowilem o nauce Angielskiego. FCE narazie wystarcza mi. :P Ale no masz racje :) @Ranmus Stokrotne dzieki ;) "C# i .NET" jest troszkę starą pozycją, mimo że kultową. Ale bardziej kultowa czy bardziej stara? :D To skusze sie pewnie na to "Język C#. Szkoła programowania" Mam nadzieje ze dalsza nauka C# sie przyda :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności Ranmus Opublikowano 29 Sierpnia 2008 Filar Społeczności Udostępnij Opublikowano 29 Sierpnia 2008 Kamilek, poczytaj sobie opinie książek na helion.pl. Chodzi o to, że "C# i .NET" (kultowa, bo dobra i ma tytuł bestsellera oraz utrzymywała się przez dłuższy czas w top 10 książek o programowaniu) była pisana w czasie wydania .NET 2.0 beta, oczywiście dwójka jest opisana i niby nie robi różnicy, ale zawsze jest jakiś niedosyt. A nie wiem czy "Język C#. Szkoła programowania", książka nowsza, skupia się także na 2.0 czy też może ma coś opisane z .NET 3.0 czy nawet 3.5? Jeśli nie, to śmiało możesz kupić "C# i .NET" Pamiętaj, .NET 3.0 i .NET 3.5 różnią się od dwójki głównie nowymi bibliotekami, linq, wcf itd., bo silnik wciąż jest ten sam. Natomiast .NET 1.x już są niekompatybilne i porzucone. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Will Opublikowano 29 Sierpnia 2008 Udostępnij Opublikowano 29 Sierpnia 2008 hmm... a czasem w "C# i .NET" nie ma wersji 3.5(nowsze wydanie)? Czytałem kiedyś o tej książce to chyba było 3 lub 4 wydanie. Nie pamiętam czy po polsku ale warto sprawdzić. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Krzysiek Opublikowano 30 Sierpnia 2008 Udostępnij Opublikowano 30 Sierpnia 2008 class Program { static void Main(string[] args) { string[] data = File.ReadAllLines("data.txt"); List<Persona> output = new List<Persona>(); char[] delimiters = { ';' }; foreach (string line in data) { Persona tmp = new Persona(); string[] parsedLine = line.Split(delimiters); tmp.Name = parsedLine[0]; int.TryParse(parsedLine[1], out tmp.Age); int.TryParse(parsedLine[2], out tmp.PartnerAge); int.TryParse(parsedLine[3], out tmp.Height); tmp.Sex = parsedLine[4]; output.Add(tmp); } foreach (Persona singlePerson in output) { Console.Write(singlePerson.ToString()); Console.WriteLine("---------"); } Console.ReadKey(); } } public class Persona { public string Name; public int Age; public int PartnerAge; public int Height; public string Sex; public Persona(): this("N/A", -1, -1, -1, "N/A") { } public Persona(string name, int age, int partnerAge, int height, string sex) { this.Name = name; this.Age = age; this.PartnerAge = partnerAge; this.Height = height; this.Sex = sex; } public override string ToString() { StringBuilder sb = new StringBuilder(); sb.AppendLine("<PERSONA>"); sb.AppendLine("Name: " + this.Name); sb.AppendLine("Age: " + this.Age.ToString()); sb.AppendLine("Partner Age: " + this.PartnerAge.ToString()); sb.AppendLine("Height (cm): " + this.Height.ToString()); sb.AppendLine("Sex (K/M): " + this.Sex.ToString()); return sb.ToString(); } } Trochę na chama wyciągnąłem z programu, ale wiadomo o co chodzi. Przejrzyj statyczne metody klasy File, one oferują pełen zakres możliwości wczytywania danych. A poza tym metoda Split od stringa jest bardzo dobra jeśli masz separator w danej linijce i chcesz rozbić string na array stringów oddzielanych separatorem. Zawartość pliku data.txt to dokładnie to, co podawałeś. Ten przykład jest dość sztywny, tylko na tę okazję. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
sowasas Opublikowano 2 Stycznia 2012 Udostępnij Opublikowano 2 Stycznia 2012 kontynuując wczytywanie plików z txt, czy dałoby rade ten kod trochę przerobić tak aby się dało wczytywać dane zmienno przecinkowe, kombinuje na przeróżne sposoby przerobiłem kod tak by były double ale wyświetla wszystkie jako 0. moja zawartość pliku to np: AASW,20111219,34.47,34.47,34.47,34.47,0 AFAZ,20111219,46.58,46.58,46.58,46.58,0 AI3B,20111219,6.91,6.91,6.91,6.91,0 AI3C,20111219,6.94,6.94,6.94,6.94,0 AIFA,20111219,13.62,13.62,13.62,13.62,0 AIFO,20111219,16.78,16.78,16.78,16.78,0 natomiast kod: class Program { static void Main(string[] args) { string[] data = File.ReadAllLines("D://proba.txt"); List<Notowania> output = new List<Notowania>(); char[] delimiters = { ',' }; foreach (string line in data) { Notowania tmp = new Notowania(); string[] parsedLine = line.Split(delimiters); tmp.Name = parsedLine[0]; double.TryParse(parsedLine[1], out tmp.Date); double.TryParse(parsedLine[2], out tmp.Notowanie_open); double.TryParse(parsedLine[3], out tmp.Notowanie_high); double.TryParse(parsedLine[4], out tmp.Notowanie_low); double.TryParse(parsedLine[5], out tmp.Notowanie_close); double.TryParse(parsedLine[6], out tmp.Volume); if (tmp.Notowanie_close != null) { Convert.ToDouble(tmp.Notowanie_close); } output.Add(tmp); } foreach (Notowania singlePerson in output) { Console.Write(singlePerson.ToString()); Console.WriteLine("---------"); } Console.ReadKey(); } } public class Notowania { public string Name; public double Date; public double Notowanie_open; public double Notowanie_high; public double Notowanie_low; public double Notowanie_close; public double Volume; public Notowania() : this("N/A", -1, -1, -1, -1, -1, -1) { } public Notowania(string name, double date, double nopen, double nhigh, double nlow, double nclose, double vol) { this.Name = name; this.Date = date; this.Notowanie_open = nopen; this.Notowanie_high = nhigh; this.Notowanie_low = nlow; this.Notowanie_close = nclose; this.Volume = vol; } public override string ToString() { StringBuilder sb = new StringBuilder(); sb.AppendLine("<PERSONA>"); sb.AppendLine("Nazwa: " + this.Name); sb.AppendLine("Data: " + this.Date.ToString()); sb.AppendLine("Otwarcie: " + this.Notowanie_open.ToString()); sb.AppendLine("Najwyższe: " + this.Notowanie_high.ToString()); sb.AppendLine("Najniższe: " + this.Notowanie_low.ToString()); sb.AppendLine("Zamknięcie: " + this.Notowanie_close.ToString()); return sb.ToString(); } } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się