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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Счетчик в консоле, передача параметра из функции 
V
    Опции темы
Xeim
Дата 24.9.2008, 19:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Привет всем!
1) Верным ли путем я реализовал имитацию счетчика в консоли? Так принято?
2) Как добиться того, чтобы после изменения i в функции, в программе i тоже обновилась?
Код

using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;

// Написать программу, выводящую в текстовый файл список всех файлов из всех папок на диске C
namespace ConsoleApplication6
{
    class Program
    {
        static void Main(string[] args)
        {
            int i = 1;
            DirectoryInfo di = new DirectoryInfo("c:\\");
            Console.WriteLine("Запишем в файл информацию о файлах в папках в корне диска.");
            Console.Write("Нажмите <Ввод> для продолжения.");
            Console.ReadKey();
            Console.WriteLine("Пожалуйста подождите...        ");
            Dump(di,i); // Это до-о-о-олго          
            Console.Write("Файл готов. Нажмите <Ввод> для выхода.");
            Console.ReadKey();
        }
        public static void Dump(DirectoryInfo di, int i)
        {
            foreach (DirectoryInfo di2 in di.GetDirectories())
            {
                foreach (FileInfo fi in di2.GetFiles())
                {
                    StreamWriter sw = null;
                    string sFileName = "log.txt";
                    FileStream fs = File.Open(sFileName, FileMode.Append, FileAccess.Write);
                    sw = new StreamWriter(fs, System.Text.Encoding.UTF8);
                    sw.WriteLine(fi.FullName);
                    sw.Close();
                    sw = null;
                    Dump(di2,i);
                }
                Console.Write("Счетчик-чик-чик {0}",i);
                Console.SetCursorPosition(0,Console.CursorTop);
                i++;
            }
        }
    }
}

PM MAIL   Вверх
Ram1reS
Дата 24.9.2008, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата

2) Как добиться того, чтобы после изменения i в функции, в программе i тоже обновилась?

Почитай про передачу переменной по значению и по ссылке (by reference и by value), ключевое слово ref.
Также почитай про ссылочные типы и значимые типы.

Грубо говоря будет приблизительно так:
Код

public static void Main(string[] args)
{
  int i = 0;
  Increment(ref i);
  Console.WriteLine(i.ToString()); // i=10
  Console.ReadLine();
}

static void Increment(ref int enlargeMe)
{
  enlargeMe+=10;
}


ЗЫ.Это:
Код

 foreach (FileInfo fi in di2.GetFiles())
                {
                    StreamWriter sw = null;
                    string sFileName = "log.txt";
                    FileStream fs = File.Open(sFileName, FileMode.Append, FileAccess.Write);
                    sw = new StreamWriter(fs, System.Text.Encoding.UTF8);
                    sw.WriteLine(fi.FullName);
                    sw.Close();
                    sw = null;
                    Dump(di2,i);
                }

Лучше так:
Код

FileStream fs = File.Open(sFileName, FileMode.Append, FileAccess.Write);
StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.UTF8);
string sFileName = "log.txt";
foreach(...)
{
 foreach (FileInfo fi in di2.GetFiles())
                {                                    
                    sw.WriteLine(fi.FullName);
                    Dump(di2,ref i);
                }
}
sw.Close();

--------------------
 
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

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


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

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


 




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


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

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