Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

опять проблемка в C#

1140  1 2 3 4 5 6 7 все
beautiful_man посетитель23.11.17 17:19
23.11.17 17:19 

что то совсем запутался, кто подскажет, если не трудно.

в текстовом файле есть записи по строчно:

"sim/cockpit/electrical/beacon_lights_on, 1"

конечно без ""

задача:

1.Нужно считать по строчно, разделить текст и число

2. Текст передать в checkedListBox

3. Оправить команду через "SendXPCommands"(пример: SendXPCommands("sim/cockpit/electrical/beacon_lights_on", 1);

4. После отправи команды посадить галку в checkedListBox.

5. не большая пауза примерно 0,5 сек.

6. считать следующую строчку и дальше по пунктам 2-5.


Всего то делов, а что то не разберусь как число отделить, как число передать в Int32,

как отдельно галку посадить вcheckedListBox, ну и как после первой строчки паузу посадить

и потом читать следующую.


Не пинайте сильно, редко таким делом занимаюсь.

пробовал так:


private const string FILE_NAME = @"data\738.chl";
String input;
private void fileread()
{
if (!File.Exists(FILE_NAME))
{
Console.WriteLine("{0} не существует.", FILE_NAME);
return;
}
using (StreamReader sr = File.OpenText(FILE_NAME))
{

while ((input = sr.ReadLine()) != null)
{
SendXPCommands(input, 1);
checkedListBox1.Items.Add(input, CheckState.Checked);
}
MessageBox.Show("Конец потока достигнут.");
}
}





#1 
Murr патриот23.11.17 17:47
Murr
NEW 23.11.17 17:47 
в ответ beautiful_man 23.11.17 17:19, Последний раз изменено 23.11.17 17:48 (Murr)

string[] splitted = input.Split(new char[] {','});

int code = Convert.ToInt32(splitted[2]);

SendXPCommands(splitted[0], code);


С рук без проверки - могут быть опечатки.

#2 
beautiful_man посетитель23.11.17 17:54
NEW 23.11.17 17:54 
в ответ Murr 23.11.17 17:47, Последний раз изменено 23.11.17 17:58 (beautiful_man)

Спасибо!

здесь ругался

string[] splitted = input.Split(new char[] { ',' });

заменил на

int code = Convert.ToInt32(splitted[1]);

работает.


но отпровляет команды все вместе, нужно одну за другой с небольшой остановкой


#3 
Murr патриот23.11.17 18:12
Murr
NEW 23.11.17 18:12 
в ответ beautiful_man 23.11.17 17:54

Thread.Sleep(time_to_sleep);

#4 
beautiful_man посетитель23.11.17 19:23
NEW 23.11.17 19:23 
в ответ Murr 23.11.17 18:12

Не хочет поочерёдно вписывать в checkedListBox1


checkedListBox1.Items.Add(splitted[0]);
Thread.Sleep(1000);
SendXPCommands(splitted[0], code);
Thread.Sleep(1000);
for (int i = 0; i < checkedListBox1.Items.Count; i++)
{
checkedListBox1.SetItemChecked(i, true);
}

Команды отправляет правильно, а вот в checkedListBox1 пишет в конце всё сразу.

Где ошибка может быть?

Не из за Thread.Sleep случаем.

Пробовал без:

for (int i = 0; i < checkedListBox1.Items.Count; i++)
{
checkedListBox1.SetItemChecked(i, true);
}

всё равно в конце вписывает всё сразу в checkedListBox1,

а нужно

вписал техт в checkedListBox1

пауза

отправил команду

пауза

посадил галку напротив вписаного текста в checkedListBox1.

#5 
Murr патриот23.11.17 19:35
Murr
NEW 23.11.17 19:35 
в ответ beautiful_man 23.11.17 19:23

А контрол за тебя кто перерисовывать будет?

#6 
beautiful_man посетитель23.11.17 20:10
NEW 23.11.17 20:10 
в ответ Murr 23.11.17 19:35

Я как тот пёс, все понимаю, а написать не могу,

понимаю что нужно запрос отправить, если текст в итем вписан,

тогда галку нужно поставить.

Или запрос, то есть считать выполнена ли команда,

как соорудить такое не допру.

#7 
  moose старожил23.11.17 21:28
NEW 23.11.17 21:28 
в ответ beautiful_man 23.11.17 17:19

это в школе задали? какой класс?

#8 
AlexNek патриот23.11.17 22:14
AlexNek
NEW 23.11.17 22:14 
в ответ beautiful_man 23.11.17 17:19

Так вы уже все словами описали.

Копируйте предложения в код, а затем по одной части реализуйте.

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

#9 
beautiful_man посетитель23.11.17 23:21
NEW 23.11.17 23:21 
в ответ moose 23.11.17 21:28

ага, в той-же где ты учился,

судя по ответу, мы с тобой одноклассники:))

#10 
beautiful_man посетитель23.11.17 23:24
NEW 23.11.17 23:24 
в ответ AlexNek 23.11.17 22:14

Пока не пойму как это реализовать,

буду методом тыка пробовать.

#11 
AlexNek патриот23.11.17 23:39
AlexNek
NEW 23.11.17 23:39 
в ответ beautiful_man 23.11.17 23:24, Последний раз изменено 24.11.17 23:39 (AlexNek)

Не надо методом тыка.

У вам проблемы с языком или с пониманием алгоритма? "Забудьте" вначале про язык.

Распишите всю вашу прогу просто на русском языке, начиная с общих утверждений как уже было сделано. А затем начинайте более продвинутую детализацию каждого шага.

При этом рассматривайте исключительно один единственный шаг.

Что то типо такого:


Открыть текстовый файл
ЦИКЛ ПОКА не обнаружен конец файла
    Читаем строку из файла
    Разбираем строку на отдельные части
    Выполняем требуемые действия над частями
    Пауза 500 мс
Конец ЦИКЛ ПОКА
Закрыть текстовый файл
#12 
AlexNek патриот23.11.17 23:50
AlexNek
NEW 23.11.17 23:50 
в ответ beautiful_man 23.11.17 23:24

И пож. никогда не используйте "метод тыка" - это самое худшее что может быть.

Есть конечно, некоторые исключения, но в домашних заданиях их быть не может.

#13 
maxxxl79 прохожий24.11.17 00:19
NEW 24.11.17 00:19 
в ответ beautiful_man 23.11.17 17:19

примерно так


private async void button1_Click(object sender, EventArgs e)
{
var lines = System.IO.File.ReadAllLines(FILE_NAME);


foreach (var line in lines)
{
var ar = line.Split(',');
//TODO:проверка формата строки


int param;
int.TryParse(ar[1].Trim(), out param);
//TODO:проверка успешности приведения количественного параметра в строке


checkedListBox1.Items.Add(ar[0]);//добавляем в список
await Task.Delay(500);//дополнительная пауза для наглядности, удалите если не надо


SendXPCommand(ar[0], param);//отправляем команду
checkedListBox1.SetItemChecked(checkedListBox1.Items.Count - 1, true);//выставляем галку


await Task.Delay(1500);//для той же наглядности увеличенная пауза - поменяете как надо
}
}


private void SendXPCommand(string command, int param)
{
Console.WriteLine($@"{nameof(SendXPCommand)}({command},{param})");
}
#14 
Murr патриот24.11.17 09:44
Murr
NEW 24.11.17 09:44 
в ответ maxxxl79 24.11.17 00:19

примерно так

-----

Результат - ТС скопирует решение, но, увы, ничему САМ не научится.

Готовый результат можно подсунуть тогда, когда понятно, что чел потерял интерес и не получит результат самостоятельно.

Примерно ТАК.

#15 
beautiful_man посетитель24.11.17 10:23
NEW 24.11.17 10:23 
в ответ maxxxl79 24.11.17 00:19

Спасибо, теперь более понятно как такое делать,

ребят, я не программист, так немного увлекаюсь,

и стать хорошим кодереом у же не получится, возраст и времени столько нет, хотя.........

Иногда задаю здесь кое какие вопросы, но некоторые набрасываются со своими подколками и нравоучениями,

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

большая просьба ко всем, давайте жить дружно!:)))


Murr, AlexNek, maxxxl79,

огромное спасибо вам,

если дальнейшие трудности будут, буду писать в теме.

#16 
maxxxl79 прохожий24.11.17 10:58
NEW 24.11.17 10:58 
в ответ Murr 24.11.17 09:44

ну, что можно и что нельзя, пусть решает себе сам топикстартер, в своем посте он не писал "не давайте мне ни в коем случае готового решения, а намеками, намеками..."

а насчет научится он чему-то или нет - зависит не от того, нашел ли он готовое решение, а от него самого (желания, усидчивости и мозгов).

#17 
beautiful_man посетитель24.11.17 11:11
NEW 24.11.17 11:11 
в ответ maxxxl79 24.11.17 10:58

спасибо за поддержку,

может чему и научусь. :)))

вопросик ещё один есть:

бывает так что в одной строчки есть несколько команд,

они принадлежат одному тексту.

BATTERY ON,sim/cockpit2/electrical/battery_on[0], 1,laminar/B738/button_switch/cover_position[2], 0,sim/operation/failures/rel_batter0, 0

сейчас сделал так, что бы в checkedListBox1 вписывал техт и отправлял одну команду,

работает на ура, если несколько команд, то нужно преобразовать:

int.TryParse(ar[2].Trim(), out param);

если правильно понимаю, нужно от ar[2] до конца строчки определить сколько команд есть,

потом считать их и поочередно отправить.


Правильно ли я мыслю?


#18 
maxxxl79 прохожий24.11.17 11:28
NEW 24.11.17 11:28 
в ответ beautiful_man 24.11.17 11:11

Вам надо анализировать длину массива, который получаете в результате сплита:

var ar = line.Split(',');

Далее, если исходить из того, что текстовый параметр и числовой параметр всегда идут парами, т.е. подразумевается, что длина массива в этом случае вссегда будет четной, то и определять по парности длину и количество пар (команд и числа), чтобы не зашиваться на

ar[2]

или что-то подобное, а определять в этом случае позиции динамически и, видимо, добавить дополнительный цикл обработки таких пар в строке.

#19 
Murr патриот24.11.17 11:34
Murr
NEW 24.11.17 11:34 
в ответ beautiful_man 24.11.17 10:23
ребят, я не программист, так немного увлекаюсь

-----

Потому тебе даются две вещи - где-то код над которым надо поработать, а где-то подсказка, по которой надо хорошо покопаться в доках.

