Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Чтение из файлов

2.1K
20 мая 2007 года
госик
98 / / 20.11.2006
Я по-моему уже надоела своими постоянными вопросами :)... бездарность...

Вот функция, по одному из пунктов в меню должны выводится из файла вопросы, пока хотя по МessageBox. Все равно не получается...

Код:
private void menuItem7_Questions(object sender, System.EventArgs e)
{
    string filename = "1.questions";
    load_questions(filename);
}
private void load_questions(/*Stream stream,*/ string filename)
{
           
    FileStream fs;
    try
    {
        fs = new FileStream(filename, FileMode.Open, FileAccess.Read);//, FileShare.Read);
    }
    catch
    {
        MessageBox.Show(filename, "Файл не найден");
        return;
    }
    StreamReader sr = new StreamReader(fs);
    string strLine = "";
    int iLine = 1;
    while (strLine==sr.ReadLine())
    {
        MessageBox.Show("Вопросы"/*, iLine++, strLine*/);
    }
    fs.Close();
}


Значит, файл есть 1.questions. А срабатывает catch - Файл не найден.
По этому даже не могу посмотреть и поделать, чтобы нормально выводились вопросы.
713
21 мая 2007 года
Ap0k
360 / / 13.03.2006
Не буду показывать всех ошибок, работа...
В общем найдите отличия и сделайте выводы:
Код:
private void menuItem7_Questions(object sender, System.EventArgs e)
{
            string filename = "1.questions";
            load_questions(filename);
}
private void load_questions(string filename)
{
            string exe_path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\";
            try
            {
                using (StreamReader sr = new StreamReader(exe_path, Encoding.GetEncoding(1251)))
                {
                    int nLineCounter = 0;
                    while (!sr.EndOfStream)
                    {
                        MessageBox.Show(sr.ReadLine(), string.Format("Вопрос №{0}", ++nLineCounter),
                                        MessageBoxButtons.OK,
                                        MessageBoxIcon.Question);
                    }
                }
            }catch(FileNotFoundException ex)
            {
                MessageBox.Show(filename, "Файл не найден");
            }catch(Exception ex)
            {
                MessageBox.Show(ex.Message, "Oops! Exception thrown");
            }
}
2.1K
21 мая 2007 года
госик
98 / / 20.11.2006
ошибки такие:
1) The type or namespace name 'Assembly' could not be found (are you missing a using directive or an assembly reference?)
2) The type or namespace name 'Encoding' could not be found (are you missing a using directive or an assembly reference?)
3) 'System.IO.StreamReader' does not contain a definition for 'EndOfStream'
713
22 мая 2007 года
Ap0k
360 / / 13.03.2006
1) using System.Reflection;
Namespace: System.Reflection
Assembly: mscorlib (in mscorlib.dll)
2) using System.Text;
Namespace: System.Text
Assembly: mscorlib (in mscorlib.dll)
3) StreamReader.EndOfStream Property
public bool EndOfStream { get; }
Namespace: System.IO
Assembly: mscorlib (in mscorlib.dll)
713
22 мая 2007 года
Ap0k
360 / / 13.03.2006
3) Какая версия dotNet Framework?
это только для второй..

Version Information
.NET Framework
Supported in: 2.0
.NET Compact Framework
Supported in: 2.0
2.1K
23 мая 2007 года
госик
98 / / 20.11.2006
Цитата: Ap0k
1) using System.Reflection;
Namespace: System.Reflection
Assembly: mscorlib (in mscorlib.dll)
2) using System.Text;
Namespace: System.Text
Assembly: mscorlib (in mscorlib.dll)
3) StreamReader.EndOfStream Property
public bool EndOfStream { get; }
Namespace: System.IO
Assembly: mscorlib (in mscorlib.dll)



первые две ошибки я исправила. А вот с третьей что-то не получается... Напишите поподробнее, пожалуйста.

713
23 мая 2007 года
Ap0k
360 / / 13.03.2006
Скорее всего вы работает в Visual Studio 2003, и пишете под платформу Microsoft .NET Framework 1.1.
В этой версии, свойство EndOfStream у класса StreamReader отсутствует, и введено оно начиная со второй версии.
В данном случае достаточно будет поменять условие в цикле чтения данных и написать вместо
while (!sr.EndOfStream) { }
while (sr.BaseStream.Length > sr.BaseStream.Position) { }
2.1K
23 мая 2007 года
госик
98 / / 20.11.2006
блин, я не могу... я так расстраиваюсь, когда ничего не получается. :( :( :( я не знаю, что делать.
у меня выскакивает эксепшен по второму catch.
где нужно файлик 1.questions хранить? у меня он создан как item в solution...
713
24 мая 2007 года
Ap0k
360 / / 13.03.2006
В приведенном мной примере файл должен храниться в директории с исполняемым файлом.
Если exception выстреливает по второму catch - значит это уже не FileNotFoundException, а что-то другое.. приведите код и название исключения с сообщением.
2.1K
24 мая 2007 года
госик
98 / / 20.11.2006
private void load_questions(string filename)
{
string exe_path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\";
try
{
using (StreamReader sr = new StreamReader(exe_path, Encoding.GetEncoding(1251)))
{
int nLineCounter = 0;
while (sr.BaseStream.Length > sr.BaseStream.Position)
{
MessageBox.Show(sr.ReadLine(), string.Format("Вопрос №{0}", ++nLineCounter),
MessageBoxButtons.OK,
MessageBoxIcon.Question);
}
}
}
catch(FileNotFoundException ex)
{
MessageBox.Show(filename, "Файл не найден");
}
catch(Exception ex)
{
MessageBox.Show(ex.Message, "Oops! Exception thrown");
}
}

private void menuItem7_Questions(object sender, System.EventArgs e)
{
string filename = "1.questions";
load_questions(filename);
}

а эксэпшен такой: couldn't find a part of the path "D:\адрес...\bin\Debug"
713
24 мая 2007 года
Ap0k
360 / / 13.03.2006
Прошу прощения, это в моём коде ошибка...
вот тут:
using (StreamReader sr = new StreamReader(exe_path, Encoding.GetEncoding(1251)))
надо так:
using (StreamReader sr = new StreamReader(exe_path + filename, Encoding.GetEncoding(1251)))
Кстати, вы отладчиком пользуетесь?
2.1K
28 мая 2007 года
госик
98 / / 20.11.2006
отладчиком пользуюсь, вот только в визуалке не помогает. Выводится вообще не знаю как. Мне нужно-то чтобы содержимое всего файла нормально вывелось. Надо помучиться еще.
713
28 мая 2007 года
Ap0k
360 / / 13.03.2006
Всего файла в одном сообщении?
2.1K
28 мая 2007 года
госик
98 / / 20.11.2006
да. Но только вы, наверно, чуть-чуть не поняли меня. Мне надо было по нажатию одного из Итемс выводить новую форму, где бы и отображался необходимый текст.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог