Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Программирование в среде .NET (ASP.NET,ADO.NET) на C#/VB.NET

Автор: May_Johnson
Дата сообщения: 18.04.2011 17:07
moverast
насколько я знаю никак,
для решения вашей проблемы я бы посоветовал руками написать класс настроек и сереализовывать его рядом с вашей программой
Автор: BlackVetal
Дата сообщения: 19.04.2011 05:31
moverast
Попробуйте в свойствах у файла Settings.settings в проекте исправить свойство "Copy to Output Directory" ...
Автор: moverast
Дата сообщения: 19.04.2011 06:16

Цитата:
moverast
Попробуйте в свойствах у файла Settings.settings в проекте исправить свойство "Copy to Output Directory" ...

бесполезно
Автор: Andryshok
Дата сообщения: 19.04.2011 06:25
BlackVetal moverast Не мучьте класс Settings, все равно файлик будет в папке пользователя, тут как вариант либо вариант от May_Johnson либо качните бесплатную сборку Nini , находится
ТУТ , если нужно под Net 4 - перекомпилируйте ее, она с исходниками, и все решится, и будет программа portable, и не только - классу можно указывать расположение ну и само собой имя файла настроек, типа как в delphi
Автор: moverast
Дата сообщения: 19.04.2011 08:25
Andryshok
по твоей ссылке "Not Found"
Автор: Andryshok
Дата сообщения: 19.04.2011 08:30
moverast Ссылку в предыдущем посте исправил, переходите и качайте
Автор: moverast
Дата сообщения: 19.04.2011 10:45
с настройками это первый минус с которым я столкнулся перейдя с delphi на C#. жаль...
Автор: Andryshok
Дата сообщения: 19.04.2011 11:18

Цитата:
с настройками это первый минус с которым я столкнулся перейдя с delphi на C#. жаль...
Я сам перешел на C# , и всем доволен, нужно просто выбросить из головы привычки VCL и все пойдет, хотя тут речь не о переходе впрочем, вы получили новые знания и это большой плюс, ощутите мощь C# и платформы Net., выбирайте язык программирования который наиболее подходит для поставленной задачи.

В конце концов можно самому написать сборку которая будет хранить настройки в XML и читать их от туда (ведь в дотнете рабртать с XML милейшее дело , к слову - за это отвечает класс XmlDocument , подключите - using System.Xml; ), это займет не более 3 часов - и вы получите в распоряжение свой собственный класс и будете на 100 % знать как он работает , не стоит вешать нос и отказываться от поставленной цели из таких мелочей

Вот пример

Код:
string s = Application.StartupPath; - получаем директорию с нашим приложением
XmlDocument spisok = new XmlDocument(); - создаем новый экземляр класса
spisok.Load(s + "\\settings.xml"); - грузим из файла;
делаем тут с ним что угодно.......
Автор: moverast
Дата сообщения: 19.04.2011 11:29
Andryshok
полностью с тобой согласен, просто это первое разочарование после кучи радости от того как прекрасен и удобен C# отказываться я от него не буду)))
Автор: ForposT_ForeveR
Дата сообщения: 19.04.2011 15:23
Здравствуйте.
Работаю с xml в C#. Данный xml в кодировки ANSI.
XmlTextReader reader = new XmlTextReader(@"D:\a.xml");
while (reader.Read())
{
if (reader.Name == "Квалификация")
label1.Text = reader.GetAttribute("Название");
}
В итоге ничего не выводит.
Думаю, что это проблемы с кодировкой. Ибо в xml'ке есть строка <Квалификация Название="начальник"/></Квалификация>
Насколько я понял, код программы в C# пишется в кодировке UTF-16.
Как быть?
Автор: Mextrom
Дата сообщения: 19.04.2011 16:42
ForposT_ForeveR
Пробовали задавать в загловке xml файла его кодировку? например,
Код: <?xml version="1.0" encoding="windows-1251"?>
Автор: ForposT_ForeveR
Дата сообщения: 19.04.2011 16:43
В xml'e всё именно так как Вы написали.
Автор: Mextrom
Дата сообщения: 19.04.2011 20:09
ForposT_ForeveR
Вопрос такой, этот фрагмент
Код: <Квалификация Название="начальник"/></Квалификация>
Автор: amr_now
Дата сообщения: 20.04.2011 06:41
Народ,
помогите, пожалуйста, выбрать перечень файлов с несколькими расширениями из папки.

Пока получился вариант с костылями, но хотелось бы красивее:
Dim ИзФормата As String
Dim fo = New String() {}
Dim fo1 = New String() {}
Dim foCount As Integer = 0
Dim ВходящаяПапка As String

