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

» Вопросы по программированию на C/С++

Автор: 127
Дата сообщения: 25.01.2016 15:53
На поверхности - это как раз когда в rc, это как раз норма и такие ресурсы легко редактировать без перекомпиляции всего файла.
А когда все в спп - это как раз изврат.
Автор: Aktaf
Дата сообщения: 25.01.2016 18:09
127 - на поверхности, это не в смысле как легче править и пр., а в видимую и легко доступное для просмотра и регулирования место. И я не предлагал или не просил обсуждать необходимость. А прошу помощь сделать.

Раз уж коснулись этого вопроса, тем более больше никто и не интересуется - когда возникает необходимость переделывать множество видео и среди них часть или большинство из них еще регулировать (повышать или понижать уровень громкости). Одновременно еще редактируешь видео. ТО каждый раз заглядывать в регулирование громкости забыть не сложно. Если звук у очередного видео будет слышно нормально, то, естественно просто забываешь. А перед этим, у предыдущего пришлось увеличивать или уменьшать громкость, на приличное значение. Тогда у следующего или следующих останется та же настройка, пока не перезагрузишь Даба или снова не понадобиться регулировать у следующего... Иногда можно вообще не заметить и отправить в готовые.
Когда дойдет бывает уже довольно много прошло, успел исходники удалить. А если это был эксклюзивный материал и уже не достать? Обратно изменять и подгонять...
А если этот регулятор будет с наружи, всегда будет видно он что-то меняет или в ""спячке".
Вот главная причина. Ну и попутно, станет легко доступным для настройки.
Автор: 127
Дата сообщения: 25.01.2016 19:56
так бы и сказал, что нужно регулятор громкости вынести в одно окно с основными контролами. так?
Автор: Aktaf
Дата сообщения: 25.01.2016 20:52
с основными контролами кнопками - да.
Это же уже очевидно. Вы чего, картинку смотреть не можете что ли?
на мой взгляд есть 2 варианта - http://savepic.su/6972621.htm - расположения этих элементов
Это ссылка на картинку!
Автор: arom84
Дата сообщения: 07.02.2016 13:34
Посоветуйте, может есть какое-то иное решение по сортировке данным в XML. Структура XML, такая, сортировка планировалась по значениям тега File или по значениям тега Date.

Код: <?xml version="1.0" encoding="windows-1251"?>
<DATA BaseDate="2016.01.11">
<EXTENSION>
<ITEM File=".bat" Date="2010" Notice="" Descr=""/>
<ITEM File=".cmd" Date="2008" Notice="" Descr=""/>
<ITEM File=".com" Date="2011" Notice="" Descr=""/>
<ITEM File=".jse" Date="2012" Notice="" Descr=""/>
<ITEM File=".tmp" Date="2009" Notice="" Descr=""/>
<ITEM File=".tmpfs" Date="2010" Notice="" Descr=""/>
<ITEM File=".vbe" Date="2014" Notice="" Descr=""/>
<ITEM File=".vbs" Date="2013" Notice="" Descr=""/>
<ITEM File=".jgp" Date="dd.mm.yyyy" Notice="Расширение свойственно файлам" Descr=""/>
</EXTENSION>
</DATA>
Автор: NeoAnomaly
Дата сообщения: 07.02.2016 15:49
arom84, именно на C/C++ это сделать надо?

З.Ы.
Более простое или элегантное - взять библиотеку для работы с XML, вот пример на PowerShell, грубо говоря, псевдокод )


Код: [xml]$xml = Get-Content "c:\source.xml"

$items = $xml.DATA.EXTENSION

$sortedCollection = $items.ITEM | Sort File

$items.RemoveAll()
$sortedCollection | foreach { $items.AppendChild($_) } | Out-Null

$xml.Save("c:\sorted.xml")
Автор: arom84
Дата сообщения: 07.02.2016 17:03
Да, на С++, а как эта библиотека для работы с XML называется?
Автор: NeoAnomaly
Дата сообщения: 07.02.2016 21:33
arom84, ну например в том же билдере есть компонент TXMLDocument, а так десятки их по запросу c++ xml library.

З.Ы.
На SO пикчу увидел:

Автор: arom84
Дата сообщения: 08.02.2016 10:15
Прошу прощения, но TXMLDocument не позволяет сортировать, у него нет для этого возможностей. Если я ошибаюсь, поправьте.
Автор: NeoAnomaly
Дата сообщения: 08.02.2016 10:30
arom84, я конечно могу ошибаться, но мне кажется, что ни одна библиотека не решит за вас вашу задачу, но любая библиотека умеет добавлять и удалять дочерние элементы. В том числе и TXMLDocument: Adding and deleting child nodes
Автор: Aktaf
Дата сообщения: 10.02.2016 20:47
В такой строке
    VDCheckRadioMenuItemByCommandW32(hMenu, ID_PANELAYOUT_INPUTPANEONLY, mPaneLayoutMode == kPaneLayoutInput);