Когда-нибудь, если будешь ковырять это дело самостоятельно... а большинство из нас не изучали это дело во время учебы - его просто не было в природе... дойдешь до чего-то полезного.


#20 
Murr патриот24.11.17 11:49
Murr
NEW 24.11.17 11:49 
в ответ maxxxl79 24.11.17 10:58

он не писал

-----

Так он и не должен это писать.

Ему нужно достичь результата.

Проблема в том, что сам результат в виде кода ему, в общем-то, не особо нужен - это понятно из уровня задачи, но в процессе решения задачи он должен кое-чему научится.

Так вот то, чему он должен научится, он должен достичь сам и только сам.

Ну а помощью при этом будет - понять где именно у него не понимание и дать толчок для смотрения в нужную сторону.

Только так он сможет достичь реального результата.


Анализ готового кода, увы, на начальноm этапе не позволяет самообучатся.

#21 
Murr патриот24.11.17 11:56
Murr
NEW 24.11.17 11:56 
в ответ beautiful_man 24.11.17 11:11

сейчас сделал так, что бы в checkedListBox1 вписывал техт и отправлял одну команду

-----

Если обработка одной команды оформлена в отдельную функцию, то все что надо сделать - нарезать строку на команды и скормить их этой функции.


Правильно ли я мыслю?

-----

Правильно. Вопрос в том, как ты будешь делить строку...


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

#22 
beautiful_man посетитель24.11.17 11:57
NEW 24.11.17 11:57 
в ответ maxxxl79 24.11.17 11:28

теперь надо от ar[2] до конца строки определить и считать все команды,

строка выглядит так:

BATTERY ON,sim/cockpit2/electrical/battery_on[0], 1,laminar/B738/button_switch/cover_position[2], 0,sim/operation/failures/rel_batter0, 0

от ar[2] будет так:


sim/cockpit2/electrical/battery_on[0], 1,laminar/B738/button_switch/cover_position[2], 0,sim/operation/failures/rel_batter0, 0

нужно считать это и передать куда то, например в string, что бы потом со string передать в SendXPCommands


#23 
Murr патриот24.11.17 11:59
Murr
NEW 24.11.17 11:59 
в ответ maxxxl79 24.11.17 11:28

Вам надо анализировать длину массива, который получаете в результате сплита:

-----

Можно так.

Можно - посмотреть как определены данные и поискать другой способ разделения.


длина массива в этом случае вссегда будет четной

-----

??? - pодумай...

#24 
Murr патриот24.11.17 12:06
Murr
NEW 24.11.17 12:06 
в ответ beautiful_man 24.11.17 11:57

от ar[2] будет так:

-----

Ты уже умеешь обращаться с одной командой. И понимаешь что такое массив.


Сейчас тебе нужно научится разбирать строку на массив одиночных команд. Делай как отдельную задачу.


П.С. Тебя не смущает что приведенная тобою строка не соответствует изначальному описанию Команды? смущ

#25 
beautiful_man посетитель24.11.17 12:16
NEW 24.11.17 12:16 
в ответ Murr 24.11.17 12:06

там добавлен текст:

BATTERY ON

буду учиться разбирать строку на массив одиночных команд.

Наверное идею с отдельным классом, стоит применить!

Спасибо!

#26 
maxxxl79 прохожий24.11.17 12:46
NEW 24.11.17 12:46 
в ответ beautiful_man 24.11.17 12:16

а BATTERY ON - тоже команда?

говоря про парность, я имел в виду вариант строки:


sim/cockpit2/electrical/battery_on[0], 1,laminar/B738/button_switch/cover_position[2], 0,sim/operation/failures/rel_batter0, 0

для такого формата можно ещё воспользоваться регулярными выражениями, например:

var result = Regex.Split(str, @"([\w+\s*\/\[\]]+,\s*\d+)");

результат к данной строке можно глянуть тут:

http://www.rubular.com/r/MtxvLyyTQk


но если в начале может произвольно идти что-то вроде BATTERY ON или ещё что-то в разных количествах, то естественно надо это тоже учесть.

думаю, в целом Вам понятно в какую сторону копать - дальнейший анализ уже зависит от предметных условий - какого формата строка возможна на входе.


#27 
beautiful_man посетитель24.11.17 14:27
NEW 24.11.17 14:27 
в ответ maxxxl79 24.11.17 12:46

BATTERY ON просто текст, он идёт как информация в checkedListBox1,

команда к нему:

sim/cockpit2/electrical/battery_on[0], 1,laminar/B738/button_switch/cover_position[2], 0,sim/operation/failures/rel_batter0,

здесь их три и они должны одновременно отправляться.

бывает и по одной:

ANTI COLLISION LIGHT,switch OFF,sim/cockpit/electrical/beacon_lights_on, 1

Где текст:

ANTI COLLISION LIGHT

команда:

switch OFF,sim/cockpit/electrical/beacon_lights_on, 1

Спасибо за подсказку, буду пробовать.

Хотя пока только не получается логику в языке C# выразить.

Буду учится, всё равно добьюсь, чего хочу. :)))


#28 
Murr патриот24.11.17 15:21
Murr
NEW 24.11.17 15:21 
в ответ beautiful_man 24.11.17 14:27

команда:

switch OFF,sim/cockpit/electrical/beacon_lights_on, 1

У тебя Команда опять не соответствует начальному определению.

Не знаю что именно у тебя там, но советую почитать доки и болеее того - специфические доки для прогеров...

#29 
beautiful_man посетитель24.11.17 15:28
NEW 24.11.17 15:28 
в ответ Murr 24.11.17 15:21

сорри, мой косяк:

sim/cockpit/electrical/beacon_lights_on, 1


#30 
  moose старожил24.11.17 20:13
NEW 24.11.17 20:13 
в ответ beautiful_man 23.11.17 23:21

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

#31 
AlexNek патриот24.11.17 23:38
AlexNek
NEW 24.11.17 23:38 
в ответ maxxxl79 24.11.17 10:58
не давайте мне ни в коем случае готового решения

ну вроде это и так понятно. Написать готовое решение гораздо проще, а вот толк какой из этого, если ТС хочет чему то научится.

Вы же не будете каждый раз решать за него задачи.


зависит не от того, нашел ли он готовое решение

если есть решение задачи, то сама суть задачи исчезает.

#32 
AlexNek патриот24.11.17 23:56
AlexNek
NEW 24.11.17 23:56 
в ответ beautiful_man 24.11.17 14:27

Что то тут бардак начинается не связанный с языком программирования.

Прежде всего у Вас должна быть точная постановки задачи.

Ну или хотя бы полное описание формата исходных данных.

Приведенный сейчас формат уже не так просто разобрать на части.


Хотя пока только не получается логику в языке C# выразить.

Так уже писал - забудьте о конкретном языке программирования. Решайте задачу на своем родном языке, преобразовав ее в "стандартные конструкции"

- сделать что то

- ветвление / выбор

- цикл


Как только задача опишется в подобной форме, перевести ее на любой язык - дело исключительно "техники" (конкретных знаний языка)

Вот это тут и можно спрашивать и конкретный ответ будет даже очень уместен. Ну типа - как мне открыть текстовый файл?

#33 
maxxxl79 прохожий24.11.17 23:57
NEW 24.11.17 23:57 
в ответ AlexNek 24.11.17 23:38
ну вроде это и так понятно.

так же и так понятно и то, что учеба и решение задачек в принципе полезно как таковое, только к чему сейчас говорить о том, что вода водянистая, а масло масленое?

человек сюда не за курсом программирования/информатики пришел, а с конкретной задачей.

устроили тут какой-то педсовет :) пусть топикстартер будет судить, полезен ли был ему мой ответ, научился ли он чему-то новому из приведенного примера, вам-то что?! )


если есть решение задачи, то сама суть задачи исчезает.

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

получается, что Вы утверждаете, что любые примеры кода - вредны, а msdn, стековерфлоус и иже с ними - совершенно бесполезные ресурсы для получения новых знаний.

#34 
AlexNek патриот25.11.17 00:10
AlexNek
NEW 25.11.17 00:10 
в ответ maxxxl79 24.11.17 23:57
получается, что Вы утверждаете, что любые примеры кода - вредны,

совершенно не так.

Пример кода вреден когда есть "учебная задача" и вместо того чтобы думать как ее решить просто берется готовый код.

#35 
maxxxl79 прохожий25.11.17 00:22
NEW 25.11.17 00:22 
в ответ AlexNek 25.11.17 00:10

Ну, до "готовности" приведенный код очень далек, поэтому разница между "готовый код" и "пример кода" несколько расплывчата в данном контексте.

И я уверен, что данный пример кода был полезен топикстартеру. Мм... по-крайней мере, он так написал :)

Вреден или нет пример, повторюсь, зависит от самого человека - увидит в примере незнакомые ему вещи - пойдет их гуглить, пробовать, экспериментировать, а не будет этого делать - то и не научится ничему в любом случае.


#36 
Murr патриот25.11.17 00:28
Murr
NEW 25.11.17 00:28 
в ответ maxxxl79 24.11.17 23:57

Вы утверждаете, что любые примеры кода - вредны

-----

На начальном этапе обучения - 100% вредны.

Используемые при обучении задачи интереса не предстваляют - интерес представляет цель которой пытаются достичь давая задачу. Задача лишь средство поддержания интереса в процессе.


Когда-то мучал курсантов таких же курсов обычными сортировками.

Даю задание - находят в инете или книгах и притаскивают.

Но поиск не дает понимания процесса - чуть поменяются условия - тупик.

Пока сами не проработают - все бесполезно...

#37 
Murr патриот25.11.17 00:38
Murr
NEW 25.11.17 00:38 
в ответ maxxxl79 25.11.17 00:22

я уверен, что данный пример кода был полезен

-----

Вреден.

Благодаря приведенному коду он не смог самостоятельно проанализировать ошибку допущенную им в цикле.

Не появилось у него навыка поиска таких ошибок.


пойдет их гуглить, пробовать, экспериментировать

-----

Не на этом уровне - у него еще синтаксис плавает и логика на все четыре хромает...

Как написал Алех - можно дать техническую информацию когда уже есть понимание какая информация нужна... ну или в том случае, когда она не связана с учебной целью - т.е. задача не на нахождение этой информации и ее не хватает... тот же Слееп()...

Остальное - сам, сам и еще раз сам...



#38 
maxxxl79 прохожий25.11.17 01:36
NEW 25.11.17 01:36 
в ответ Murr 25.11.17 00:38
На начальном этапе обучения - 100% вредны.

начальный этап, это который? Системы счисления, побитовые операции? Тема называется "опять проблемка в C#", т.е. речь идет о конкретном языке программирования, а раз так, то получается странно - во всех книжках, даже для начинающих изучать C# я встречал... О, боже - большое количество примеров кода :)

Вреден.

конечно, Вам виднее, чем топикстартеру, который написал:


Спасибо, теперь более понятно как такое делать,

Но я Вас понял, Вы имеете в виду, что, несмотря на то, что ему стало понятнее и в последующих постах он стал задавать вопросы и пытаться понять, как и что делать дальше - он не знает, что на самом-то деле нанес себе непоправимый вред, прочитав мой пост :D


Не появилось у него навыка поиска таких ошибок.

А советовать использовать Thread.Sleep в основном потоке гуи приложения - это тогда к чему, к будущим навыкам разработки гуи?

Или утверждать, что мол, у человека синтаксис хромает, при этом кидаеть ему код, который сами не проверяли, чтоб ещё и с этим помучился? Это тоже в целях обучения? Какой Вы тонкий педагог, однако :)


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


#39 
beautiful_man посетитель25.11.17 06:23
NEW 25.11.17 06:23 
в ответ maxxxl79 25.11.17 01:36, Последний раз изменено 25.11.17 06:39 (beautiful_man)

maxxxl79,

твой пример кода помог очень, за что при много благодарен.


Опишу конкретно что за проблема.

Кто нибудь увлекается Flight Simulator X-Plane?

Наверное нет, так бы сразу поняли по датарефам.


Пробую создать дополнение что то типа "Второй пилот".

Обычно приложения для симулятора пишутся в С++, но для меня этот язык тёмный лес,

поэтому решил попробовать лично для себя такое сделать в С#, потому что с этим языком хоть как то знаком.

Это не коммерческая идея и в продажу никогда не пойдёт, если будет работать как задумано, выложу в группу в ВК.


Задача:

выполнения функций второго пилота по чек листу + datarefs.

Если бы хоть как то была возможность реализовать такое в С++, может кто то знает его хорошо и готов стать наставником, буду только рад, было бы идеально.(Если кто то согласиться, полную информацию предоставлю)

Чек лист прописан в простом текстовом редакторе имея определённую структуру, чек лист разбит на подразделы, каждый подраздел будет привязан к определённой кнопке.

Подразделы будут отделены друг от друга пробелом, может чем то другим, пока не знаю.

Ну примерно как то так.


Ребят я понимаю что здесь находятся профи своего дела, но большая просьба, давай те без грызни, а то на какой форум не зайдёшь, везде грызутся.

Всё таки программисты более интеллигентные люди, или я ошибаюсь?


По поводу высказываниям типа пускай сам учится, вы не правильно поняли меня, я не учится сюда пришёл, и не уверен, если эту идею осилю, что то ещё когда то буду делать в C#.

Чему то конечно научусь с вашей помощью, но мне очень помогают в "учёбе" конкретные примеры, как сделал maxxxl79.

Как вы видели в первом посту я привёл конкретный пример, если бы мне просто нужна была подсказка, я бы этого не делал.


В роди бы всё объяснил, как мог! :)))


П.С так и не получается разбить строку на массив одиночных команд, информации много, но знаний языка не хватает.

#40 
maxxxl79 прохожий25.11.17 09:41
NEW 25.11.17 09:41 
в ответ beautiful_man 25.11.17 06:23
П.С так и не получается разбить строку на массив одиночных команд, информации много, но знаний языка не хватает.

напишите ещё раз пример строки, которую пытаетесь разбить, и пример того, какой на выходе должен быть массив, ну и как пытаетесь это сделать.


#41 
Murr патриот25.11.17 12:09
Murr
NEW 25.11.17 12:09 
в ответ beautiful_man 25.11.17 06:23

знаний языка не хватает.

------

Знаний языка у тебя достаточно - там будет все тоже самое что уже использовалось - этого достаточно.


А недостаток - в навыках его использования - именно возможности получения этих навыков тебя лишил пример maxxxl79.

#42 
beautiful_man посетитель25.11.17 12:25
NEW 25.11.17 12:25 
в ответ maxxxl79 25.11.17 09:41
GENERATORS DRIVE DISCONNECT switches GUARD CLOSED,laminar/B738/one_way_switch/drive_disconnect1_pos, 0,laminar/B738/one_way_switch/drive_disconnect2_pos, 0,laminar/B738/button_switch/cover_position[4], 0,laminar/B738/button_switch/cover_position[5], 0

в checkedListBox1.Items.Add(ar[0]); вписываем текст до первой запятой:


GENERATORS DRIVE DISCONNECT switches GUARD CLOSED"

остались команды:

laminar/B738/one_way_switch/drive_disconnect1_pos, 0,laminar/B738/one_way_switch/drive_disconnect2_pos, 0,laminar/B738/button_switch/cover_position[4], 0,laminar/B738/button_switch/cover_position[5], 0

эти команды надо отправить через SendXPCommands,


сейчас отправляется только первая команд после запятой:

SendXPCommands(ar[1], param);

надо отправить все разом или поочерёдно.


Затем ставиться галочка в

checkedListBox1.SetItemChecked(checkedListBox1.Items.Count - 1, true);

как то так.

#43 
maxxxl79 прохожий25.11.17 12:29
NEW 25.11.17 12:29 
в ответ beautiful_man 25.11.17 12:25

ок, вечером посмотрю, в гостях пока что.

#44 
beautiful_man посетитель25.11.17 13:07
NEW 25.11.17 13:07 
в ответ maxxxl79 25.11.17 12:29

спасибо!

#45 
AlexNek патриот25.11.17 16:25
AlexNek
NEW 25.11.17 16:25 
в ответ maxxxl79 24.11.17 00:19
примерно так

Постмотрел я примерчик в студии - как можно такое показывать начинающему совершенно непонятно.

Для начала какого там делают "async" и "await"? - разобраться с этим в начале практически невозможно.

Также использование "var" весьма нежелательно.

Какой смысл использовани TryParse без if также непонятно.

А использование nameof вообще выходит за рамки приличий для начинающих. Как и $ , @

Да и вообще эта линия


Console.WriteLine($@"{nameof(SendXPCommand)}({command},{param})");


Одна большая загадка которую непонятно как нужно расшифровывать. Зачем?

Подобный код просто вреден для начинающего.

#46 
  moose старожил25.11.17 21:38
NEW 25.11.17 21:38 
в ответ beautiful_man 25.11.17 12:25

еще раз просмотрел ветку, так и не понял что нужно сделать. попробую позадавать вопросы


0. вот это:

GENERATORS DRIVE DISCONNECT switches GUARD CLOSED,laminar/B738/one_way_switch/drive_disconnect1_pos, 0,laminar/B738/one_way_switch/drive_disconnect2_pos, 0,laminar/B738/button_switch/cover_position[4], 0,laminar/B738/button_switch/cover_position[5], 0

лежит где-то в файле, и организовано так, что разделитель - ВСЕГДА только запятая, первый элемент - некая отдельная сущность, а остальное - попарно идущие единицы. т.е. если разбить всю эту длинную строку на куски там, где запятая, то мы обязательно должны получить нечетное число подстрок. правильно?

0.5 если п.0 верен, то, видимо, нужно выделить первый кусок, а с парами проделать что-то другое, и вы знаете что именно.

1. о каком комбобоксе речь?

2. о каком листбоксе речь?

3. что конкретно вы не знаете как делать, или знаете, но оно не получается?

4. почему вы ленитесь писать что-то, где-то, как-то через черточку? это все равно как я бу ду пи сать во т так. читать сло жно : (


#47 
maxxxl79 прохожий25.11.17 21:38
NEW 25.11.17 21:38 
в ответ beautiful_man 25.11.17 12:25

хорошо бы уточнить, в начале Вы писали, что строки формата

sim/cockpit/electrical/beacon_lights_on, 1

которая по сути сама является командой, насколько я понял.

потом добавили, что строка может быть вида:

GENERATORS DRIVE DISCONNECT switches GUARD CLOSED,laminar/B738/one_way_switch/drive_disconnect1_pos, 0,laminar/B738/one_way_switch/drive_disconnect2_pos, 0,laminar/B738/button_switch/cover_position[4], 0,laminar/B738/button_switch/cover_position[5], 0

и для последнего случая определили, что текст, отображаемый в checkListBox - это текст до первой запятой, далее идет ряд команд, а именно - четыре команды, верно понял? в первом случае что должно отображаться в checkedListBox, там получается в качестве текста должна отображаться сама команда?

#48 
maxxxl79 прохожий25.11.17 22:04
NEW 25.11.17 22:04 
в ответ AlexNek 25.11.17 16:25
Постмотрел я примерчик в студии - как можно такое показывать начинающему совершенно непонятно.
Для начала какого там делают "async" и "await"? - разобраться с этим в начале практически невозможно.

Вы читаете, что пишет ТС? он уже черным по белому написал, он сюда пришел не за курсом программирования, а чтобы ему помогли сваять конкретную вещь.


Также использование "var" весьма нежелательно.

Вы хотите ещё больше оффтопа добавить в тему? )

Если Вы считаете себя гуру, то, наверное, знаете, что var не следует использовать в случаях, например, когда надо задействовать базовый класс или интерфейс, иными словами в том случае, если указание или не указание типа создает неоднозначность, в данном случае правая сторона вполне себе однозначна и использование var в этом случае сводится к стилю, привычке, удобству - с таким же успехом Вы можете сказать, что нежелательно использовать в студии такой-то шрифт, т.к. он портит зрение быстрее другого. И категоричное утверждение, что использование нежелательно натыкается на вопрос - как Вы создаете анонимные типы?


Какой смысл использовани TryParse без if также непонятно.

О том, что это "готовый код" писали Вы, а не я, я как раз таки писал, что до готовности далеко, если Вы удосужились посмотреть код, то посмотрите там и комментарии, в которых написано, что требуется проверка.


А использование nameof вообще выходит за рамки приличий для начинающих. Как и $ , @

Интересно, а чем так сложно использование nameof? или $? Лишь тем, что это появилось в более поздних версиях шарпа? Почему человек, который хоть и начинающий, не может использовать в коде то, что есть в языке на сегодняшний день? Вы считаете, что раз человек плохо знает язык, то использовать он должен только C# 2.0 например?


Забавно, Вы находите время заходить в тему, посмотреть код в студии, поцокать языком, покачать головой, написать как всё плохо и как всё вредно и как это всё не поможет ТС, но сами при этом ничего путного ему не написали. Так сделайте это, напишите ему код, который он в лёт поймет, и все будут довольны.

#49 
AlexNek патриот25.11.17 23:06
AlexNek
NEW 25.11.17 23:06 
в ответ maxxxl79 25.11.17 22:04
Если Вы считаете себя гуру

Я себя, грубо говоря, никем не считаю - просто высказываю свое мнение.


как Вы создаете анонимные типы?

А никак не создаю - не требовалось пока. Хотя вот это и есть фактически единственное использование var.


Интересно, а чем так сложно использование nameof? или $?

Тем что это, во первых не нужно, а вторых непонятно.

Достаточно просто сравнить

"SendXPCommand " + command + "," + param.ToString();


$@"{nameof(SendXPCommand)}({command},{param})"


Почему человек, который хоть и начинающий, не может использовать в коде то, что есть в языке на сегодняшний день?

Вы путаете сущности.

Начинающий вполне может их использовать если нашел, прочитал и разобрался, но писать такой код начинающему - это просто неуважение к начинающему.


Так сделайте это, напишите ему код, который он в лёт поймет

Вообще то это самое простое, что можно сделать, но какой в этом смысл?

#50 
maxxxl79 прохожий25.11.17 23:52
NEW 25.11.17 23:52 
в ответ AlexNek 25.11.17 23:06
Тем что это, во первых не нужно, а вторых непонятно.

Если Вы считаете что-то ненужным и непонятным, это не значит, что другие должны считать так же.

nameof дает возможность в ряде случае не зашиваться на hard-coded строки, а более формально определять выражение, лично мне стало удобнее работать с Expressions, обработкой эксепшенов, я считаю это хорошим нововведением.


Насчет сравнения строк, Вы же не имеете ничего против:

string.Format("Привет {0}, меня зовут {1}", name1, name2);

Чем плоха более короткая запись?:

"Привет {name1}, меня зовут {name2}"

Мне второй вариант кажется более наглядным. Опять-таки, дело вкуса.

Ваше "не нужно" я бы заменил на "необязательно", что можно при желании говорить к любому синтаксическому сахару.


Вообще то это самое простое, что можно сделать, но какой в этом смысл?

:) удобная фраза, конечно, намного больше смысла по-оффтопить, засорить тему ТС и выдать в конце эту фразу - это к вопросу об уважении.

#51 
  moose старожил26.11.17 00:10
NEW 26.11.17 00:10 
в ответ maxxxl79 25.11.17 23:52

ТС, наверное, испугался и решил затаиться, пока "гуры" срач не прекратят : )

#52 
AlexNek патриот26.11.17 00:52
AlexNek
NEW 26.11.17 00:52 
в ответ maxxxl79 25.11.17 23:52
nameof дает возможность в ряде случае не зашиваться на hard-coded строки

Может вы еще сможете объяснить необходимость использования nameof в данном конкретном случае?


Чем плоха более короткая запись?:

Тем что она просто вредна - у нас разрешено использование исключительно String.Format. Догадываетесь отчего?


намного больше смысла по-оффтопить, засорить тему ТС

вообще то подобные обсуждения могут дать гораздо больше пользы чем плохо написанный код.

#53 
  moose старожил26.11.17 01:35
NEW 26.11.17 01:35 
в ответ beautiful_man 25.11.17 12:25, Последний раз изменено 26.11.17 01:41 (moose)

исхожу из того, что я угадал правильно, приведу вам код, несмотря на то, что гуры - против : )


string str = "GENERATORS DRIVE DISCONNECT switches GUARD CLOSED,laminar/B738/one_way_switch/drive_disconnect1_pos, 0,laminar/B738/one_way_switch/drive_disconnect2_pos, 0,laminar/B738/button_switch/cover_position[4], 0,laminar/B738/button_switch/cover_position[5], 0";
string[] lines = str.Split(',');
if (lines.Length > 0 && lines.Length%2 == 1) {
___string separate_item = lines[0];
___//и делаем с эти separate_item что надо (в чекбокс? вы в курсе)
___var query = lines.Skip(1).Select((x, i) => new { Index = i, Value = x }).GroupBy(x => x.Index / 2).Select(x => x.Select(v => v.Value).ToArray()).ToList();
___foreach (string[] pair in query) {
______string first = pair[0];
______string second = pair[1];
______// и получаете здесь в first - вашу "команду", а в second - число, которое вы знаете, что означает. распоряжаетесь как знаете
___}
}

гуры, наверное, против, чтобы вам смотреть такой код, но это 100% сработает. захотите понять как - почитаете книжки. если хотите освоить c#, то без linq, lambda expression и прочего как можно обойтись? привыкайте : )


#54 
maxxxl79 прохожий26.11.17 01:38
NEW 26.11.17 01:38 
в ответ AlexNek 26.11.17 00:52
Может вы еще сможете объяснить необходимость использования nameof в данном конкретном случае?

Что-то категорично говоря про var, Вы не рассматривали конкретные случаи :) Про nameof я не писал про необходимость, Вы невнимательно читаете и дописываете за меня.


Тем что она просто вредна - у нас разрешено использование исключительно String.Format. Догадываетесь отчего?

Не догадываюсь. Поделитесь. Интересно.


вообще то подобные обсуждения могут дать гораздо больше пользы чем плохо написанный код.

Спросите у ТС, получил ли он от Ваших сообщений пользу за эти пока ещё три страницы.

#55 
maxxxl79 гость26.11.17 01:40
NEW 26.11.17 01:40 
в ответ moose 26.11.17 01:35, Последний раз изменено 26.11.17 01:58 (maxxxl79)

я тут никого не критиковал за попытку помочь тому, кто просит помощи :) поэтому я не против никаких вариантов решения.


по задаче:

я так понял, что текст

GENERATORS DRIVE DISCONNECT switches GUARD CLOSED

может быть, а может и не быть в начале строки, собственно, поэтому и попросил ТС прояснить этот момент.


а пары как вариант можно вытаскивать ещё регуляркой:


var matches = Regex.Matches(str, @"([\w+\s*\/\[\]]+,\s*\d+)");


выглядит короче, но кое-кто сейчас напишет, что давать код с регулярными выражениями несведущим людям - это хамство )


#56 
  moose старожил26.11.17 10:44
NEW 26.11.17 10:44 
в ответ maxxxl79 26.11.17 01:40

регулярные выражения - это не с#. а linq - плоть от плоти.

#57 
beautiful_man посетитель26.11.17 11:10
NEW 26.11.17 11:10 
в ответ maxxxl79 26.11.17 01:40

ребят, давайте без нравоучений, битте!

написал же уже, целью не является стать профи.

maxxxl79,

спасибо ещё раз, что находишь время для меня,


1. сейчас текстовый файл выглядит так:

BATTERY ON / GUARD_CLOSED,sim/cockpit2/electrical/battery_on[0], 1,laminar/B738/button_switch/cover_position[2], 0,sim/operation/failures/rel_batter[0], 0
STANDBY POWER switch AUTO / GUARD CLOSED,sim/cockpit2/electrical/battery_on[1], 1,laminar/B738/button_switch/cover_position[3], 0,sim/operation/failures/rel_batter1, 0
GENERATORS DRIVE DISCONNECT switches GUARD CLOSED,laminar/B738/one_way_switch/drive_disconnect1_pos, 0,laminar/B738/one_way_switch/drive_disconnect2_pos, 0,laminar/B738/button_switch/cover_position[4], 0,laminar/B738/button_switch/cover_position[5], 0
BUS TRANSFER switch AUTO / GUARD CLOSED,sim/cockpit2/electrical/cross_tie, 1,laminar/B738/button_switch/cover_position[6], 0
GROUND POWER ON,sim/cockpit/electrical/gpu_amps, >0.0,sim/operation/failures/rel_ex_power_on, 0

где:

BATTERY ON / GUARD_CLOSED,
STANDBY POWER switch AUTO / GUARD CLOSED,
GENERATORS DRIVE DISCONNECT switches GUARD CLOSED
BUS TRANSFER switch AUTO / GUARD CLOSED,
GROUND POWER ON,

информационный текст, он прописывается в checkedListBox1 только как информация.

Отделить его можно запятой или другим методом(например ;, -, @, %, &, §, и.т.д)

2. команды находятся после текста:

sim/cockpit2/electrical/battery_on[0], 1,laminar/B738/button_switch/cover_position[2], 0,sim/operation/failures/rel_batter[0], 0
sim/cockpit2/electrical/battery_on[1], 1,laminar/B738/button_switch/cover_position[3], 0,sim/operation/failures/rel_batter1, 0
laminar/B738/one_way_switch/drive_disconnect1_pos, 0,laminar/B738/one_way_switch/drive_disconnect2_pos, 0,laminar/B738/button_switch/cover_position[4], 0,laminar/B738/button_switch/cover_position[5], 0
sim/cockpit2/electrical/cross_tie, 1,laminar/B738/button_switch/cover_position[6], 0
sim/cockpit/electrical/gpu_amps, >0.0,sim/operation/failures/rel_ex_power_on, 0

к каждому тексту свой блок команд, они могут подаваться как одновременно, так и одна за другой.

в каждой строчки, один блок команд.

Задача:

1. определить конец каждой строчки, можно отделить каждый блок каким либо символом(например ;, -, @, %, &, §, и.т.д)

Нужно разбить строчку на два блока, отделить информационный текст от команд.

Может быть считать только команды по отдельности и потом связать их вместе?

2. Информационный текст вписать в checkedListBox1

3. Подать команду или блок команд.

4. Поставить галку в checkedListBox1.


Примерно так, думаю сейчас более понятно объяснил.

#58 
  moose старожил26.11.17 13:48
NEW 26.11.17 13:48 
в ответ beautiful_man 26.11.17 11:10
Примерно так, думаю сейчас более понятно объяснил.

