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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Собственное расширение как? ...незнал в какой раздел писаь, звиняйте 
:(
    Опции темы
st4lk3r0k
  Дата 30.12.2006, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Народ, давно уже хотел спросить но както руки не доходили... теперь держитесь я дорвался smile
Вообщем задача такая надо создать файлик с собственным расширением, но так чтобы его  NotePad прочесть не смог
и чтобы данные в нём хранились как в БД (База данных). В сети ответа на этот вопрос не нашёл... наверно плохо искал но всёже какие есть для этого решения smile и на затравку ещё 1 вопросик: если возможно то дайте какойнить наипростейший пример ежедневника smile.
--------------------
- Чем вы занимаетесь на работе? - Я специалист по ускоренной релокации средств размножения... - Это как? - Х%и пинаю...
PM MAIL   Вверх
Laprado
Дата 30.12.2006, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Тогда не расширение, а формат. Чтобы блокнот не прочитал так просто используй шифрование с открытым ключом. Если серьезно, то серелизация тебе наверно подойдет. Тут в форуме поищи были примеры.

Код

using System;    
using System.IO;    
using System.Runtime.Serialization.Formatters.Binary;    
[Serializable] //вот ОНО! самое важное!    
public class MyClass //класс, к-й мы будем писать в файл    
{    
    private int i;    
    public string[] Strings;    
     
    public int I //создали проперти    
    {    
  get    
  {    
    return this.i;    
  }    
  set    
  {    
    this.i = value;    
  }    
    }    
     
    public MyClass() //конструктор. :)    
    {    
  this.i=1;    
  Strings = new string[2]{"Hi!","That's all!"};    
  return;    
    }    
}    
public class Test //класс, к-й демонстрирует работу всего этого дела    
{    
    public static void Main()    
    {    
  MyClass objectOfMyClass = new MyClass();    
  objectOfMyClass.I=7; //чтоб не по умолчанию. :)    
  Console.WriteLine("Before writing to file:");    
  Console.WriteLine("I="+objectOfMyClass.I);    
Console.WriteLine("Strings: \""+objectOfMyClass.Strings[0]+"\" \""+objectOfMyClass.Strings[1]+"\"");  //это одна строка - просто не поместилась    
  Console.WriteLine("Writing to file..");    
// запишем объект в файл    
  FileStream stream = File.Create("SomeFile.dat"); //создаем поток    
  BinaryFormatter formatr = new BinaryFormatter(); //создаем форматер для записи/чтения нашего класса. Используется двоичный способ.    
  formatr.Serialize(stream, objectOfMyClass); //это "запись" объекта в файл    
  stream.Close();    
  Console.WriteLine("Done.");    
  Console.WriteLine("Reading from file..");    
// а теперь прочитаем что написали    
  stream = File.OpenRead("SomeFile.dat");    
  MyClass GotClass = (MyClass)formatr.Deserialize(stream); //"чтение " объекта из файла.    
  stream.Close();    
  Console.WriteLine("Done.");    
  Console.WriteLine("Read from file:");    
//показываем что в прочитанном класе    
  Console.WriteLine("I="+GotClass.I);    
  Console.WriteLine("Strings: \""+GotClass.Strings[0]+"\"  \""+GotClass.Strings[1]+"\"");    
  Console.Read();    
    
  return;    
    }    
}




[NonSerialized]    
int j=5;













using System;    
using System.IO;    
using System.Runtime.Serialization.Formatters.Binary;    
............................    
............................    
[Serializable]    
class Mytype    
{    
    public int param1=1;    
    public int param2=2;    
    public Image[] param3=new Image[2];    
     
    public void save()    
    {        
  FileStream fs = new FileStream("data.dat",FileMode.Create);    
  BinaryFormatter bf = new BinaryFormatter();    
  bf.Serialize(fs,this);    
  fs.Close( );       
  return;    
    }    
    
    public Mytype load()    
    {    
  FileStream fs = new FileStream("data.dat",FileMode.Open);    
  BinaryFormatter bf = new BinaryFormatter( );    
  Mytype myobj = (Mytype) bf.Deserialize(fs);    
  fs.Close();    
  return myobj;    
    }    
}    
...................................    
...................................

Mytype d = new Mytype();    
.........................................    
//Загружаем так:    
d=d.load();    
.........................................    
//А сохраняем так:    
d.save();
  
--------------------
PM MAIL   Вверх
st4lk3r0k
Дата 30.12.2006, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Laprado, За пример огромный пасб smile 

тока зачем это надо? smile
Код

    ...
    public int param1=1;    
    public int param2=2;    
    public Image[] param3=new Image[2]; 
    ...


Как я понял Сериализация это чтоб файл не прочли люди которые программировать не умеют smile
а что делать с теми кто умеет? smile ведь кто угодно может написать программку для чтения Сериализиранного (вроде правильно smile )
файлика? или я не прав? 

и как быть с файлом типо БД. 

мне надо чтобы значения хранились так:

[Users] // имя таблицы
ID | UserName | Age | Location...

причём у юзера должна быть возможность создавать несколько "таблиц", изменять/удалять добовлять новые поля (UserName| Age...) итд.
как такое реализовать? надо именно файликом чтобы его можно было хотяб на флэшке таскать smile

З.Ы.
Сорри, граматика у меня хромает я ещё в 13 лет из россии уехал smile
--------------------
- Чем вы занимаетесь на работе? - Я специалист по ускоренной релокации средств размножения... - Это как? - Х%и пинаю...
PM MAIL   Вверх
Laprado
Дата 30.12.2006, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Нет, серилизация нужна для сохранения значений всех объектов в классе (переменных и пр.). Прочитать конечно можно, но надо тогда знать все типы переменных и их кол-во, чтобы сделать десерилизацию, только лишь посмотря блокнот. Это далеко не быстро может быть.

Можно сделать через xml-файл. Работать с ним не напрямую, а через DataSet - c ним можно работать, как с обычной базой данных. В XML сама все сохранит. Только прочитать такой файл еще проще будет. Если нужно полная секретность, то шифрование. Примера щас под рукой нет, но тут в форуме это обсуждалось.
--------------------
PM MAIL   Вверх
st4lk3r0k
Дата 30.12.2006, 23:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Laprado @  30.12.2006,  22:52 Найти цитируемый пост)
Нет, серилизация нужна для сохранения значений всех объектов в классе (переменных и пр.).