можно как то RadioMenu заменить на AUTOCHECKBOX или (BUTTON, BS_AUTOCHECKBOX)
Если можно как правильно написать или что-то еще дополнительно нужно делать?
Если правильно понимаю это "точка" менять на "галочка".
Автор: Aktaf
Дата сообщения: 19.02.2016 00:33
Уважаемые
Есть одна задачка - необходимо установить "препятствие" от закрытия несколько под меню в Виртуал Дабе.
Меню устроен так же как у многих программах, "ступеньками". После запуска программы, нужно настраивать различные параметры обработки, возможность наблюдения при работе за состояниями видео, самой программы и пр. Почти все параметры можно устанавливать только по одному, даже те которые друг другу не мешают, не зависят от друг друга.
Поставил, галочку, точку и пр. на одну опцию, тут же окно закрывается. Снова нужно открывать и так помногу раз.
Хочется сделать чтобы их можно было настраивать за одно открытие как можно больше. Т.е. которые хочешь, все настроить и только после этого закрыть.
На мой взгляд такие как меню "Вид", около 10 настроек можно было бы использовать. Так же Меню Видео, Аудио.
Я пробовал по всякому. Пока выход вижу - такие меню - окна, перевести из разряда меню, в разряд диалогов. Выглядят они примерно одинаково. Однако, для такого преобразования очень много перелопачивать нужно.