что здесь "более понятно", мне непонятно : ( как была каша, так и остается. я бы на вашем месте попытался все таки еще раз задачу внятно сформулировать. вы вещаете так, как будто мы с вами в одной комнате уже месяц находимся, видим, что вы там уже наделали, что уже сделали, какие чембоксы, зачем и пр. а мы ничего не видим и не знаем, кроме того, что вы здесь излагаете.

#59 
maxxxl79 гость26.11.17 13:49
NEW 26.11.17 13:49 
в ответ beautiful_man 26.11.17 11:10, Последний раз изменено 26.11.17 14:04 (maxxxl79)

поменял изначальный пример:

private async void button1_Click(object sender, EventArgs e)
{
var lines = System.IO.File.ReadAllLines(FILE_NAME);


foreach (var line in lines)
{
//получаем текст, исходя из того, что строка должна начинаться с него
var text = line.Split(',')[0];
checkedListBox1.Items.Add(text);//добавляем текст в список
await Task.Delay(500);//дополнительная пауза для наглядности, удалите если не надо


//ищем команды
var matches = Regex.Matches(line, @"([\w+\s*\/\[\]]+,[\s*>?.?\d]+)");
//каждую команду отправляем, не понял, что имеете в виду под отправку всего блока команд - измените как нужно, здесь отправляем каждую команду, которую нашли в строке последовательно
foreach (Match match in matches)
{
var ar = match.Value.Split(',');
SendXPCommand(ar[0].Trim(), ar[1].Trim());//отправляем команду
await Task.Delay(1500);//для той же наглядности увеличенная пауза - поменяете как надо
}
checkedListBox1.SetItemChecked(checkedListBox1.Items.Count - 1, true);//выставляем галку
}
}


private void SendXPCommand(string command, string param)
{
Console.WriteLine($@"{nameof(SendXPCommand)}({command},{param})");
}



#60 
beautiful_man посетитель26.11.17 14:54
NEW 26.11.17 14:54 
в ответ maxxxl79 26.11.17 13:49
SendXPCommand(ar[0], ar[1]);

ar[1] не работало, ошибку показывало, добавил

int param;
int.TryParse(ar[1].Trim(), out param);

теперь выглядит так:


private async void readfile()
{
var lines = System.IO.File.ReadAllLines(@"data\738.chl");
foreach (var line in lines)
{
var text = line.Split(',')[0];
checkedListBox1.Items.Add(text);
await Task.Delay(500);
var matches = Regex.Matches(line, @"([\w+\s*\/\[\]]+,[\s*>?.?\d]+)");
foreach (Match match in matches)
{
var ar = match.Value.Split(',');
int param;
int.TryParse(ar[1].Trim(), out param);
SendXPCommands(ar[0],param);
await Task.Delay(500);
checkedListBox1.SetItemChecked(checkedListBox1.Items.Count - 1, true);
await Task.Delay(500);
}
}


и работает, maxxxl79 огромное спасибо.


ещё есть проблема с разбиранием массива:

параметер показан здесь

нужно извлечь текст из массива, массив от 0-40.

пробовал так:

взял параметр 5

SendXPCommands("sim/aircraft/view/acf_ICAO", 10, 5);

if (paramNum == 5)
{
char[] buf = new
char[binaryReader.BaseStream.Length - binaryReader.BaseStream.Position];
binaryReader.Read(buf, 0,
(int)(binaryReader.BaseStream.Length -
binaryReader.BaseStream.Position));
string ICAO = new string(buf);
ICAO = ICAO.Split(new[] { '\0' }, 2)[0];


#61 
maxxxl79 гость26.11.17 15:00
NEW 26.11.17 15:00 
в ответ beautiful_man 26.11.17 14:54
ar[1] не работало, ошибку показывало, добавил

Вы видимо не обновили метод SendXPCommand, там второй аргумент стал строковым, т.к. в примерах, которые привели встречалось ">0.0" - как такое должно обрабатываться Вы не пояснили, поэтому я для простоты примера просто передавал строку.

#62 
maxxxl79 гость26.11.17 15:06
NEW 26.11.17 15:06 
в ответ beautiful_man 26.11.17 14:54

насчет массива не совсем понял, по указанной ссылке там просто массив байт, надо представить это текстом?


тогда в зависимости от предполагаемой кодировки можно сделать просто:

string text = System.Text.Encoding.Default.GetString(bytes);


#63 
AlexNek патриот26.11.17 15:18
AlexNek
NEW 26.11.17 15:18 
в ответ maxxxl79 26.11.17 01:38
Не догадываюсь. Поделитесь. Интересно.

Если интересно открывайте новую тему, обсудим и var и прочие навороты.

А пока попробуйте перенести вашу строку в ресурсы.

#64 
maxxxl79 гость26.11.17 17:22
NEW 26.11.17 17:22 
в ответ AlexNek 26.11.17 15:18

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


#65 
AlexNek патриот26.11.17 17:55
AlexNek
NEW 26.11.17 17:55 
в ответ maxxxl79 26.11.17 17:22
если уж принципиально надо использовать интерполяцию и ресурсы, то почему нельзя хранить в ресурсах статическую часть (если надо, локализованную), а подстановку делать в интерполяции

А можно пошаговую инструкцию для программиста по локализации проекта сделанного "любителем последних извращений"?


#66 
maxxxl79 гость26.11.17 18:11
NEW 26.11.17 18:11 
в ответ AlexNek 26.11.17 17:55

Вы не нервничайте, а то ещё немного и похоже на личности перейдете :) Вы выдаете какой-то обобщенный тезис, а потом хватаетесь за частные случаи. Я согласен, что интерполяция не несет преимуществ для задач локализации строк из ресурсов. Под тем, что Вы процитировали, я имел в виду просто вариант:

Console.WriteLine($@"{Properties.Resources.Command} {command}");

как пример.


Но раз уж Вы решили теперь удариться в конкретику, скажите, как в конкретной задаче слепка строки, которая состоит только из динамических данных (например, того же входного текстового файла или БД) я должен использовать ресурсы? Что собственно я должен в этих ресурсах в этом случае хранить, к чему Вы о них заговорили?


#67 
AlexNek патриот26.11.17 18:24
AlexNek
NEW 26.11.17 18:24 
в ответ maxxxl79 26.11.17 18:11
что интерполяция не несет преимуществ для задач локализации строк из ресурсов

Я как то не вижу особых преимуществ интерполяции вообще ни в одной задаче, по сравнению с теми недостатками которые создает это использование.


#68 
beautiful_man посетитель26.11.17 19:09
NEW 26.11.17 19:09 
в ответ maxxxl79 26.11.17 15:06

maxxxl79 с массивами разобрался,

если будут ещё какие нибудь вопросы,

здесь стукну, или лучше в личку тебе?

#69 
maxxxl79 гость26.11.17 19:31
NEW 26.11.17 19:31 
в ответ beautiful_man 26.11.17 19:09

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


#70 
beautiful_man посетитель05.12.17 16:17
NEW 05.12.17 16:17 
в ответ maxxxl79 26.11.17 19:31

Привет всем,


не подскажет кто нибудь, как использовать число из стринга в "Thread.Sleep()"?


Например из файла прочитал число "1000" или "1",

передал в "string wait;"

и в "Thread.Sleep(wait)" использовать.


Время для паузы стоит в файле, как преобразовать в миллисекунды не пойму.


#71 
Программист коренной житель05.12.17 16:48
NEW 05.12.17 16:48 
в ответ beautiful_man 05.12.17 16:17

int.Parse () - может бросить исключение

int.TryParse() - исключение не бросает :)

#72 
Murr патриот05.12.17 19:39
Murr
NEW 05.12.17 19:39 
в ответ beautiful_man 05.12.17 16:17

как использовать число из стринга

-----

#2, строка 2?


преобразовать в миллисекунды

-----

Если читать именно то, что написано - ответом будет одно слово - nевозможно...

#73 
beautiful_man посетитель06.12.17 12:31
NEW 06.12.17 12:31 
в ответ Murr 05.12.17 19:39, Последний раз изменено 06.12.17 12:36 (beautiful_man)

Посмотрите пожалуйста код,


private void Chek()
{
var lines = System.IO.File.ReadAllLines("config.cfg");
foreach (var line in lines)
{
var matches = Regex.Matches(line, @"([\w+\s*\/\[\]]+,[\s*>?.?\d]+)");
foreach (Match match in matches)
{
var text = line.Split(',')[0];
checkedListBox1.Items.Add(text);
MessageBox.Show(text);
var ar = match.Value.Split(',');
int param;
int.TryParse(ar[1].Trim(), out param);
do
{
Thread.Sleep(500);
SendXPCommands(ar[0], param);
Thread.Sleep(500);
Thread XPRead = new Thread(new ThreadStart(chekCommand));
XPRead.Start();
SendXPCommands(ar[0], 10, param);
Thread.Sleep(500);
SendXPCommands(ar[0], 0, param);

}
while (resultat != param.ToString());
{
checkedListBox1.SetItemChecked(checkedListBox1.Items.Count - 1, true);
}
}
}
}

происходит всё как нужно, но если убираю:

MessageBox.Show(text)

проходит всю процедуру, а потом уже все строчки разом вписывает в "checkedListBox".

А нужно что бы прочитал строку, вписал в checkedListBox, провёл процедуру, убедился что результат положительный, поставил галку в checkedListBox,

только тогда начал читать следующую строку.


Ребят, большая просьба, не отправляйте меня учить C#, если кто знает, подскажите пожалуйста конкретным примером.

Спасибо за понимание.

#74 
Murr патриот06.12.17 15:18
Murr
NEW 06.12.17 15:18 
в ответ beautiful_man 06.12.17 12:31

происходит всё как нужно, но если убираю:

-----

Окошко мессагебоха отрисовывается поверх окошка програмки.

После его закрытия - перерисовываются затронутые им контролы.

Вопрос - когда же ты будешь перерисовывать свой чецклистбох?..


И это... как у тебя работает этот моментик

while (resultat != param.ToString());
{
checkedListBox1.SetItemChecked(checkedListBox1.Items.Count - 1, true);
}

пояснить не затруднит?

#75 
Murr патриот06.12.17 15:22
Murr
NEW 06.12.17 15:22 
в ответ Murr 06.12.17 15:18

П.С. Вариантов - два:

- слушать и делать что тебе говорят - в частности - расписать все в деталях как советует АлехНеk

- пинать махххл79, который знает что и как тебе лучше...

#76 
beautiful_man посетитель06.12.17 15:40
NEW 06.12.17 15:40 
в ответ Murr 06.12.17 15:18
Вопрос - когда же ты будешь перерисовывать свой чецклистбох?..

в чеклистбокс вписывается текст сразу:

var lines = System.IO.File.ReadAllLines("config.cfg");
foreach (var line in lines)
{
var matches = Regex.Matches(line, @"([\w+\s*\/\[\]]+,[\s*>?.?\d]+)");
foreach (Match match in matches)
{
var text = line.Split(',')[0];
checkedListBox1.Items.Add(text);

потом оправляется команда и проверяется выполнена ли она,

взял метод "do", что бы крутилось пока не выполниться:


var ar = match.Value.Split(',');
int param;
int.TryParse(ar[1].Trim(), out param);
do
{
Thread.Sleep(500);
SendXPCommands(ar[0], param);
Thread.Sleep(500);
Thread XPRead = new Thread(new ThreadStart(chekCommand));
XPRead.Start();
SendXPCommands(ar[0], 10, param);
Thread.Sleep(500);
SendXPCommands(ar[0], 0, param);
}

проверял методом "while", если команда выполнена, поставить галку в чеклистбоксе,

while (resultat != param.ToString());
{
checkedListBox1.SetItemChecked(checkedListBox1.Items.Count - 1, true);
}

но он почему то вначале выполняет команды, а потом уже пишет разом весь текст в чеклистбокс и ставит галки.


нужно:

1. Вписать в чеклистпокс текст

2. выполнить команду.

3. Проверить выполнена ли команда

3.1 Если не выполнена, повоторить пункт 2, 3

4. Если команда выполнена, поставить галку в чеклистбокс напротив вписанного текста.

5. Читать следующую строку в файле.


Если кому интересуют детали, могу через скайп показать.


#77 
Murr патриот06.12.17 17:58
Murr
NEW 06.12.17 17:58 
в ответ beautiful_man 06.12.17 15:40

Ты просишь не отправлять тебя учить С#.

Но без этих знаний ты не можешь написать код.


взял метод "do", что бы крутилось пока не выполниться

-----

Не взял метод, а использовал оператор. Как выглядит оператор и как он работает вполне нужно/можно смотреть в доках.


проверял методом "while", если команда выполнена, поставить галку в чеклистбоксе,

-----

Вхиле - тоже не метод, тоже оператор.

Если его рассматривать так как описно у тебя, то

while (resultat != param.ToString()) /* именно эта часть - до точки с запятой - должна выполнятся.*/ ;

Но твоя проблема в том, что данный вхиле - не тот вхиле который ты ожидаешь/описываешь. Это часть ДО - смотри в доках детали.

В программировании на языках типа Шарпа конструкция означает не то что ты для нее задумал, а то что определено синтаксисом языка... даже если вроде как должно быть по-другому - будет так как написано. По-другому - не будет.


но он почему то вначале выполняет команды, а потом уже пишет разом весь текст в чеклистбокс и ставит галки.

-----

Прими на веру - там делается именно то, что написано в программе.

Раздели на три части:

- Менеджер - читает фаил, отдает строки Парсеру, отдает блоки Команд Исполнителю и помещает нужное в ЧекедЛистБох.

- Парсер - каким угодно методом нарезает полученную строку на блок Команд.

- Исполнитель - выполняет Команды и сообщает результат.

Ну и, разумеется, Команды оформи как Команды.

Чем меньше кода тебе надо будет рассматривать за раз - тем быстрее ты поймешь где у тебя проблема.



1. Вписать в чеклистпокс текст

-----

Ну тут самая первая проблема в том, что непонятно какой текст вписывать в чеклистбох. Откуда его брать - не написано...


Честно говоря, Я до сих пор не до конца понимаю, что именно ты называешь командой.

Сначала это

было - < Текст >< Запятая >< Цифра >

потом < Текст >< Запятая >< Число >

потом < Текст >< Запятая >< Текст >< Запятая >< Цифра >

потом < Текст >< Запятая >< Текст >< Запятая >< Цифра >< Запятая >< Текст >< Запятая >< Цифра >...

[/пре]


Насколько Я могу судить - у тебя есть нечто, что базируется на строке текста имеет:

- текст который нужно поместить в ЧекедЛистБох,

- должно содержать одну и более Комманд,

- возможность выполнить команды

- сообщить результат...

Это может быть таким:

[pre]
class TCommandBlock

{

public TCommandBlock(string text)

{

if (TParser.Validate(text))

throw Exception("Wrong command text");

Text4ListBox = TParser.GetListBoxText(text);

Commands = TParser.GetCommands(text);

Status = TStatus.Unknown;

}

public string Text4ListBox { get; internal set; }

public List<TCommand> Command { get; internal set; }

public TStatus Status { get; internal set; }

public bool Execute()

{

bool result = true;

// here should be a code to execute block of the command

// it should change result to false if fail

if(result == true)

{

Status = TStatus.Ok;

}

else

{

Status = TStatus.Fail;

}

return result;

}

}




Разумеется, что это мало похоже на то что ты ожидаешь и тебе непонятно куда его пристраивать... но чтобы понять - надо учится.

Пока скажу что Менеджер должен получить строку из файла и создать ТКомманБлоцк на базе этой строки. Потом - управлять заполнением чецклистбоха, выполнением блока Комманд и проверкой статуса после выполнения.

#78 
beautiful_man посетитель06.12.17 18:56
NEW 06.12.17 18:56 
в ответ Murr 06.12.17 17:58

Спасибо за разъяснение,

отключил чеклистбокс,

команды читаются, отправляются, проверются, если надо, повторяются, если команда исполнена, читается следующая строка,

единственная проблема, в чеклистбокс вписываются все разом после проверки.

Почему, пока не понимаю.

Учиться никогда не поздно, но вот такой я ученик, учусь на конкретных примерах.

Даже просто прочитать строки из файла и вписать их построчно в чеклистбокс не получается,

вписывается все разом.

Может быть кто нибудь на конкретном примере, как построчно вписывать строчки из файла в чеклистбокс или листбокс?

#79 
Murr патриот06.12.17 19:23
Murr
NEW 06.12.17 19:23 
в ответ beautiful_man 06.12.17 18:56

Почему, пока не понимаю.

-----

Это довольно далеко от начал языка - это то, как форма/система отрисовывает контролы.

Когда ты заполняешь контролы данными они перерисовываются не сразу.

Так что либо ты ждешь когда система определит необходимость перерисовать контрол,

либо сообщаешь системе что она должна это делать и даешь возможность это сделать.

Читай Application.DoEvents

и Control.Invalidate & Co...

#80 
beautiful_man посетитель07.12.17 08:47
NEW 07.12.17 08:47 
в ответ Murr 06.12.17 19:23
Читай Application.DoEventsи Control.Invalidate & Co...


Murr, а вот за это спасибо, теперь работает как надо!


#81 
Murr патриот07.12.17 09:42
Murr
NEW 07.12.17 09:42 
в ответ beautiful_man 07.12.17 08:47

Тебе об этом говорилось в сообщении #5...

#82 
beautiful_man посетитель07.12.17 10:34
NEW 07.12.17 10:34 
в ответ Murr 07.12.17 09:42

не понял сразу, но это не завершение, ещё буду обращаться! улыб

#83 
beautiful_man посетитель09.12.17 10:42
NEW 09.12.17 10:42 
в ответ beautiful_man 07.12.17 10:34

Привет всем,


что то не выходит ничего с "Thread.Sleep".

string wait = "00:00:00." + time;
DateTime dt = Convert.ToDateTime(wait);
MessageBox.Show(dt.ToString("ffff"));
int millis_pause = dt.ToString("ffff");
Thread.Sleep(millis_pause);

с int millis_pause = dt.ToString("ffff"); не выходит,

куда можно передать dt.ToString("ffff") чтобы потом в Thread.Sleep использовать?


#84 
Murr патриот09.12.17 11:26
Murr
NEW 09.12.17 11:26 
в ответ beautiful_man 09.12.17 10:42

Читаем топик и чуточку думаем над прочитанным...

#85 
beautiful_man посетитель09.12.17 11:43
NEW 09.12.17 11:43 
в ответ Murr 09.12.17 11:26, Последний раз изменено 09.12.17 12:09 (beautiful_man)

Murr, ну не глумись битте :))

сам допёр.

забракуй:))))

