Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Чтение массива объектов из файла 
V
    Опции темы
pwdan
Дата 7.10.2010, 08:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 4.4.2010

Репутация: нет
Всего: нет



Здравствуйте. Задача такова: загрузить данные о каждом объекте из текстового файла и добавить эти объекты в массив. Проблема в том, что не создается массив объектов( Заранее спасибо.

 
Код

 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace pop
{
    public class Data
    {
        public string Login;
        public string Password;
    }
 
    public class Zapisi
    {
        public Zapisi()
        {
            Zap = new Data[Size];
            for (int i = 0; i < Zap.Length; i++)
            {
                Zap[i] = new Data();
            }
        }
 
        public const int Size = 100;
        public Data[] Zap;
 
        public Data Info(string login, string password)
        {
            Data inf=new Data();
            inf.Login=login;
            inf.Password=password;
            return inf; 
        }
 
        public void Add(Data info, int i)
        {
            Zap[i].Login = info.Login;
            Zap[i].Password = info.Password;
        }
    }
 
    class File
    {
        public void ReadFile(Zapisi Z, out int kol)
        {
            Z = new Zapisi();
            string Str;
            int count = 0;
            string Filename ="lp.txt";
            System.IO.FileStream stream = System.IO.File.Open(Filename, System.IO.FileMode.Open, System.IO.FileAccess.Read);
            if (stream != null)
            {
                System.IO.StreamReader reader = new System.IO.StreamReader(stream);
                while ((Str = reader.ReadLine()) != null)
                {
                    string log = "", pas = "";
                    char[] LogArray;
                    char[] PasArray;
                    string StrNew;
                    LogArray = new char[20];
                    PasArray = new char[20];
 
                    Str.CopyTo(0, LogArray, 0, Str.IndexOf(' ', 0));
                    for (int i = 0; i <Str.IndexOf(' ', 0); i++)
                    {
                        log = log + LogArray[i];
                    }
                    StrNew = Str.Remove(0, Str.IndexOf(' ', 0) + 1);
                    StrNew.CopyTo(0, PasArray, 0, StrNew.IndexOf(';', 0));
                    for (int i = 0; i <StrNew.IndexOf(';', 0); i++)
                    {
                        pas = pas + PasArray[i];
                    }
                    Data Info = new Data();
                    Info.Login = log;
                    Info.Password = pas;
                    Z.Zap[count]=Info;
 
                    count++;
                }
                stream.Close();
            }
            kol = count;
        }
    }
 
    class General
    {
        public void Table(Zapisi Zapis, int kol_vo)
        {
            Zapis = new Zapisi();
            for (int i = 0; i < kol_vo - 1; i++)
            {
                Console.WriteLine("{0} {1}", Zapis.Zap[i].Login, Zapis.Zap[i].Password);
            }
 
        }
    }
 
    class Program
    {
        static void Main()
        {
            File f = new File();
            Zapisi Zapi=new Zapisi();
            int c;
            f.ReadFile(Zapi, out c);
            General g = new General();
            g.Table(Zapi, c);
            Console.ReadLine();
        }
    }
}


PM MAIL   Вверх
Fortnox
Дата 7.10.2010, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 31.10.2008
Где: Ростов-на-Дону

Репутация: 2
Всего: 22



В строке 47 вы создаете заново класс Zapisi:
Код

Z = new Zapisi();

и в строке 92:
Код

Zapis = new Zapisi()

Поэтому массив записей Zap будет пустым.
Уберите данные строчки.
PM MAIL   Вверх
mrbrooks
Дата 7.10.2010, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 17
Всего: 306



жесткачь. автор, почему бы не использовать сериализацию?
PM MAIL   Вверх
pwdan
Дата 7.10.2010, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 4.4.2010

Репутация: нет
Всего: нет



Fortnox, спасибо.
PM MAIL   Вверх
Fortnox
Дата 8.10.2010, 00:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 31.10.2008
Где: Ростов-на-Дону

Репутация: 2
Всего: 22



pwdan, за спасибо конечно благодарю. Но стоит обратить внимание и на сообщение mrbrooks. 
Также возникает ощущение, что вы после С++ "пересели" на C#. Так как, я бы сделал так на скорую руку, например:
Код

struct Record
    {
        public string Username { get; set; }
        public string Password { get; set; }
    }

    public class Data
    {
        private List<Record> m_records;

        public Data()
        {
            m_records = new List<Record>();
        }

        public void Read(string file)
        {
            using (StreamReader sr = new StreamReader(file))
            {
                while (!sr.EndOfStream)
                {
                    string str = sr.ReadLine();
                    Record rec = new Record() { 
                        Username = str.Split(' ')[0], 
                        Password = str.Split(' ')[1] 
                    };
                    m_records.Add(rec);
                }
            }
        }

        public void Print()
        {
            foreach (Record r in m_records)
            {
                Console.WriteLine(string.Format("Username: {0}\tPassword: {1}", 
                    r.Username, r.Password));
            }
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            Data d = new Data();
            d.Read("Data.txt");
            d.Print();
            Console.ReadLine();
        }
    }


Это сообщение отредактировал(а) Fortnox - 8.10.2010, 00:30
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0454 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.