Может кому известно какой-то иной способ. Именно, не переделывая большого массива. Как уже в начале писал, "установить какое-то препятствие". А после выполнения желаемых настроек, снять такое препятствие.
Автор: AlexDessar
Дата сообщения: 23.02.2016 21:19
[more] [more] Люди, помогите. Задача для большинства программистов 5-ти минутная. Я же далеко не программист. Знаю, что отправите читать про классы и переменные и про массивы. Но сейчас пока нет времени искать. Точнее нашел множество тем. Но у меня загвоздка, те массивы которые я считываю они не имеют определенного размера, а все что я за два дня нарыл мне не подходит. Часть кода мне помогли, написать часть я сам покумекал, а вот с последим циклом ну то-то ни как не получается самому. ПОМОГИТЕ нет времени самому разбираться.
{
String[] chekdrwRead1 = System.IO.File.ReadAllLines("D:\\chekdrawing1.txt", Encoding.Default);
String[] chekdrwRead2 = System.IO.File.ReadAllLines("D:\\chekdrawing2.txt", Encoding.Default);
for (int i = 0; i < chekdrwRead1.Length; i++)
if ((!chekdrwRead2[i].Contains(chekdrwRead1[i])))
for (int j = 0; j < chekdrwRead2.Length; j++)
if ((!chekdrwRead1[j].Contains(chekdrwRead2[j]))) ошибку выдает вот здесь.
{
listView1.Items.Add((chekdrwRead1[i].ToString()));
listView2.Items.Add((chekdrwRead2[i].ToString()));
}
Знаю, даже почему. Массивы у меня разной длины бывают вот и цикл заходит за пределы одного из них... Подскажите как это организовать. А то я как собака знаю л\все понимаю, а сказать не могу, в этом случае описать. Пишу в Visual Studio 2015ю.
Заранее ОГРОМНОЕ СПАСИБО. [/more] [/more]
Автор: Daniyar91
Дата сообщения: 24.02.2016 17:33
AlexDessar
Если что, то эта тема про C/C++ а не C#.

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

[more=Код]Тут специально нет никаких проверок на действительность аргументов, так сделано для ясности кода.
И еще, "Какой-либо текст".Contains("") == true поэтому если есть пустые строки, то возможно функция не правильно отработает.

Код: using System;
using System.Collections.Generic;
using System.Linq;

namespace ConsoleApplication1 {
class Program {
static void Main() {
var first = new[] { "12", "34", "56", "78", "90", "439" };
var second = new[] { "1", "6", "123", "456", "43", "347", "39" };
var q = Do(first, second); // q[0] = { "78", "90" }
// q[1] = { }
}

static List<string>[] Do(string[] first, string[] second) {
var set1 = new List<int>[2]; // индексы строк, для которых не нашлось подстрок.
var subStrings = new List<int>[2]; // индексы срок, которые являются подстроками.

for (int i = 0; i < 2; i++) {
set1[i] = new List<int>();
subStrings[i] = new List<int>();
}

var temp = new[] { first, second };

for (int L = 0, R = 1; L < 2; L++, R--) { // Здесь "меняем местами" массивы first и second.
for (int i = 0; i < temp[L].Length; i++) {
var allowLeft = false; // true -- строка из массива L, не содержит подстрок из массива R
for (var j = 0; j < temp[R].Length; j++) {
if (!temp[L][i].Contains(temp[R][j])) { allowLeft = true; }
else { // Найдена подстрока
allowLeft = false;
subStrings[R].Add(j);

j++;
for (; j < temp[R].Length; j++) { // Ищем еще подстроки.
if (temp[L][i].Contains(temp[R][j])) { subStrings[R].Add(j); }
}

break;
}
}

if (allowLeft) { set1[L].Add(i); }
}
}

var result = new List<string>[2];

for (var i = 0; i < 2; i++) {
result[i] = new List<string>();
foreach (var idx in set1[i].Except(subStrings[i])) result[i].Add(temp[i][idx]);
}

return result;
}
}
}
Автор: AlexDessar
Дата сообщения: 24.02.2016 21:43
[more] Огромное спасибо. Вы мне расписали все очень достоверное, некоторые моменты я не поняли в силу своей безграмотности в программирования, но суть уловил. Дело в том что, файлы которые я считываю уже отсортированы и в них содержится все что меня интересует.

мне это помогали писать.
Но дальше я решил сам, так как хочу научится.
Я так понял вы сразу мне в цикл забили и поиск и сортировку.
Но есть один нуанс, он должен искать мне строки с одинаковыми значениями типа string, я их загнал в массив, и решил сравнивать два массива посторчно. Но вот беда, массивы у меня не определены и могут быть разной длины и значения стоять на разных местах. Как сделать так что бы цикл сравнил один массив считав его с файла со вторым и наоборот?
namespace WindowsFormsApplication7
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public string prefix1;
public string mass2;
public string numbe3r;

private void Open1_Click(object sender, EventArgs e)
{
openFileDialog1.ShowDialog();
string str = openFileDialog1.FileName;
StreamReader fs = new StreamReader(str);
while (!fs.EndOfStream)
{
getreportmetod(fs);
}
}
private void getreportmetod(StreamReader fs)
{
string line = fs.ReadLine();
if (line.Contains("{"))
{
int pos = line.IndexOf("{");
string assemblyname = line.Substring(0, pos);
newdrawing.Items.Add(assemblyname);

System.IO.StreamWriter fileStream = new System.IO.StreamWriter("D:\\chekdrawing1.txt", true);
fileStream.WriteLine(assemblyname, 0, assemblyname.Length);
fileStream.Close();
}
}

private void button1_Click(object sender, EventArgs e)
{
openFileDialog2.ShowDialog();
string str = openFileDialog2.FileName;
StreamReader fs = new StreamReader(str);
while (!fs.EndOfStream)
{
getreportmetod1(fs);
}
}
private void getreportmetod1(StreamReader fs)
{
string line = fs.ReadLine();
if (line.Contains("{"))
{
int pos = line.IndexOf("{");
string assemblyname1 = line.Substring(0, pos);
a = line.Substring(0, pos);
Olddrawing.Items.Add(assemblyname1);
System.IO.StreamWriter fileStream = new System.IO.StreamWriter("D:\\chekdrawing2.txt", true);
fileStream.WriteLine(assemblyname1, 0, assemblyname1.Length);
fileStream.Close();
}
}
private void Start_Click(object sender, EventArgs e)
{
String[] chekdrwRead1 = System.IO.File.ReadAllLines("D:\\chekdrawing1.txt", Encoding.Default);
String[] chekdrwRead2 = System.IO.File.ReadAllLines("D:\\chekdrawing2.txt", Encoding.Default);
for (int i = 0; i < chekdrwRead1.Length; i++)
if ((!chekdrwRead2[i].Contains(chekdrwRead1[i])))
for (int j = 0; j < chekdrwRead2.Length; j++)
if ((!chekdrwRead1[j].Contains(chekdrwRead2[j])))
{
listView1.Items.Add((chekdrwRead1[i].ToString()));
listView2.Items.Add((chekdrwRead2[i].ToString()));
}
}
}
}
Это весь код, а я зык С#. Правда я уже экспериментировал на нем так что могут быть пустые переменные и так далее.
Спасибо за ответ, для меня очень познавательно. [/more]
Автор: bomzzz
Дата сообщения: 29.02.2016 07:40
никто не знает как портировать драйвер под другую систему? конкретно хп под висту
Автор: NeoAnomaly
Дата сообщения: 29.02.2016 09:10
bomzzz, всё зависит от драйвера.

