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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Считывание пути с реестра, Считывание занесенного пути в реестр 
:(
    Опции темы
Сарт
Дата 18.2.2007, 02:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Возникла проблема. Балуюсь с С#. Храню путь к txt файлу в реестре(ногами не бить). При введение иного пути срабатывает блок catch, ошибка-нету доступа к диску C, как бы я ни извращался. Народ, помогите кто может, ибо мозги кипят.
Предлагать хранить настройки не в реестре не предлагать=) Именно так хочу сделать=)
Код приложения:
Код

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using Microsoft.Win32;

namespace PhoneBook
{
    public partial class MainForm : Form
    {

        private  string path = @"PhoneBase.txt";
        private string pathSave;
        Color currColor = Color.Tomato;
        RegistryKey regKey = Registry.CurrentUser;
        public MainMenu MMenu;
        public MainForm()
        {
            InitializeComponent();
            CenterToScreen();
            MMenu = new MainMenu();
            MenuItem miFile = MMenu.MenuItems.Add("&File");
            MenuItem miHelp = MMenu.MenuItems.Add("&Help");
            miFile.MenuItems.Add(new MenuItem("Exit", new EventHandler(this.FileExit_Clicked), Shortcut.CtrlX));
            miHelp.MenuItems.Add(new MenuItem("About", new EventHandler (this.HelpAbout_Clicked),Shortcut.CtrlA));
            this.Menu = MMenu;
            BackColor = currColor;
            regKey = regKey.CreateSubKey("Software\\CapmCorporation\\PhoneBook");
            path = (string)regKey.GetValue("CurrPath",pathSave);
           
            
        }
        
       private void Form1_Load(object sender, EventArgs e)
        {
              
              try
              {
                  using (StreamWriter FileCreate = File.CreateText(path))
                  { }
              }
           catch
             {
                MessageBox.Show("Error creating file 'PhoneBase.txt'. May be you have no permission to create file. Change the path for file");
              }
        }
        

        private void SearchButton_Click(object sender, EventArgs e)
        {

        }

        private void SaveButton_Click(object sender, EventArgs e)
        {
           pathSave = EditPath.Text;  
           regKey = regKey.CreateSubKey("Software\\CapmCorporation\\PhoneBook");
           regKey.SetValue("CurrPath",pathSave);
           

        }

        private void ExitButton_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
        private void FileExit_Clicked(object sender, EventArgs e)
        {
            this.Close();
        }
        private void HelpAbout_Clicked(object sender, EventArgs e) 
        {
            MessageBox.Show("Programm version 1.00.This programm was made by Capm. All your wishes and regards mail to [email protected]. Thank you");
        }
    }
}

--------------------
[color=purple][/color]Died.Of course, System.StackOverflow 
PM MAIL   Вверх
mr.DUDA
Дата 18.2.2007, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



Цитата(Сарт @  18.2.2007,  01:06 Найти цитируемый пост)
ошибка-нету доступа к диску C

Уверен, именно такая ошибка ? Если точно да, то действительно нет доступа на запись в С:, или юзается Compact Framework.


--------------------
user posted image
PM MAIL WWW   Вверх
Сарт
Дата 18.2.2007, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Точно=)
Причем возникает ошибка в блоке
Код

 try
              {
                  using (StreamWriter FileCreate = File.CreateText(path))
                  { }
              }



сама ошибка
Access to the path 'C:\' is denied.

Если заккоментить
Код

            regKey = regKey.CreateSubKey("Software\\CapmCorporation\\PhoneBook");
            path = (string)regKey.GetValue("CurrPath",pathSave);



или прописать жестко путь 
Код

try
              {
                  using (StreamWriter FileCreate = File.CreateText("C:\\1.txt"))
                  { }
              }



то ошибка исчезает. Но тада не делается то что мне нуна....

[/code]

--------------------
[color=purple][/color]Died.Of course, System.StackOverflow 
PM MAIL   Вверх
mr.DUDA
Дата 18.2.2007, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



Дык путь к файлу не может быть C:\, файл с таким именем создать нельзя smile
Вместо
Код
StreamWriter FileCreate = File.CreateText(path)


надо:
Код
StreamWriter FileCreate = File.CreateText(Path.Combine(path, "1.txt"))


Добавлено @ 13:38 
Переместил в общие вопросы, ближе по теме.