Тоесть если я хАчу чтобы программа запоминала значения нужных мне переменных то Сериализация это то что нужно?


Цитата(Laprado @  30.12.2006,  22:52 Найти цитируемый пост)
Можно сделать через xml-файл.


Не, нужна секретность smile я в файл буду записывать места куда дед водку прячет... если бабка доберётся всё, пиши пропало! 
(у меня бабушка крутой хакер  smile )

Добавлено @ 23:57 
А насчёт шифрования я тут ещё покопаюсь smile если вдруг пример подвернётся скинь плиз.
--------------------
- Чем вы занимаетесь на работе? - Я специалист по ускоренной релокации средств размножения... - Это как? - Х%и пинаю...
PM MAIL   Вверх
Laprado
Дата 31.12.2006, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата

Тоесть если я хАчу чтобы программа запоминала значения нужных мне переменных то Сериализация это то что нужно?


Да.

Вот с шифрованием нужно аккуратнее, если реализация будет никакой, то бабка твоя узнает еще больше про деда и даже сможет сама говорить ему на подсознательном уровне, куда прятать бутылки. Это я к тому, что можно раскрыть код, узнать как что работает и написать дешифровщик или встроить в исходную программу черный ход. Страшно да? smile Еще страшнее будет, когда рефлектором прогу откроют, как банку консервную и вывалят все содержимое smile 

Вот ссылка на открывашку - рефлектор: http://www.aisto.com/roeder/dotnet 

Но и от него можно защититься, есть программы, которые код до неузнаваемости изменяют. Тут в форуме в теме про безопасность приложений .NET обсуждалось. Сам пока еще не пользовался.
--------------------
PM MAIL   Вверх
st4lk3r0k
Дата 31.12.2006, 00:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



...Бедный дедуФка smile 

Цитата(Laprado @  31.12.2006,  00:19 Найти цитируемый пост)
Еще страшнее будет, когда рефлектором прогу откроют, как банку консервную и вывалят все содержимое  

А если я проект откомпилирую не как консервную банку а как скажем... канистру smile тут рефлектор зубы и обломает smile

а если серьёзно то некоторые и получив код на томже ПХП не могут понять как там и что smile
ведь тотже VBulletun (forum) нормально занулить могут не многие smile

Вообщем для ежедневника и простого шифрования хватит smile 

Да кстати рас уш мы всётаки ушли на тему безопастности то сразу спрошу реальноли 
Цитата(Laprado @  31.12.2006,  00:19 Найти цитируемый пост)
 есть программы, которые код до неузнаваемости изменяют

на C# написать такую программу ? smile это так... для справки о возможностях языка smile 

а по безопастности вопрос такой:
Как она вообще реализуется в софте?
Где можно почитать о "правильном кодинге"?
Раньше я кодал на ПХП тоесть и представление о безопасности оттудаже smile какие тут отличия?

..............................................................
и всётаки нафига эти 
Код

    ...
    public int param1=1;    
    public int param2=2;    
    public Image[] param3=new Image[2]; 
    ...


строки (взято из примера smile )

Добавлено @ 00:55 
...чёто я со смайликами разошёлся...  smile 
--------------------
- Чем вы занимаетесь на работе? - Я специалист по ускоренной релокации средств размножения... - Это как? - Х%и пинаю...
PM MAIL   Вверх
Exception
Дата 31.12.2006, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(st4lk3r0k @  31.12.2006,  01:54 Найти цитируемый пост)
и всётаки нафига эти 
Код

    public int param1=1;    
    public int param2=2;    
    public Image[] param3=new Image[2]; 
    ...


строки (взято из примера)


Так не пустой же класс мы сериализуем smile . Это просто какие-то данные, которые восстанавливаются из файла после десериализации.
PM   Вверх
st4lk3r0k
Дата 1.1.2007, 01:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Exception, ппасиб! !  С новым годом!!! (ну это для всех)
 smile  smile 
--------------------
- Чем вы занимаетесь на работе? - Я специалист по ускоренной релокации средств размножения... - Это как? - Х%и пинаю...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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