ЗЫ
На практике обратная совместимость очень хорошо работает и большинство device & fs фильтров, если не юзались специфичные хаки способны работать и на более старших системах. То же относится и к software драйверам. С драйверами устройств есть нюансы.
Автор: bomzzz
Дата сообщения: 29.02.2016 09:16
даже если конкретно этот не получится, то все равно интересно как делать
sata raid ich5
Автор: NeoAnomaly
Дата сообщения: 01.03.2016 10:36
bomzzz, если речь не о своём драйвере, тогда вопрос лучше задавать не в программирование, а в железный форум, например в топик по intel драйверам, больше вероятность получить ответ. В общих чертах - пробуй поставить от XP драйвер через диспетчер устройств, если есть распакованный дистрибутив, иначе в режиме совместимости пробовать накатить.

Один момент, со стабильностью работы могут возникнуть проблемы, а т.к. драйвер ещё и для дисковой подсистемы, то возможна потеря данных. В общем на свой страх и риск. В портировании путём реверсинга и переписывания драйвера - не вижу смысла.
Автор: 127
Дата сообщения: 01.03.2016 11:03
bomzzz, как, как... берем исходники, берем ДДК от хп и ДДК от 7, смотрим различия (а они весьма существенные), курим до полного и окончательного просветления...
Автор: bomzzz
Дата сообщения: 01.03.2016 17:46
хочешь сказать перенос программы из одной системы в другую в ручную делается
Автор: NeoAnomaly
Дата сообщения: 01.03.2016 18:38

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

bomzzz, здесь очень много факторов, но в большинстве случаев да.
Автор: V0lt_r
Дата сообщения: 03.03.2016 16:39
Подскажите по шаблонам. Возможно ли вообще следующее?
Есть функция, которая пишет лог в конкретный файл

Код: void LOG2FILE(LPCTSTR fmt, ...)
{
    static CString fname;
    if (fname.IsEmpty()) {
        TCHAR szPath[MAX_PATH];
        if(SUCCEEDED(SHGetFolderPath(NULL, CSIDL_DESKTOP, NULL, 0, szPath))) {
            fname = CString(szPath) + L"\\log.txt";
        }
    }

    ...
}
Автор: NeoAnomaly
Дата сообщения: 03.03.2016 18:24
V0lt_r, а причём здесь имя функции и шаблоны? Передавай имя лог файла при вызове, вариант?
Автор: V0lt_r
Дата сообщения: 03.03.2016 18:32
NeoAnomaly
Просто хочу узнать, возможно ли подобное через шаблоны или нет?
Автор: NeoAnomaly
Дата сообщения: 03.03.2016 18:41
V0lt_r ну вообще общее предназначение шаблонов - обобщённые алгоритмы. В с++ можно конечно передавать значения в качестве параметра шаблона, но с идентификаторами(именами) функций это вообще никак не связано.
Автор: bomzzz
Дата сообщения: 05.03.2016 08:52
удивительно, на висту встал драйвер и работает. ну вроде как, потому что нет идей как его проверить
http://s016.radikal.ru/i335/1603/b6/bda6fffd07e5.png
виста редкая штука, я ее конечно видел и даже ставил, но не подозревал что вот он камень раздоров - семерка совместимая с хп.
http://s019.radikal.ru/i624/1603/b0/70bb44a65f94.png
это папки с инклудами, но ассемблер самодельный и размер определяется в основном тем что бог послал

драйвер написанный для 2000-ка в совместимости с хп, на семерке работать не будет, на висте не пробовал, лень было ее разворачивать. так что податься некуда только в теме Си спросить.
Автор: 127
Дата сообщения: 05.03.2016 20:16
bomzzz, я так и не понял, что ты хотел сказать...
Автор: lormutryas
Дата сообщения: 05.03.2016 23:45
вам проще сюда электронные схемы
без схем вы драйвер не напишете
или напишите и будете думать, что он уникальный, а до вас его написало минимум десять человек, реально полезный софт без принципиальной схемы не напишешь
Автор: bomzzz
Дата сообщения: 06.03.2016 01:39
127
ну я не знал про висту практически ничего не знаю. себе ставил чтоб совместимость программ проверять и еще одному кадру на ноутбук. то есть мне даже в голову не приходило тыкнуть хпешный драйвер в висту.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193

Предыдущая тема: не знаю как назвать тему :-)


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