string wait = "00:00:00." + time;
DateTime dt = Convert.ToDateTime(wait);
string value = dt.ToString("ffff");
TimeSpan interval = TimeSpan.Parse(value);
int num= Convert.ToInt32(value);
Thread.Sleep(num);


#86 
  moose старожил09.12.17 13:03
NEW 09.12.17 13:03 
в ответ beautiful_man 09.12.17 11:43

а что здесь вообще пытаетесь сделать? вижу, что вычислить время паузы. но не могу врубиться, из чего, и почему через дакие дебри? похоже, нужно что-то, лежащее в строчке time, и нам не показываемое, превратить в миллисекунды, но это только спекуляции...

#87 
beautiful_man посетитель09.12.17 13:31
NEW 09.12.17 13:31 
в ответ moose 09.12.17 13:03, Последний раз изменено 09.12.17 13:34 (beautiful_man)

в текстовом файле стоит 5000,

считываю это в стринг time,

Time перевожу в миллисекунду,

и использую это в треад слитп

#88 
Murr патриот09.12.17 14:19
Murr
NEW 09.12.17 14:19 
в ответ beautiful_man 09.12.17 13:31

в текстовом файле стоит 5000

-----

Хммм... Два тупых вопроса:

- что обозначает 5000 в текстовом файле?

- чему равно значение нум при передаче?

#89 
  moose старожил09.12.17 14:20
NEW 09.12.17 14:20 
в ответ beautiful_man 09.12.17 13:31, Последний раз изменено 09.12.17 14:21 (moose)

если у вас уже имеется строчка time, в которой находится значение "5000", то чего вы пытаетесь достичь с помощью DateTime, TimeSpan etc? почему просто не получить число непосредственно из строки? вы здесь, видимо, народ разводите, и таким образом развлекаетесь.

#90 
beautiful_man посетитель09.12.17 14:38
NEW 09.12.17 14:38 
в ответ moose 09.12.17 14:20

не кого не развожу и не развлекаюсь,

это был единственный вариант, который работает

#91 
  moose старожил09.12.17 14:54
NEW 09.12.17 14:54 
в ответ beautiful_man 09.12.17 14:38, Последний раз изменено 09.12.17 14:57 (moose)

ничего страшного, некоторые, вижу, развлекаются не меньше вашего, им нравится, когда их разводят : )

а я просто не верю, что бывают настолько тупые люди, отсюда, как шерлок холмс, делаю вывод: если отбросить все версии, противоречащие несомненным фактам, то останется истинная версия. и она состоит в том, что вы разводите народ. ну, или ... все равно не верю ...