--------------------
user posted image
PM MAIL WWW   Вверх
Сарт
Дата 18.2.2007, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



неа=) не получается.....
No overload for method 'CreateText' takes '2' arguments
    
--------------------
[color=purple][/color]Died.Of course, System.StackOverflow 
PM MAIL   Вверх
mr.DUDA
Дата 18.2.2007, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



Цитата(Сарт @  18.2.2007,  13:01 Найти цитируемый пост)
No overload for method 'CreateText' takes '2' arguments

Покажи исходник, похоже ты смешал в кучу мой совет и свой вариант.


--------------------
user posted image
PM MAIL WWW   Вверх
Сарт
Дата 18.2.2007, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Исходник выложил вначале темы=)
Просто вместо
Код

  try
              {
                  using (StreamWriter FileCreate = File.CreateText(path))
                  { }
              }


поставил
Код

  try
              {
                  using (StreamWriter FileCreate = File.CreateText(path,"PhoneBase.txt"))
                  { }
              }


Ну и вот весь исходник еще раз=)
Код

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using Microsoft.Win32;

namespace PhoneBook
{
    public partial class MainForm : Form
    {

        private  string path = "PhoneBase.txt";
        private string pathSave;
        Color currColor = Color.Tomato;
        RegistryKey regKey = Registry.CurrentUser;
        public MainMenu MMenu;
        public MainForm()
        {
            InitializeComponent();
            CenterToScreen();
            MMenu = new MainMenu();
            MenuItem miFile = MMenu.MenuItems.Add("&File");
            MenuItem miHelp = MMenu.MenuItems.Add("&Help");
            miFile.MenuItems.Add(new MenuItem("Exit", new EventHandler(this.FileExit_Clicked), Shortcut.CtrlX));
            miHelp.MenuItems.Add(new MenuItem("About", new EventHandler (this.HelpAbout_Clicked),Shortcut.CtrlA));
            this.Menu = MMenu;
            BackColor = currColor;
            regKey = regKey.CreateSubKey("Software\\CapmCorporation\\PhoneBook");
            path = (string)regKey.GetValue("CurrPath",pathSave);
           
            
        }
        
       private void Form1_Load(object sender, EventArgs e)
        {
              
              try
              {
                  using (StreamWriter FileCreate = File.CreateText(path,"PhoneBase.txt"))
                  { }
              }
           catch
             {
                MessageBox.Show("Error creating file 'PhoneBase.txt'. May be you have no permission to create file. Change the path for file");
              }
        }
        

        private void SearchButton_Click(object sender, EventArgs e)
        {

        }

        private void SaveButton_Click(object sender, EventArgs e)
        {
           pathSave = EditPath.Text;  
           regKey = regKey.CreateSubKey("Software\\CapmCorporation\\PhoneBook");
           regKey.SetValue("CurrPath",pathSave);
           

        }

        private void ExitButton_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
        private void FileExit_Clicked(object sender, EventArgs e)
        {
            this.Close();
        }
        private void HelpAbout_Clicked(object sender, EventArgs e) 
        {
            MessageBox.Show("Programm version 1.00.This programm was made by Capm. All your wishes and regards mail to [email protected]. Thank you");
        }
    }
}

--------------------
[color=purple][/color]Died.Of course, System.StackOverflow 
PM MAIL   Вверх
mr.DUDA
Дата 18.2.2007, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

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



Сравним мой код и твой:

Цитата(Сарт @  18.2.2007,  13:52 Найти цитируемый пост)
 using (StreamWriter FileCreate = File.CreateText(path,"PhoneBase.txt"))


Цитата(mr.DUDA @  18.2.2007,  12:37 Найти цитируемый пост)
StreamWriter FileCreate = File.CreateText(Path.Combine(path, "1.txt"))


Теперь ясно ? smile


--------------------
user posted image
PM MAIL WWW   Вверх
Сарт
Дата 18.2.2007, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



 smile 
Только теперь другой вопрос возник=)
Ввожу я допустим в проге D:\1\ (или D:\1.txt ) 
Насколько я понимаю, после сохранения в реестр при следующем запуске должен создаться файл текстовый на диске D:\ Однако нифига=)
 smile  smile 
--------------------
[color=purple][/color]Died.Of course, System.StackOverflow 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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