Dim folderBrowserDialog1 As New System.Windows.Forms.FolderBrowserDialog()
folderBrowserDialog1.Description = "Выбор целой папки для конвертирования"
folderBrowserDialog1.ShowNewFolderButton = False
If folderBrowserDialog1.ShowDialog() <> System.Windows.Forms.DialogResult.OK Then Exit Sub
ВходящаяПапка = folderBrowserDialog1.SelectedPath
n = 0
For i = 1 To elements(ИзФормата) 'Количество расширений в строковой переменной
fo1 = My.Computer.FileSystem.GetFiles(ВходящаяПапка, FileIO.SearchOption.SearchTopLevelOnly, "*." + elementAt(ИзФормата, i - 1)).ToArray
ReDim Preserve fo(foCount + fo1.Length - 1)
For j = 1 To fo1.Length
fo(foCount + j - 1) = fo1(j - 1)
Next
foCount += fo1.Length
Next
Автор: ForposT_ForeveR
Дата сообщения: 20.04.2011 20:14
Здравствуйте.
У меня есть XML файл:

Цитата:
<XML .../>
<MAIN/>
<Table1/>
<Tag tochonado="*a1*"/> </Tag>
<Tag tochonado="*a2*"/> </Tag>
<Tag tochonado="*a3*"/> </Tag>
<Tag tochonado="*a0*"/> </Tag>
<Tag tochonado="*a0*"/> </Tag>
</Table1>
<Tag vsyachina="i tut vsyachina"/></Tag>
</MAIN>
</XML>

Необходимо спарсить значение атрибута "tochtonado" тега "Tag", причём нужно всё кроме того, что содержит a0.
Однако, в данном XML файле имеется тег "Tag" в двух местах. Нужен именно тот, который в теге "Table1". Хочу заметить, что в только в искомом теге есть атирибут "tochtonado".

Второй вопрос.
Подскажите, пожалуйста, как узнать у данного тега есть атрибут "attr1"?
Автор: Molniev
Дата сообщения: 20.04.2011 21:16
amr_now, VB практически не знаю, но насколко понял, вы проводите контекацию строки с перечислением?
Почему нельзя сделать самому: перечислить все файлы в папке, и для каждого выполнить сравнение с вашими критериями (расширинием). Совпадает - добавить в список/сделать что-там-надо. несовпадает - пропустить.

Добавлено:
ForposT_ForeveR, штатными средствами для работы с XML для вашего фрагмента никак.
При загрузке дотнет неслабо обламает ошибками о неправильном xml.
Нечто такое он загрузит:

Код: <?xml version="1.0" encoding="windows-1251"?>
<main>
<table1>
<tag tochonado="*a1*"> </tag>
<tag tochonado="*a2*"> </tag>
<tag tochonado="*a3*"> </tag>
<tag tochonado="*a0*"> </tag>
<tag tochonado="*a0*"> </tag>
</table1>
<tag vsyachina="i tut vsyachina"></tag>
</main>
Автор: ForposT_ForeveR
Дата сообщения: 20.04.2011 22:10

Цитата:
что такое HasAttributes

До данной функции докапался. Но как узнать иметь ли данный тег конкретный атрибут - так и не понял. Пробовал по GetAttribute("AttrName") и затем производить какие-либо манипуляции со строкой, подсчет символов или другие действия - пишет что ссылаюсь на несуществующий объект.
Автор: BlackVetal
Дата сообщения: 21.04.2011 05:45
ForposT_ForeveR
Тебе вроде уже Molniev написал как получить атрибут

Цитата:
nodes.Current.GetAttribute("tochonado", "")


amr_now
попробуй перечислить в шаблоне поиска нужные варианты через точку с запятой - вроде так должно работать
Автор: Mextrom
Дата сообщения: 21.04.2011 07:45
ForposT_ForeveR

Цитата:
конкретный атрибут

Если атрибута нет, то GetAttribute("AttrName") вернёт null. Т.е. проверив результат на null, вы узнаете, есть атрибут или нет. Судя по всему, именно в этом случае вы и получаете
Цитата:
пишет что ссылаюсь на несуществующий объект
Автор: Molniev
Дата сообщения: 21.04.2011 17:58
ForposT_ForeveR, Как совершенно правильно заметил уважаемый Mextrom, если атрубита нет то GetAttribute() возвращает null. И обращаться к такому объекту соответственно нельзя ибо нету его.

Цитата:
До данной функции докапался. Но как узнать иметь ли данный тег конкретный атрибут - так и не понял

Что же до "данный" ... nodes.Current ... в while (nodes.MoveNext()) - это и есть "данный тег". А то потом ещё раз возникнет необходимость сделать с ним что-то)).

Автор: moJoKras
Дата сообщения: 23.04.2011 17:12
Всем привет! Подскажите, пожалуйста, кто знает.