зы. открыть, что ли, тему "как запрограммировать модель вселенной на java?", приводить туда какие-нибудь куски где-нибудь взятого кода и задавать вопросы. сообщество поможет, как вы считаете?

#92 
beautiful_man посетитель09.12.17 18:30
NEW 09.12.17 18:30 
в ответ moose 09.12.17 14:54

moose, оскорблять меня никто не давал тебе права.

Брызгать слюной тоже не надо, пройди просто мимо.

Если этот подраздел форума только для профессионалов, тогда просьба к администрации форума удалить мою тему.

#93 
AlexNek патриот09.12.17 19:36
AlexNek
NEW 09.12.17 19:36 
в ответ beautiful_man 09.12.17 18:30

Вы зря обижаетесь, Ваш способ обучения, мягко говоря, немного странный. Написать прогу ничего не изучая, а только прося чтобы, что то написали конкретное, по моему мнению, совершенно тупиковый путь. Я уже вам рекомендовал написать прогу вначале просто на русском, а с переводом на шарп уже поможем.


Кстати, данный вопрос касается именно перевода. "У меня есть целое число как строка, как ее перевести в 'нормальное' целое число"?


Самый простой вариант, без всяких проверок

int duration = int.Parse("5000");

Так вообще лучше не делать, но для для начала вполне допустимо. Вначале хорошо бы проверить, что строка не пустая и не нулевая, а также позаботится чтобы прога не вылетала, если на вход попадет не целое число, а например буквы. Но это уже усложнение, которое сейчас не требуется.

#94 
beautiful_man посетитель09.12.17 19:54
NEW 09.12.17 19:54 
в ответ AlexNek 09.12.17 19:36

разве я где-то писал просьбу меня чему нибудь научить?

Или просил написать мне код?

Кроме наглядных примеров ничего не спрашивал.

Или moose меня лично знает, что бы судить тупой я или нет.

Собрался сброд заумных кодеров- учителей, кроме как учить других ничего не могут.

Превратили фору в срач и довольны.

Кому не понятны мои вопросы, предлагал наглядно показать, хорошо нашлись люди поняли и чем могли - помогли.

По этому тема закрыта!

Всем спасибо, все свободны

#95 
  moose старожил09.12.17 20:48
NEW 09.12.17 20:48 
в ответ beautiful_man 09.12.17 19:54

я буду скучать!

#96 
AlexNek патриот10.12.17 13:05
AlexNek
NEW 10.12.17 13:05 
в ответ beautiful_man 09.12.17 19:54

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

а когда знаний нет и для учебы есть серъезные противопоказания, то продукт обычно покупается.

Делать что то самому, в надежде что когда нибудь получится, тоже можно, если находится на необитаемом острове.

А так, лучше лечить противопоказания к учёбе, пригодится на будущее.

#97 
beautiful_man посетитель10.12.17 16:21
NEW 10.12.17 16:21 
в ответ AlexNek 10.12.17 13:05, Последний раз изменено 10.12.17 16:23 (beautiful_man)

Alex, не переживай,

продукт как таковой не нужен,

продукты делаются для продаж, чем я занимаюсь, не продаётся, это просто увлечение.

По поводу учебы могу сказать только одно,

у каждого свой подход.

Мой подход „learning by doing“.

Ты можешь мне не верить, но чего я хотел добитьсяработает, хватило тех знаний, которые имею и

конечно подсказки здесь адекватных ребят помогли.

Коммерческие разработки доводилось не раз делать, но не в C#, за что получаю зарплату последние 15 лет.

А читать здесь реплики засранцев теоретиков,

нет больше желания.

Кто хочет знаниями померится, пусть рискнёт софтину для симулятора X-Plane сделать, под все крафты, например Jardesign, Flight Factor, Felis, и.т.д., для всенародного пользования, бесплатно.

Есть смелые, или только реплики опять будут.


#98 
AlexNek патриот10.12.17 18:05
AlexNek
NEW 10.12.17 18:05 
в ответ beautiful_man 10.12.17 16:21

Я не переживаю, мне просто непонятен подход "ничему не хочу учится"

Потому как любая инженерная работа требует постоянного изучения чего то нового.


продукты делаются для продаж

Я уж и не упомню сколько сделал прог лично для себя, да и по описанию очень напоминало задачку из курса программирования.


но чего я хотел добиться работает,

Ну замечательно, я рад за вас. Только вот в следующий раз опять начнете эксперименты.

Всё что я хотел - дать вам базовые понятия, что бы в следующий раз было проще. Но вы отчего то страшно сопротивляетесь.


софтину для симулятора X-Plane

это не то?

https://github.com/nasa/XPlaneConnect


А так, не вижу смысла делать то, что мне совершенно не нужно и неинтересно.


#99 
  moose старожил10.12.17 22:12
NEW 10.12.17 22:12 
в ответ beautiful_man 10.12.17 16:21
реплики засранцев теоретиков,

это, видимо, меня имелось ввиду. я вас сперва за хитроумного весельчака-разводилу принял, но после вашего юношеского всплеска сознания верю, что вы никого не разводите, а просто то, во что я не хотел верить. или очень хороший психолог, и продолжение развода очень тонко разыграли, и я ведусь, как и все. но это теперь вряд ли.

письками предлагаете помериться? у вас длинее, не возражую. и толще. и тычете вы ею во все дырки, а вдруг где-то совпадет. не стоит только, вот в этом и вся проблема.

и не "неправильный подход" у вас, а вообще отсутствие всякого подхода. вот попробуйте себе вообразить, что физику в школе учат, предлагая прыгнуть с зонтиком с этажа эдак третьего, или два гвоздя в руки и - в розетку. а это как раз то, что вы пытаетесь проделать. вы прочли хотя бы какую-нибудь книжку для даммиз (попробуйте, а вдруг потянете?). судя по тому, как безграмотно вы пишете, читать вы вообще не любите. больше в симуляторах сидите. научитесь хотя бы азы понимать той области, в которой пытаетесь что-то сделать, в гугле вашу проблему сформулировать (например, sleep in c#; c# convert string to int), а вы почему-то решили, что у вас такая толстая и длинная писька (хотя и не стоячая), что у вас и так все получится. отсюда и все беды. но ничего, дерзайте, и мир будет у ваших ног, когда увидит ваши флай-стимуляторы, которые вы соберете из советов хороших людей : )

beautiful_man посетитель11.12.17 08:59
NEW 11.12.17 08:59 
в ответ moose 10.12.17 22:12

Ребята,

давайте жить дружно!


Если будет стоять вопрос: "научите меня, как решить ту или иную проблему", тогда учите.

А если стоит вопрос: "показать на конкретном примере", тогда кто может покажите, кто не может проходит мимо.

Зачем глумиться.


Многие не поняли что требуется и начали кидать реплики, что сложного просто пройти мимо.


Может я не правильно понял и здесь могут открываться темы только теми людьми, которые имеют определённые знания.

Прежде чем открыть тему, я пытался найти ответы на мои вопросы здесь в FAQ.

Murr патриот11.12.17 09:49
Murr
NEW 11.12.17 09:49 
в ответ beautiful_man 11.12.17 08:59

Мой подход „learning by doing“.

-----

Перед тем как читать алгебру и начала анализа все же надо иметь минимальные знаnия по арифметике...

beautiful_man посетитель11.12.17 10:05
NEW 11.12.17 10:05 
в ответ Murr 11.12.17 09:49

минимальные знания имеются,

иначе бы вообще никаких вопросов не возникало,

оставляем теорию и переходим к практическим занятиям.

Не надо судить людей по своему уровню знаний, каждый в чем то пофан.


Ноев Ковчег был построен любителями,

профессионалы построили Титаник.

Murr патриот11.12.17 10:10
Murr
NEW 11.12.17 10:10 
в ответ beautiful_man 11.12.17 10:05

оставляем теорию и переходим к практическим занятиям.

------

Сколько лет практики тебе потребуется, чтобы самостоятельно докопаться до #80

и почему ты это не сделал сам?

beautiful_man посетитель11.12.17 11:47
NEW 11.12.17 11:47 
в ответ Murr 11.12.17 10:10
Сколько лет практики тебе потребуется, чтобы самостоятельно докопаться до #80и почему ты это не сделал сам?

Сколько нужно будет, столько и потребуется.


Murr, при всём уважении к твоим знаниям и подсказкам, планку опусти пожалуйста.

У тебя и у других нет достаточной информации, что бы судить меня.

Всё что я делаю, вы не видели, да и не нужно вам.

Запретить мне чем то увлекаться, тоже ни у кого не получится, как бы вы меня не гнобили.

Нос задирать, если вы чего то больше других знаете или умеете, просто не прилично.


Ещё раз для всех, ни кто ни кого не заставляет, есть интерес привести конкретные примеры, буду при много благодарен.

Нет интереса, проходим мимо, без комментариев.

Murr патриот11.12.17 12:38
Murr
NEW 11.12.17 12:38 
в ответ beautiful_man 11.12.17 11:47

Сколько нужно будет, столько и потребуется.

нет достаточной информации

-----

У тебя в обоих высказываниях ошибки.

В первом случае - методом тыка найти ту информацию невозможно. Она просто вне той области где можно потыкать - надо точно знать где и что искать.

Во втором - тоже ошибаешься - совершаемые новичками ошибки давно классифицированы и методы их исправления тоже не секретны... как и способы контроля.



планку опусти пожалуйста.

-----

Не могу. Мне не интересно работать с низкой планкой. Мне интересно помогать расти до моего уровня...


Запретить мне

-----

Хммм... Я тебе что-то запрещал?



как бы вы меня не гнобили.

-----

Тебе, кстати, были заданы два простых вопроса - ответов пока не получено.

Вопросы были совершенно примитивные - на проверку понимания того чем пользуешься.

Если это оценивается как - гнобили - ну что же - не буду больше задавать вопросов.

Но не задав вопросов и не получив ответов, увы, не возможно понять что именно ты

не понимаешь (я не говорю про не знаешь - я говорю про не понимаешь) и, соответственно,

ткнуть тебя в нужные доки не получится...



AlexNek патриот11.12.17 21:35
AlexNek
NEW 11.12.17 21:35 
в ответ beautiful_man 11.12.17 11:47
Всё что я делаю, вы не видели, да и не нужно вам.

Вообще то, достаточно того что мы тут видели, как идет процесс разработки и какие получаются результаты.

То что Вы считаете гноблением просто попытка дать вам нечто большое. Ведь написать конкретный код это самое простое, что может быть здесь. Написал и забыл.

Программирование - это не обучение езды на одноколесном велосипеде, когда набив море шишек можно чему то научится.

Да даже и там нужно иметь некий набор базовых знаний, вот этот то набор Вам и хотели дать, но такого яростного сопротивления я еще никогда не встречал.

Ведь проблема то у Вас не в малом знании языка, для понимания которого и нужны конкретные примеры, а в полном отсутствии понятия алгоритма, вы его просто заменяете понятием, попробую так или так.

Я может приготовлением еды увлекаюсь, и когда какой то повар скажет мне, давай я тебе расскажу базовые знания по приготовлению еды, я никогда не буду брыкаться и говорить пошел вон, я поваром быть не собираюсь. Потому как вроде ясно, что для увлечения это тоже очень полезно.

  moose старожил11.12.17 23:04
NEW 11.12.17 23:04 
в ответ AlexNek 11.12.17 21:35
Всё что я делаю, вы не видели, да и не нужно вам.


beautiful_man посетитель13.12.17 16:00
NEW 13.12.17 16:00 
в ответ moose 11.12.17 23:04

прикольно moose,

давай оставим подь....ки, согласен?


Идём дальше. :))))


