|
Заблокирован
|
||||||||||||||||||||||||||
Разобраться в коде драйвера с ссылками и указателями08.04.2017, 10:23. Показов 4061. Ответов 32
Метки нет (Все метки)
Есть некоторый оригинальный код от разработчика драйвера, мне нужно его переделать "под себя" (программа куплена , законность соблюдена) но запутался с переменными где она идет как ссылка, а где как просто переменная, стал тупо подставлять то что нужно мне выходит сообщение
Кликните здесь для просмотра всего текста
в идеале мне нужно функцию in_cmd(cmd_str); в программе Main() тупо отключить и в переменную cmd_str перед функцией make_cmd(cmd_str); завенести название файла вместе с командой, я пишу так
Добавлено через 13 минут вот этот примитивный код
0
|
||||||||||||||||||||||||||
| 08.04.2017, 10:23 | |
|
Ответы с готовыми решениями:
32
Разобраться с указателями и ссылками. Совсем запутался
|
|
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
|
|||||||||||
| 10.04.2017, 17:13 | |||||||||||
int main() int main(int argc char **argv) Остальные использовать неправильно. В функции можно без return:
0
|
|||||||||||
|
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
|
|
| 10.04.2017, 17:18 | |
|
0
|
|
|
Заблокирован
|
|||||||
| 10.04.2017, 17:31 [ТС] | |||||||
|
Может оставить в покое эти разборки?, все хуже только становится и хуже, мне нужно вот в этом первоначальном коде
Кликните здесь для просмотра всего текста
void make_cmd(char *str)
/* обработка командной строки, переход к выполнению команд */ { if (*cmd_str == '\0') { switch (Window[nwin].nMode) { case BC_MODE: out_base(); out_ctrl_code(); bc_out_ram(base); break; case RT_MODE: out_subadr(); rt_out_ram(dir, subadr); break; } } else strcpy(old_cmd, cmd_str); while (*str == ' ' || *str == '\t') str++; if (!strcmp(str, "Q")) make_quit(""); else if (!strncmp(str, "IOD ", 4)) set_io_delay(str+4); else if (!strcmp(str, "I")) cmd_reset(""); else if (!strcmp(str, "F")) fields_chg(""); else if (!strcmp(str, "BE")) buf_edit(""); else if (!strncmp(str, "BE ", 3)) buf_edit(str+3); else if (!strcmp(str, "BC")) buf_clear(""); else if (!strncmp(str, "BF ", 3)) buf_fill(str+3); else if (!strncmp(str, "SL ", 3)) set_stat_len(str+3); else if (!strncmp(str, "WIN ", 4)) select_win(str+4); else if (!strncmp(str, "TMK ", 4)) select_tmk(str+4); else if (!strcmp(str, "MBC")) mode_bc(""); else if (!strcmp(str, "MRT")) mode_rt(""); // else if (!strcmp(str, "MMT")) // mode_mt(""); else if (!strncmp(str, "AVT ", 4)) avt_ctrl(str+4); else if (!strncmp(str, "ATBCSA", 6)) { fReserv=0; fSimpleRT=1; fSimpleA=1; avt_bc(str+6); fSimpleRT=0; } else if (!strncmp(str, "RATBCSA", 7)) { fReserv=1; fSimpleRT=1; fSimpleA=1; avt_bc(str+7); fSimpleRT=0; } else if (!strncmp(str, "ATRTSA", 6)) { fReserv=0; fSimpleRT=1; fSimpleA=1; avt_rt(str+6); fSimpleRT=0; } else if (!strncmp(str, "RATRTSA", 7)) { fReserv=1; fSimpleRT=1; fSimpleA=1; avt_rt(str+7); fSimpleRT=0; } else if (!strncmp(str, "ATBCS", 5)) { fReserv=0; fSimpleRT=1; fSimpleA=0; avt_bc(str+5); fSimpleRT=0; } else if (!strncmp(str, "RATBCS", 6)) { fReserv=1; fSimpleRT=1; fSimpleA=0; avt_bc(str+6); fSimpleRT=0; } else if (!strncmp(str, "ATRTS", 5)) { fReserv=0; fSimpleRT=1; fSimpleA=0; avt_rt(str+5); fSimpleRT=0; } else if (!strncmp(str, "RATRTS", 6)) { fReserv=1; fSimpleRT=1; fSimpleA=0; avt_rt(str+6); fSimpleRT=0; } else if (!strncmp(str, "ATBC", 4)) { fReserv=0; avt_bc(str+4); } else if (!strncmp(str, "RATBC", 5)) { fReserv=1; avt_bc(str+5); } else if (!strncmp(str, "ATRT", 4)) { fReserv=0; avt_rt(str+4); } else if (!strncmp(str, "RATRT", 5)) { fReserv=1; avt_rt(str+5); } #ifdef ELCUS else if (!strncmp(str, "ATS1", 4)) { fReserv=0; fStatErrStop=1; avt_stat(str+4); fStatErrStop=0; } else if (!strncmp(str, "RATS1", 5)) { fReserv=1; fStatErrStop=1; avt_bc(str+5); fStatErrStop=0; } #endif //def ELCUS else if (!strncmp(str, "ATS", 3)) { fReserv=0; avt_stat(str+3); } else if (!strncmp(str, "RATS", 4)) { fReserv=1; avt_bc(str+4); } #ifdef ELCUS else if (!strncmp(str, "ATARR1", 6)) { fATArBlk=0; avt_arb_rt_r(str+6); } else if (!strncmp(str, "ATARR", 5)) { fATArBlk=1; avt_arb_rt_r(str+5); } else if (!strncmp(str, "ATARW", 5)) avt_arb_rt_w(str+5); else if (!strncmp(str, "ATARF", 5)) avt_arb_rt_f(str+5); else if (!strncmp(str, "BA", 2)) avt_va996(str+2); else if (!strncmp(str, "WORDS ", 6)) set_a_words(str+6); #endif //def ELCUS else if (!strncmp(str, "ATFL", 4)) avt_flags(str+4); else if (!strcmp(str, "STOP?")) { if (enter_mode && (avt_err || to_errors>0L || bad_starts>0L || channel_err>0L || data_err>0L)) fSkipCmds=1; } else if (!strcmp(str, "BCRT+")) fBcRt=1; else if (!strcmp(str, "BCRT-")) fBcRt=0; else if (!strcmp(str, "BEEP+")) fBeep=1; else if (!strcmp(str, "BEEP-")) fBeep=0; else if (!strcmp(str, "BEEP")) beep("1"); else if (!strncmp(str, "BEEP ", 5)) beep(str+5); #ifdef LPT_SYN else if (!strcmp(str, "LP+")) fLPTSyn=1; else if (!strcmp(str, "LP-")) fLPTSyn=0; #endif #ifdef ELCUS else if (!strncmp(str, "OW ", 3)) tmk_outpw(str+3); #endif //def ELCUS else if (!strcmp(str, "P")) kbd_pause(""); else if (!strncmp(str, "P ", 2)) kbd_pause(str+1); else if (!strncmp(str, ";", 1)) comment(str+1); else if (!strncmp(str, "#", 1)) ; else if (Window[nwin].nMode == BC_MODE) { if (!strncmp(str, "SB ", 3)) set_base(str+3); else if (!strncmp(str, "ERR ", 4)) set_max_err(str+4); else if (!strncmp(str, "SN ", 3)) set_number(str+3); else if (!strncmp(str, "SP ", 3)) set_pause(str+3); else if (!strncmp(str, "SC ", 3)) set_ctrl_code(str+3); else if (!strncmp(str, "GLF", 3)) start_loop_file(str+3); else if (!strncmp(str, "GL", 2)) start_loop(str+2); else if (!strcmp(str, "G")) start_1(""); else if (!strcmp(str, "STO")) statistic_out(""); else if (!strcmp(str, "STBO")) statistic_bad_out(""); else if (!strcmp(str, "STC")) statistic_clear(""); else if (!strncmp(str, "R ", 2)) bc_buf_rd(str+2); else if (!strncmp(str, "W ", 2)) bc_buf_wr(str+2); else if (!strncmp(str, "R< ", 3) && cmd_count == 1) cmds_open(str+3); else if (!strncmp(str, "R< ", 3) && cmd_count != 1) cmds_open2(str+3); else if (!strncmp(str, "RF< ", 4)) cmds_open_f(str+3); else if (!strncmp(str, "C ", 2)) set_count(str+2); else if (!strncmp(str, "RE ", 3)) exe_open(str+3); else if (!strcmp(str, "T")) bc_ram_test(""); else if (!strcmp(str, "H")) bc_help(""); #ifdef ELCUS else if (!strncmp(str, "SYM", 3)) sym(str+3); else if (!strncmp(str, "OU400", 5)) { fReserv=0; avt_ou400(str+5); } else if (!strncmp(str, "ROU400", 6)) { fReserv=1; avt_ou400(str+6); } #endif //def ELCUS else if (*str != '\0') msg_out(undef_cmd); } else if (Window[nwin].nMode == RT_MODE) { if (!strncmp(str, "SW ", 3)) set_status_word(str+3); else if (!strncmp(str, "HBIT ", 5)) { set_hbit_mode(str+5); out_rt_mode(); } else if (!strncmp(str, "FLAG ", 5)) { set_flag_mode(str+5); out_rt_mode(); } else if (!strncmp(str, "REJ ", 4)) { set_flag_mode(str+4); out_rt_mode(); } else if (!strncmp(str, "BCST ", 5)) { set_brcst_mode(str+5); out_rt_mode(); } else if (!strcmp(str, "DTBL 1")) { block_data_irq(""); out_rt_mode(); } else if (!strcmp(str, "DTBL 0")) { unblock_data_irq(""); out_rt_mode(); } else if (!strncmp(str, "SFL", 3)) set_flag(str+3); #ifdef ELCUS else if (!strcmp(str, "WRC")) wr_mr_loop(str+3); else if (!strcmp(str, "RDC")) rd_sw_loop(str+3); #endif //def ELCUS else if (!strcmp(str, "SSR")) set_sw_bits(str+3, SREQ); else if (!strcmp(str, "SBS")) set_sw_bits(str+3, BUSY); else if (!strcmp(str, "SSF")) set_sw_bits(str+3, SSFL); else if (!strcmp(str, "STF")) set_sw_bits(str+3, RTFL); else if (!strcmp(str, "SDN")) set_sw_bits(str+3, DNBA); else if (!strcmp(str, "CSR")) clear_sw_bits(str+3, SREQ); else if (!strcmp(str, "CBS")) clear_sw_bits(str+3, BUSY); else if (!strcmp(str, "CSF")) clear_sw_bits(str+3, SSFL); else if (!strcmp(str, "CTF")) clear_sw_bits(str+3, RTFL); else if (!strcmp(str, "CDN")) clear_sw_bits(str+3, DNBA); else if (!strcmp(str, "SMR")) { rtlock(dir, subadr); fLock=1; } else if (!strcmp(str, "CMR")) { rtunlock(); fLock=0; } else if (!strncmp(str, "SR ", 3)) set_subadr_r(str+3); else if (!strncmp(str, "ST ", 3)) set_subadr_t(str+3); else if (!strncmp(str, "SPG ", 4)) set_spage(str+4); else if (!strncmp(str, "CPG ", 4)) set_cpage(str+4); else if (!strncmp(str, "PG ", 3)) set_page(str+3); else if (!strncmp(str, "SAT ", 4)) set_at(str+4); else if (!strcmp(str, "RSW")) read_sw(""); else if (!strncmp(str, "STP", 3)) read_sp(str+3); else if (!strncmp(str, "R ", 2)) rt_buf_rd(str+2); else if (!strncmp(str, "W ", 2)) rt_buf_wr(str+2); else if (!strncmp(str, "R< ", 3)) cmds_open(str+3); else if (!strncmp(str, "RF< ", 4)) cmds_open_f(str+3); else if (!strcmp(str, "T")) rt_ram_test(""); else if (!strcmp(str, "H")) rt_help(""); else if (*str != '\0') msg_out(undef_cmd); } } Добавлено через 1 минуту Зря я затеял с простым примером, только всех запутал и сам запутался в первую очередь Добавлено через 1 минуту
0
|
|||||||
|
Комп_Оратор)
|
||
| 10.04.2017, 17:50 | ||
int main(int argc, char *argv[])и ещё одна: void main()![]() Но повторю, - указатели на char нужно запретить на первой неделе обучения строжайшим образом. Я бы даже на 10 дней запретил.
1
|
||
| 10.04.2017, 20:22 | |
|
0
|
|
| 10.04.2017, 21:50 | ||
|
Не по теме:
void main(int argc, char* argv[])char**сами подставьте. Это ещё две штуки, если строго говорить. Насчёт переносимости не знаю, но УМВР. :) И да, - return 0;уберите в сишном варианте
0
|
||
| 10.04.2017, 22:10 | |
|
Не по теме: Я это использовал, когда не понимал return, и даже когда понимал return, но ещё не понимал, кому эта функция main должна что-то возвращать и с какой стати.
0
|
|
| 10.04.2017, 22:18 | |
|
0
|
|
| 10.04.2017, 22:43 | ||||||
|
Не по теме: 2,5? Их там в студии бесчисленное множество.
0
|
||||||
|
Любитель чаепитий
|
||
| 11.04.2017, 05:46 | ||
|
ваши попытки похожи на изучение автомобильного двигателя самостоятельно, но при этом вы ещё и не знаете, как каждая деталь по отдельности называется и вытащив, обратно вставить уже не сможете. то, что вы знаете какие-то там другие языки вообще значения не имеет, с++ - это с++, а не какойтодругойязыккоторыйпохож.
2
|
||
|
Заблокирован
|
|
| 11.04.2017, 06:53 [ТС] | |
|
0
|
|
|
Заблокирован
|
|||||||||||
| 12.04.2017, 09:19 [ТС] | |||||||||||
|
Ну вот уже пожинаю первые плоды (тема была создана не зря), например в этой функции
0
|
|||||||||||
|
Неэпический
|
|
| 12.04.2017, 21:29 | |
|
1
|
|
| 12.04.2017, 21:29 | |
|
Помогаю со студенческими работами здесь
33
Объявление DllImport функций с указателями и ссылками Прога написана с указателями,как указатели заменить ссылками Не могу разобраться с ссылками и все!!
Не могу разобраться с указателями! Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
|
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение:
DISM / Online / Add-Capability / CapabilityName:WMIC~~~~
Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
|
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2.
Задача: при создании документов установить период списания автоматически. . .
|
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2.
Задача: вывести данные из ТЧ нетипового документа. . .
|
|
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению.
На форме документа создается. . .
|
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
|
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
|
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
|