1. Есть в дотнете что-нибудь похожее на слои рисования? Объясню ситуацию - задание связано с множествами точек, нужно найти особый треугольник из этих точек. Собственно, мышкой расставляю точки и потом ищу треугольник. После его нахождения, если ставлю ещё точку, то стороны треугольника надо стереть. Сейчас делаю так: если надо поставить одну точку, то
Graphics g = this.CreateGraphics();
g.DrawEllipse..., если надо что-то очистить, то this.Refresh(), и всё с нуля рисую.
Может есть решения поэлегантней, чтобы можно было очистить только лишь слой (т.е. например точки одного множества, или стороны треугольника)?
2. В классе основной формы есть объект класса, наследуемого от Panel. В нём никак не могу отловить нажатие клавиш (ни KeyUp, ни KeyDown, ни KeyPress), пришлось отлавливать его в основной форме и вызывать спец. метод у панели. Пробовал KeyPreview = true, не помогает.
Автор: May_Johnson
Дата сообщения: 24.04.2011 19:02
moJoKras

1 Создай класс GraphicObject содержащий внутри всю информацию необходимую для прорисовки объекта, и публичным методом
PaintMe(Graphics g);

2 Перенеси всю прорисовку в OnPaint формы/контрола, тогда тебе не надо вызывать .Refresh(), если хочешь что то убрать - то просто не рисуешь, помимо того теперь тебе не надо вызывать CreateGraphics(), ты получаешь этот объект как аргумент

3 Объявляешь несколько массивов из GraphicObject которые будешь отрисовывать в OnPaint - это и будут твои слои, например в один массив помещаешь все точки, в другой все линии, и тогда чтоб не рисовать линии просто очищаешь массив с ними

по поводу событий -
Panel традиционно не "самофокусируемый", потому для того чтобы таки получать клавиатурные события для панели надо вызывать


Код: this.ActiveControl = this.panel1;,
Автор: amr_now
Дата сообщения: 25.04.2011 11:27
По вопросу
http://forum.ru-board.com/topic.cgi?forum=33&topic=3706&start=2500#6

Molniev
Цитата:
Почему нельзя сделать самому: перечислить все файлы в папке, и для каждого выполнить сравнение с вашими критериями (расширинием). Совпадает - добавить в список/сделать что-там-надо. несовпадает - пропустить.

Будет совершенно такой же костыль. Даже по размеру скрипта. То есть не будет применения функции отбора названий файлов непосредственно по расширениям.

BlackVetal
Цитата:
попробуй перечислить в шаблоне поиска нужные варианты через точку с запятой - вроде так должно работать

Не работает. Количество элементов массива становится 0.
Автор: Mextrom
Дата сообщения: 25.04.2011 11:57
amr_now
Может фильтр можно задать по аналогии с System.Windows.Forms.OpenFileDialog или System.Windows.Forms.SaveFileDialog?

Код: openFileDialog.Filter = "Format1|*.txt|Format2|*.xml";
Автор: DmitryP
Дата сообщения: 25.04.2011 16:28
Доброго времени суток!
Я написал небольшую консольную програмку на С#, скомпилировал под .NET 4. Не смотря на то, что я не использовал Threading, програма работает в 7 потоков и имеет проблемы с синхронизацией. Я пробовал засунуть проблемный блок кода в lock(this){}, но это не помогает. Можно ли заставить програму в 1 поток?
Автор: dneprcomp
Дата сообщения: 25.04.2011 16:37
amr_now
Это по прежнему не прямой путь и сделано в принципе так же как и у тебя. Но с вариантами.
http://devpinoy.org/blogs/keithrull/archive/2008/02/01/how-to-search-a-directory-for-files-using-multiple-search-patterns.aspx
http://www.beansoftware.com/ASP.NET-FAQ/Multiple-Filters-Directory.GetFiles-Method.aspx
http://www.codeguru.com/forum/showthread.php?t=344379
Автор: LuckyStrike
Дата сообщения: 25.04.2011 19:24
Зравствуйте, уважаемые программеры, помогите пжлст реализовать один алгоритм на c# или хотя бы наброски кода бросьте. не знал как выложить.... вот ссылка [URL=http://www.sharemania.ru/0146082][/URL]

Добавлено:
http://www.sharemania.ru/0146082
Автор: amr_now
Дата сообщения: 26.04.2011 06:11
dneprcomp
Спасибо,
как раз второй вопрос был по расчленению строки как коллекции элементов, разделённых определённым символом.
Автор: moJoKras
Дата сообщения: 26.04.2011 12:53
May_Johnson
Спасибо, попробую чего-нибудь сделать.


Цитата:
this.ActiveControl = this.panel1;,
что есть не очень хорошее решение

Решение помогло, только почему оно не очень хорошее?
Автор: May_Johnson
Дата сообщения: 26.04.2011 14:28
moJoKras

потому что активный контрол на форме не есть что то постоянное, и при многих действиях пользователя(нажатие на кнопку, чекбокс, практически любой контрол) фокус нерейдет с панели на другой контрол, и чтобы опять нормально обрабатывать нажатия надо опять вызывать


Код: this.ActiveControl = this.panel1;,

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102

Предыдущая тема: Как удалить/добавить/отключить/включить устройство?


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.