в файле есть значения:

-0.5
0
0.5
1

читаются в ar[1] "0" и "1" без проблем, а вот с "-0.5" и "0.5" проблемa.

код:


int param;
var lines = System.IO.File.ReadAllLines("data\\" + lbl_aircraft_name.Text + "\\test.cfg");
foreach (var line in lines)
{
var text = line.Split(',')[0];
checkedListBox1.Items.Add(text);
var matches = Regex.Matches(line, @"([\w+\s*\/\[\]]+,[\s*>?.?\d]+)");
foreach (Match match in matches)
{
var ar = match.Value.Split(',');
int.TryParse(ar[1].Trim(), out param);
MessageBox.Show(param.ToString());
//SendXPCommands(ar[0], param);
}
}

если конвертирую в decimal, позитивные "0.5" читает, негативные "-0.5" не читает.

var x = Convert.ToDecimal(ar[1]);
MessageBox.Show(x.ToString())

в http://rubular.com не разберусь как добавить распознание негативных значений.

кто может подредактировать "([\w+\s*\/\[\]]+,[\s*>?.?\d]+)"


файл с числами изменю на все децимальные значения:

-0.5
0.0
0.5
1.0

думаю если подредактировать "([\w+\s*\/\[\]]+,[\s*>?.?\d]+)",

и конвертиравать "ar[1]" в decimal и потом результат передать в "int param"?

"int.TryParse(ar[1].???? out param) то должно всё получиться.


ребят, если мысли какие есть, на конкретном примере покажите и просьба не отправлять меня за парту.

это всё на любительской основе делается.


  moose старожил13.12.17 17:11
NEW 13.12.17 17:11 
в ответ beautiful_man 13.12.17 16:00

google-> convert string to double c# example

и выбирайте, какой способ вам больше по душе. их довольно много.

beautiful_man посетитель13.12.17 17:38
NEW 13.12.17 17:38 
в ответ moose 13.12.17 17:11, Последний раз изменено 13.12.17 17:49 (beautiful_man)
google-> convert string to double c# example


с этим разобрался "([\w+\s*\/\[\]]+,[\s*>?.?\>\->\d]+)",

ещё надо string to int, а тут у меня тормоза.



  moose старожил13.12.17 19:34
NEW 13.12.17 19:34 
в ответ beautiful_man 13.12.17 17:38

"sie schaffen das" (c)

AlexNek патриот13.12.17 22:52
AlexNek
NEW 13.12.17 22:52 
в ответ beautiful_man 13.12.17 16:00
Regex.Matches

На кой фиг оно там надо?

Прочитали строку, преобразовали значение.


double value = double.Parse(str);

beautiful_man посетитель14.12.17 08:48
NEW 14.12.17 08:48 
в ответ AlexNek 13.12.17 22:52
Regex.Matches

убрал это, но проблема осталась,

что например в int 0.5 выглядеть должно 2f/4,

что то туплю.

посмотрите код:

int param;
var lines = System.IO.File.ReadAllLines(@"test.cfg");
foreach (var line in lines)
{
var ar = line.Split(',');
double value = double.Parse(x.ToString());
int.TryParse(value.ToString(), out param)
MessageBox.Show(value.ToString());
SendXPCommands(ar[1], param);

в int.param узнаёт 0 и 1, а -0.5, 0.5 не узнаёт,

как то надо форматировать -0.5, 0.5 в 2f/4, -2f/4.


Murr патриот14.12.17 10:38
Murr
NEW 14.12.17 10:38 
в ответ beautiful_man 14.12.17 08:48

что например в int 0.5 выглядеть должно 2f/4,

------

LOF...


посмотрите код:

-----

Зачем?

Ну ладно - когда насмеемся и из-под стола вылезем - может и посмотрим...


что то туплю.

-----

Разумеется. Стоит почитать что-нибудь по типам данных в шарпе...

beautiful_man посетитель14.12.17 10:49
NEW 14.12.17 10:49 
в ответ Murr 14.12.17 10:38
Ну ладно - когда насмеемся и из-под стола вылезем - может и посмотрим...

спасибо, умете мотивировать.

Murr патриот14.12.17 11:29
Murr
NEW 14.12.17 11:29 
в ответ beautiful_man 14.12.17 10:49

Исходя из #103


Арифметику, батенька, все же придется учить до матана...

beautiful_man завсегдатай14.12.17 12:54
NEW 14.12.17 12:54 
в ответ Murr 14.12.17 11:29

Murr,


давай без подьё...к.

Сам то можешь?

Покажи тогда, тебе же это не трудно.

Murr патриот14.12.17 13:58
Murr
NEW 14.12.17 13:58 
в ответ beautiful_man 14.12.17 12:54
Покажи тогда, тебе же это не трудно.

-----

Показать - не могу. Потому как это невозможно.

И обучить тебя тому что объясняет почему это не возможно - тоже не могу - ты просишь этого не делать.

Так что остается два варианта - либо ты изучаешь необходимое самостоятельно и тем способом которым хочешь, либо... ищешь какие-то курсы где тебе это объяснят.

Ну и конечно ничто не мешает как следует по применять "метод тыка" до того как начнешь изучать необходимое.


Сам то можешь?

-----

Не знаю - Я до сих пор не видел полного определения задачи.


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

Думаю, что к вечеру будет что-то рабочее...

Погнали?

beautiful_man завсегдатай14.12.17 14:35
NEW 14.12.17 14:35 
в ответ Murr 14.12.17 13:58

Работа не хрен, стояла и будет стоять!:))


займись лучше этим:

число -0.5/0.5 перевести в int.

как готово будет, можешь по работе делать дальше. :))

double d_param = double.Parse(ar[2]);
MessageBox.Show(d_param.ToString());

всё правильно показывает.

В int как это грёбаное "-0.5", "0.5" предать?


Murr патриот14.12.17 15:14
Murr
NEW 14.12.17 15:14 
в ответ beautiful_man 14.12.17 14:35

В int как это грёбаное "-0.5", "0.5" предать?

------

Когда выяснишь - сообщи, плс...

beautiful_man завсегдатай14.12.17 15:23
NEW 14.12.17 15:23 
в ответ Murr 14.12.17 15:14

намекнул бы хотя бы, тогда бы и сообшил.

Murr патриот14.12.17 16:10
Murr
NEW 14.12.17 16:10 
в ответ beautiful_man 14.12.17 15:23

Я не намекнул - Я прямо написал.

Читаем #115 & #119 до понимания.

beautiful_man завсегдатай14.12.17 16:43
NEW 14.12.17 16:43 
в ответ Murr 14.12.17 16:10
LOF...

может без загадок, не весь сленг понимаю.

Программист коренной житель14.12.17 17:45
NEW 14.12.17 17:45 
в ответ beautiful_man 14.12.17 14:35
число -0.5/0.5 перевести в int.

Ты понимаешь, что int - это целое число? В то время как 0.5 - это число с плавающей точкой, т.е. не целое и состоит оно из целого числа + дробная часть (т.е. 0 + 0.5). Приводя число с плавающей точкой к целому числу, дробная часть просто отбрасывается.

0.5 (double) = 0 (int) + 0.5 (double) = 0 (int)

1.5 (double) = 1 (int) + 0.5 (double) = 1 (int)


beautiful_man завсегдатай14.12.17 18:25
NEW 14.12.17 18:25 
в ответ Программист 14.12.17 17:45

это понимаю, но не знаю как или каким методом это реализовать.

что можно-нужно использовать, float, long?

Murr патриот14.12.17 18:34
Murr
NEW 14.12.17 18:34 
в ответ beautiful_man 14.12.17 18:25

это понимаю

-----

Если бы ты это понимал - у тебя не возникали бы те вопросы которые ты задаешь...

Снова скажу - читай доку по типам данных в шарпе... до понимания предметa...

Программист коренной житель14.12.17 18:35
NEW 14.12.17 18:35 
в ответ beautiful_man 14.12.17 18:25

что именно ты не понимаешь?


не понимаешь как преобразовать double в int без потерь? - никак.

beautiful_man завсегдатай14.12.17 19:05
NEW 14.12.17 19:05 
в ответ Программист 14.12.17 18:35

допёр сам.

float param;
float.TryParse(ar[2].Trim(), out param);

спасибо!


Murr, ну чё, уже вечер!:)))

шутка!

Murr патриот14.12.17 21:11
Murr
NEW 14.12.17 21:11 
в ответ beautiful_man 14.12.17 19:05

допёр сам.

В int как это грёбаное "-0.5", "0.5" предать?

-----

А где там int? безум

AlexNek патриот14.12.17 21:32
AlexNek
NEW 14.12.17 21:32 
в ответ beautiful_man 14.12.17 08:48
SendXPCommands(ar[1], param);

Еще одно поле для экспериментов улыб

beautiful_man завсегдатай15.12.17 08:40
NEW 15.12.17 08:40 
в ответ AlexNek 14.12.17 21:32

AlexNek, какие есть предложения?

AlexNek патриот16.12.17 17:29
AlexNek
NEW 16.12.17 17:29 
в ответ beautiful_man 15.12.17 08:40

Все мои предложения Вам неприемлемы - захотеть чему то научится.

1 2 3 4 5 6 7 все