Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.54/56: Рейтинг темы: голосов - 56, средняя оценка - 4.54
 Аватар для Power_Basic
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443

Быстрый старт в изучении C++ для относительно опытных программистов Basic

18.04.2020, 16:11. Показов 14850. Ответов 253

Студворк — интернет-сервис помощи студентам
В этой ветке предлагаю обсуждать сходства и различия между C++ и Visual Basic.
Ну хотя бы для упрощения процесса изучения параллельного (дополнительного) языка для тех, кто уже относительно неплохо знаком с Visual Basic.
Ну просто как-то "не вкусно" начинать изучение совсем уж с нуля, когда, в принципе, уже и без того много знаешь (циклы, ветвления, указатели, видимость переменных ... ).

На самом деле, начал сейчас просмортр на ютубе курса по C++. Дядька очень толково и понятно всё объясняет, явно есть у него талант хорошего преподавателя.

Самые первые отличия, которые бросились в глаза, это:
- комменты обозначают двумя косыми чертами вместо апострофа,
- в конце каждой строки точка с запятой,
- все процедуры, функции, "тела" циклов ... в фигурных скобках,
- вложенные циклы можно описывать одной строкой,
- если переменная объявлена, но ей не присвоено значение, то она содержит случайный "мусор" из памяти, а не как у нас в бейсике, где сразу получает значение ноль или пустую строку,
- массивы с квадратными скобками вместо круглых,
- область видимости переменных ограничена фигурными скобками и причём неважно функция это, цикл или "тело" функции IF, а не как у нас область видимости переменных ограничена только функциями и процедурами.

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

Сказать по правде, лично мне сейчас C++ и его младший брат нужны, главным образом, для удобства изучения материалов MSDN.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.04.2020, 16:11
Ответы с готовыми решениями:

предложение для опытных программистов
добрый день уважаемые госпда программисты - необходима помощь по выполнению лабораторных по предмету Операционные Системы. Ищу человека...

Быстрый старт и софт для Modicon TM251MESE (Schneider Electric)
Так сложилась ситуация, что в скором времени предстоит познакомиться с ПЛК TM251MESE от Sneider Electric. Начал интересоваться как...

Книги или справочники для опытных(или проффесиональных) программистов!
Пожалуйста, Подскажите книги или справочники для опытных и проффесиональных программистов! Особенно хотелось бы найти: 1) полный...

253
 Аватар для Pro_grammer
6807 / 2839 / 527
Регистрация: 24.04.2011
Сообщений: 5,308
Записей в блоге: 10
24.04.2020, 07:47
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Power_Basic Посмотреть сообщение
Отдельно SAPI установить невозможно, потому что, начиная с Windows_XP, это неотъемлемая часть самой винды.
Почему же? Всё возможно. Только надо точно знать, что ставить. тут такая особенность
SAPI 4.0 вышел в 1998 году. Он входил в состав пакета SDK, содержащего инструменты для распознавания и синтеза речи. Также он входил в операционную систему Windows 2000 (только с возможностью синтеза речи).
Версия SAPI 5.1 вышла в 2001 году как составная часть Speech SDK 5.1. Эта версия входила в состав ОС Windows XP.
В операционной системе Windows Vista установлена версия SAPI 5.3, а в Windows 7 — SAPI 5.4.
Ну так вот, если например поставить на Win8 SAPI 5.1 то может нарушиться работа с движками и вообще ни чего не будет говорить - распознавать. Потому надо точно ставить то, что положено.
Загрузить можно с центра загрузки Майкрософт, вот 5.1 например.
0
Эксперт по электронике
6998 / 3314 / 341
Регистрация: 28.10.2011
Сообщений: 13,017
Записей в блоге: 7
24.04.2020, 12:28
Цитата Сообщение от The trick Посмотреть сообщение
Без нужной зависимости приложение также не запустится. Скрин от пурика я скинул где он не может работать без Scintilla. Безразлично если приложение не может запуститься из-за отсутствия рантайма или отсутствия какой-либо DLL - итог один и тотже.
Нет вы ошибаетесь. Пожалуйста не путайте внешнюю рантайм библиотеку и подключаемые dll программистом. В первом случае dll обычно не распространяется с приложением, а во втором распространяется.

Цитата Сообщение от The trick Посмотреть сообщение
Так не нужно делать. Нужно держать ресурсы приложения рядом, как у 99% приложений.
Цитата Сообщение от The trick Посмотреть сообщение
Видимо идея DLL прошла мимо тебя. В VB6 при желании внешние зависимости (к примеру контролы) можно хранить внутри.
Хранить внутри это рядом с приложением?

Цитата Сообщение от The trick Посмотреть сообщение
Тот способ который описан у тебя обычно используется всякими вредоносными программами.
О нем вы написали "В VB6 при желании внешние зависимости (к примеру контролы) можно хранить внутри."

Цитата Сообщение от The trick Посмотреть сообщение
Ну и что в этом плохого? Я привел пример того же пурика и с самого начала говорю что внешние зависимости - это не плохо. Ты меня пытаешься убедить в обратном или что?
Это вы перевели тему на подключаемые программистом dll. Я же писал о внешнем рантайме которого может не оказаться на компе, к примеру MSVCP14.dll.

Цитата Сообщение от The trick Посмотреть сообщение
Я о них и говорю. Какая разница что библиотеки прилинкована статически или динамически? Кода почти столько же (т.е. размер единого EXE файла + DLL и EXE + LIB почти одинаков)
Разница в том что код будет не во внешней dll, а в приложении и из LIB могут быть взяты только используемые функции, а не все что в итоге даст меньший объем.

Цитата Сообщение от The trick Посмотреть сообщение
При динамическом способе у нас больше преимуществ и в модульности и в отладке и в обновлении и т.п.
Чем это поможет в отладке? Код скомпилирован и его отладка возможно только на уровне асма.

Цитата Сообщение от The trick Посмотреть сообщение
Посмотри на большинство профессиональных программ.
Речь о простых любительских. Представьте что столько же файлов такого же размера будет у простой программы. Вы бы стали качать и устанавливать несколько гигабайт чтобы получить калькулятор уступающий по функционалу калькулятору винды?

Цитата Сообщение от Power_Basic Посмотреть сообщение
Я не знаю хорошо это или плохо, но просто здесь все зависимости вроде бы перечислены, потому и решил показать:
Нужен список импорта dll.

Цитата Сообщение от Power_Basic Посмотреть сообщение
А вообще-то я, пожалуй, запроста смог бы даже сейчас писать, как когда-то в Спектрум-бейсик, - всё подряд сверху вниз и с прыжками GOTO на номера строк
Сейчас тоже можно писать подобным образом.
PureBasic
1
2
3
4
5
6
7
8
9
10
a=0
b=4
 
If a+b <> 2
  Goto m1
Else
  End
EndIf
 
m1:
Но так большую программу написать и поддерживать будет сложно.
0
Модератор
10060 / 3905 / 885
Регистрация: 22.02.2013
Сообщений: 5,854
Записей в блоге: 79
24.04.2020, 14:04
Цитата Сообщение от locm Посмотреть сообщение
Пожалуйста не путайте внешнюю рантайм библиотеку и подключаемые dll программистом. В первом случае dll обычно не распространяется с приложением, а во втором распространяется.
Ну во-первых, обычно, большинство профессиональных программ требуют внешний рантайм, это касаетcя NET-Framework приложений, Microsoft Visual C++ Redistributable и т.д. Во-вторых, рантайм часто бывает предустановлен в системе по умолчанию. Разницы между одной внешней зависимостью и другой нет никакой. Тоже самое что сказать пурик требует msvcrt.dll - внешнюю рантайм библиотеку.

Цитата Сообщение от locm Посмотреть сообщение
Хранить внутри это рядом с приложением?
Хранить внутри DLL не нужно, а нужно хранить их рядом с приложением. А контролы (ctl файлы) можно хранить внутри проекта, они скомпилируются в один исполняемый файл, если это требуется. Что непонятно?

Цитата Сообщение от locm Посмотреть сообщение
О нем вы написали "В VB6 при желании внешние зависимости (к примеру контролы) можно хранить внутри."
Не о нем, выше уже пояснил. Речь шла о ctl/cls файлах. К примеру есть библиотека VBCCR, ее можно использовать и как внешний OCX файл, так и как CTL файлы которые будут внутрипроектными и прилинкуются к EXE/DLL.

Цитата Сообщение от locm Посмотреть сообщение
Это вы перевели тему на подключаемые программистом dll. Я же писал о внешнем рантайме которого может не оказаться на компе, к примеру MSVCP14.dll.
Нет, я изначально писал что использовать внешние зависимости - хорошо и многие профессиональные программы их используют. Привел пример с пуриком и PowerBasic'ом. А ты перевел тему на рантаймы.

Цитата Сообщение от locm Посмотреть сообщение
Разница в том что код будет не во внешней dll, а в приложении и из LIB могут быть взяты только используемые функции, а не все что в итоге даст меньший объем.
Это ни на что не влияет. Еще раз напишу, профессиональные приложения используют внешние DLL. Насколько мне известно FASM (который используется пуриком) не производит такой оптимизации. Я попытался слинковать простой Lib файл чтобы проверить:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
extern "C" size_t __stdcall StrLenA(char *test) {
    size_t szRet = 0;
 
    while (*test++)
        szRet++;
 
    return szRet;
 
}
 
extern "C" char * __stdcall InStr(char *test, char chr) {
 
    while (*test) {
        if (*test == chr)
            return test;
        test++;
    }
 
    return 0;
 
}
Но у меня не вышло, линкер зависает и грузить проц на полную:

Возможно что-то делаю не так, не силен в PB.

Цитата Сообщение от locm Посмотреть сообщение
Чем это поможет в отладке? Код скомпилирован и его отладка возможно только на уровне асма.
Потому что мы можем выгрузить неисправный модуль, перекомпилировать его, и загрузить опять без перезапуска приложения. К примеру если ты пишешь серверное приложение которое в данный момент работает и нельзя его отключать. Такой же способ используется в хотпатчах в Windows, только там вместо выгрузки функции динамически патчатся.

Цитата Сообщение от locm Посмотреть сообщение
Речь о простых любительских. Представьте что столько же файлов такого же размера будет у простой программы. Вы бы стали качать и устанавливать несколько гигабайт чтобы получить калькулятор уступающий по функционалу калькулятору винды?
Я изначально вел речь о профессиональных программах, это во-первых. Во-вторых, не нужно сгущать краски, никаких гигабайт для калькулятора не нужно.
0
Эксперт по электронике
6998 / 3314 / 341
Регистрация: 28.10.2011
Сообщений: 13,017
Записей в блоге: 7
24.04.2020, 14:23
Цитата Сообщение от The trick Посмотреть сообщение
Ну во-первых, обычно, большинство профессиональных программ требуют внешний рантайм, это касаетcя NET-Framework приложений, Microsoft Visual C++ Redistributable и т.д. Во-вторых, рантайм часто бывает предустановлен в системе по умолчанию.
А если не установлен? Распространять с каждой программой .NET Framework или Redistributable?
Рантайм (особенно свежие версии, например из текущей версии студии) не факт что могут быть установлены, а если программа использует dll, они включаются в дистрибутив.
Повторюсь речь о простых любительских программах, а не о профессиональных разработках.

Цитата Сообщение от The trick Посмотреть сообщение
Нет, я изначально писал что использовать внешние зависимости - хорошо и многие профессиональные программы их используют. Привел пример с пуриком и PowerBasic'ом. А ты перевел тему на рантаймы.
Нет тема изначально была про рантаймы C++. По умолчанию в каждой версии студии своя версия рантайма. Посмотрите тему с начала.

Цитата Сообщение от The trick Посмотреть сообщение
Я попытался слинковать простой Lib файл чтобы проверить:
Поскольку соглашение вызова stdcall нужно использовать Import.
ImportC для cdecl функций.

Цитата Сообщение от The trick Посмотреть сообщение
Возможно что-то делаю не так, не силен в PB.
Нужно было прикрепить файлы к сообщению.

Цитата Сообщение от The trick Посмотреть сообщение
Я изначально вел речь о профессиональных программах, это во-первых.
А смысл о них писать? Многие отписавшиеся в этой теме работают в майкрософте, в Rockstar, а может в гугле или в другой известной компании?
0
Эксперт по электронике
6998 / 3314 / 341
Регистрация: 28.10.2011
Сообщений: 13,017
Записей в блоге: 7
24.04.2020, 14:38
Цитата Сообщение от The trick Посмотреть сообщение
Я попытался слинковать простой Lib файл чтобы проверить
Все работает.
PureBasic
1
2
3
4
5
Import "Test.a"
  StrLenA(str.p-ascii)
EndImport
 
Debug StrLenA("1234")
Миниатюры
Быстрый старт в изучении C++ для относительно опытных программистов Basic  
Вложения
Тип файла: zip Test.zip (2.2 Кб, 6 просмотров)
0
Модератор
10060 / 3905 / 885
Регистрация: 22.02.2013
Сообщений: 5,854
Записей в блоге: 79
24.04.2020, 14:41
Цитата Сообщение от locm Посмотреть сообщение
А если не установлен? Распространять с каждой программой .NET Framework или Redistributable?
Для этого существует инсталлятор, который установит необходимые компоненты.

Цитата Сообщение от locm Посмотреть сообщение
Рантайм (особенно свежие версии, например из текущей версии студии) не факт что могут быть установлены, а если программа использует dll, они включаются в дистрибутив.
Для конечного пользователя это не проблема. Конечному пользователю важен результат, а не наличие или отсутствие рантайма.

Цитата Сообщение от locm Посмотреть сообщение
Повторюсь речь о простых любительских программах, а не о профессиональных разработках.
Я же говорил изначально о профессиональных программах. Тоже самое справедливо и для любительских программ, к примеру игры на юнити, либо программы написанные на JAVA/Python/почти любой другой современный язык. Сейчас большинство людей не заботит такие вещи как внешние зависимости, а уж тем более рантайм.

Цитата Сообщение от locm Посмотреть сообщение
Нет тема изначально была про рантаймы C++. По умолчанию в каждой версии студии своя версия рантайма. Посмотрите тему с начала.
Нет, смотри на что я отвечал:
Цитата Сообщение от Power_Basic Посмотреть сообщение
Ну вот например, PowerBasic и, как я подозреваю, Pure Basic не используют никаких библиотек кроме встроенных в Windows WinAPI и COM.
И соответственно их программы безо всяких проблем запускаются на любой Windows-машине от Win_95_86 до Win_10_64.
Я написал что эти программы используют внешние зависимости и без них не будут работать (про рантайм тут речи не было), и тут ты начал меня цитировать и говорить про рантайм, хотя я говорил именно про работу профессиональных программ PowerBasic и Pure Basic, а не файлов создаваемых ими. Я изначально говорил про зависимости и что профессиональные программы их используют.

Цитата Сообщение от locm Посмотреть сообщение
Поскольку соглашение вызова stdcall нужно использовать Import.
ImportC для cdecl функций.
Без разницы:

На всякий случай прикрепил либу.

Цитата Сообщение от locm Посмотреть сообщение
А смысл о них писать? Многие отписавшиеся в этой теме работают в майкрософте, в Rockstar, а может в гугле или в другой известной компании?
А что только эти компании производят профессиональный софт?
Вложения
Тип файла: zip static_lib.zip (1.4 Кб, 1 просмотров)
0
Модератор
10060 / 3905 / 885
Регистрация: 22.02.2013
Сообщений: 5,854
Записей в блоге: 79
24.04.2020, 14:52
Цитата Сообщение от locm Посмотреть сообщение
Import "Test.a"
Я линкую lib файл который создан в Visual C++. Посмотрел твой файл. Немного переделал чтобы функция попадала в релиз:
PureBasic
1
2
3
4
5
Import "Test.a"
  StrLenA(str.p-ascii)
EndImport
 
MessageRequester("", Str(StrLenA("1234")))
Ну и где там неиспользуемые функции удаляются?
Вот дизасм:

Как видишь обе функции в исполняемом файле.
0
Эксперт по электронике
6998 / 3314 / 341
Регистрация: 28.10.2011
Сообщений: 13,017
Записей в блоге: 7
24.04.2020, 15:14
Цитата Сообщение от The trick Посмотреть сообщение
Для этого существует инсталлятор, который установит необходимые компоненты.
Я предпочитаю писать приложения не требующие установки и по возможности не требующие прав администратора.

Цитата Сообщение от The trick Посмотреть сообщение
Для конечного пользователя это не проблема. Конечному пользователю важен результат, а не наличие или отсутствие рантайма.
Это наплевательское отношение к пользователям.
По возможности нужно писать программу так чтобы создавать как можно меньше сложностей тем кто будет ее использовать. Не все хорошо разбираются в компах.

Цитата Сообщение от The trick Посмотреть сообщение
Я же говорил изначально о профессиональных программах.
Повторюсь, смысл о них писать? Сколько людей присутствующих в этой теме работают в солидной фирме типа майкрософта или гугла и разрабатывают программы на профессиональном уровне?

Цитата Сообщение от The trick Посмотреть сообщение
Сейчас большинство людей не заботит такие вещи как внешние зависимости, а уж тем более рантайм.
Повторюсь, наплевательское отношение к пользователям. К сожалению это стало нормой.

Цитата Сообщение от The trick Посмотреть сообщение
Я изначально говорил про зависимости и что профессиональные программы их используют.
Смысл в контексте данной темы?

Цитата Сообщение от The trick Посмотреть сообщение
А что только эти компании производят профессиональный софт?
Нужно было перечислить все существующие в мире?

Цитата Сообщение от The trick Посмотреть сообщение
Ну и где там неиспользуемые функции удаляются?
Для этого нужно собирать библиотеку таким образом чтобы каждая функция была в отдельной секции.
В GCC это флаги -ffunction-sections и -fdata-sections
Вложения
Тип файла: zip Test.zip (3.4 Кб, 1 просмотров)
0
Модератор
10060 / 3905 / 885
Регистрация: 22.02.2013
Сообщений: 5,854
Записей в блоге: 79
24.04.2020, 15:44
Цитата Сообщение от locm Посмотреть сообщение
Я предпочитаю писать приложения не требующие установки и по возможности не требующие прав администратора.
Инсталлятор не обязательно требует прав администратора.

Цитата Сообщение от locm Посмотреть сообщение
Это наплевательское отношение к пользователям.
По возможности нужно писать программу так чтобы создавать как можно меньше сложностей тем кто будет ее использовать. Не все хорошо разбираются в компах.
Не вижу связи. Программист написал приложение, пользователь его установил/запустил либо запустил без установки. В чем наплевательское отношение?

Цитата Сообщение от locm Посмотреть сообщение
Повторюсь, смысл о них писать? Сколько людей присутствующих в этой теме работают в солидной фирме типа майкрософта или гугла и разрабатывают программы на профессиональном уровне?
Я не знаю что тут ответить. Ну пиши приложения так чтобы они не были как профессиональные? Ты мне что хочешь доказать что использование внешних зависимостей плохо, я говорю что нет и привожу в пример профессиональные приложения. Я говорю что нет преимуществ в неиспользовании внешних DLL/EXE с приложением, кроме разве что религиозных каких-нибудь.

Цитата Сообщение от locm Посмотреть сообщение
Повторюсь, наплевательское отношение к пользователям. К сожалению это стало нормой.
Ну расскажи пожалуйста со стороны пользователя какие у тебя сложности возникают к примеру с современной программой написанной на Visual C++ 2019? Почему наплевательское отношение?

Цитата Сообщение от locm Посмотреть сообщение
Смысл в контексте данной темы?
Смысл чтобы ответить на высказывание Power_Basic'а.

Цитата Сообщение от locm Посмотреть сообщение
Нужно было перечислить все существующие в мире?
Нет. Если ты не производишь профессиональный софт, то это не означает что другие этого не делают.

Цитата Сообщение от locm Посмотреть сообщение
Для этого нужно собирать библиотеку таким образом чтобы каждая функция была в отдельной секции.
И много-ли LIB файлов собраны так? Я думаю большинство собраны в студии как я это сделал. Мало того что она не работает в пурике (а студия аж 2010 года), так она не понимает зависимости между функциями. Ту же либу я могу прилинковать в студии к проекту другому, и там не будет этой функции:
C
1
2
3
4
5
extern "C" size_t __stdcall StrLenA(char *);
 
int main() {
    return StrLenA("test");
}
Дизасм:

Функция мало того прилинковалась как inline.
0
Эксперт по электронике
6998 / 3314 / 341
Регистрация: 28.10.2011
Сообщений: 13,017
Записей в блоге: 7
24.04.2020, 16:20
Цитата Сообщение от The trick Посмотреть сообщение
Ты мне что хочешь доказать что использование внешних зависимостей плохо
Ничего подобного. Про внешние зависимости пишите вы. Я уже много раз отвечал что пишу про рантайм которого может не оказаться на компе.

Цитата Сообщение от The trick Посмотреть сообщение
Ну расскажи пожалуйста со стороны пользователя какие у тебя сложности возникают к примеру с современной программой написанной на Visual C++ 2019?
Допустим у меня на компе (и не только у меня) отсутствует рантайм из этой версии студии. Приложение не запустится. А ради простого приложения я его устанавливать не собираюсь.

Цитата Сообщение от The trick Посмотреть сообщение
Если ты не производишь профессиональный софт, то это не означает что другие этого не делают.
Сколько человек отписавшихся в этой теме работают в солидной фирме и занимаются профессиональной разработкой приложений?

Цитата Сообщение от The trick Посмотреть сообщение
Функция мало того прилинковалась как inline.
Какие опции сборки библиотеки? Среди них присутствует LTO?
0
Эксперт по электронике
6998 / 3314 / 341
Регистрация: 28.10.2011
Сообщений: 13,017
Записей в блоге: 7
24.04.2020, 16:37
Цитата Сообщение от The trick Посмотреть сообщение
Но у меня не вышло, линкер зависает и грузить проц на полную
Это из-за включенной опции LTO. Собрал библиотеку без нее и теперь нормально компилируется.
Вложения
Тип файла: zip Test_VS2010.zip (1.5 Кб, 5 просмотров)
0
Модератор
10060 / 3905 / 885
Регистрация: 22.02.2013
Сообщений: 5,854
Записей в блоге: 79
24.04.2020, 17:15
Цитата Сообщение от locm Посмотреть сообщение
Ничего подобного. Про внешние зависимости пишите вы. Я уже много раз отвечал что пишу про рантайм которого может не оказаться на компе.
А зачем ты пишешь мне про рантайм когда я говорю о внешних зависимостях? Это ведь ты стал цитировать меня когда я писал о PureBasic и PowerBasic'е и об их внешних зависимостях.

Цитата Сообщение от locm Посмотреть сообщение
Допустим у меня на компе (и не только у меня) отсутствует рантайм из этой версии студии. Приложение не запустится. А ради простого приложения я его устанавливать не собираюсь.
Ты говоришь о непрофессиональном приложении. Профессиональное приложение содержит инсталлятор который устанавливает все необходимые ему компоненты и запускается.

Цитата Сообщение от locm Посмотреть сообщение
Сколько человек отписавшихся в этой теме работают в солидной фирме и занимаются профессиональной разработкой приложений?
Понятия не имею. В данную тему не только отписываются, но и читают ее и будут читать даже когда наша дискуссия закончится. Смысл от этого не меняется - внешние библиотеки используются повсеместно. Мало того что профессиональные приложения их используют, так львиная доля любительских также. С этим спорить я думаю бессмысленно. Зачем продолжать?

Цитата Сообщение от locm Посмотреть сообщение
Какие опции сборки библиотеки? Среди них присутствует LTO?
А какая разница? Эта опция по умолчанию включена в среде. Почему такие файлы не линкуются?
0
 Аватар для Power_Basic
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
24.04.2020, 17:33  [ТС]
Цитата Сообщение от Pro_grammer Посмотреть сообщение
Почему же? Всё возможно. Только надо точно знать, что ставить. тут такая особенность
SAPI 4.0 вышел в 1998 году. Он входил в состав пакета SDK, содержащего инструменты для распознавания и синтеза речи. Также он входил в операционную систему Windows 2000 (только с возможностью синтеза речи).
Версия SAPI 5.1 вышла в 2001 году как составная часть Speech SDK 5.1. Эта версия входила в состав ОС Windows XP.
В операционной системе Windows Vista установлена версия SAPI 5.3, а в Windows 7 — SAPI 5.4.
Ну так вот, если например поставить на Win8 SAPI 5.1 то может нарушиться работа с движками и вообще ни чего не будет говорить - распознавать. Потому надо точно ставить то, что положено.
Загрузить можно с центра загрузки Майкрософт, вот 5.1 например.
Ну я же тогда тоже с самого начала пробовал решить эту проблему именно скачиванием этого компонента с сайта майкрософт. Но как раз и столкнулся с той проблемой, что версию 5.4 скачать уже невозможно. Где-то на форумах выяснил, что когда-то она там была выложена, но потом её оттуда удалили по какой-то причине. Ну вот и пришлось скачивать и устанавливать то что есть. Честно говоря, сейчас уже даже и не помню, какую тогда скачал версию, но думаю, что это и была как раз 5.1.
Скачал, установил, а в ответ тишина

Может быть проблема была в том, что семёрке не понравилась устаревшая версия, может быть что-то ещё послужило причиной. У меня ведь тогда была очень сильно урезанная версия Windows_7. Фактически, это была не сама конфетка, а только фантик от конфетки
А полноценную семёрку на тот момент установить невозможно было. Всё упиралось в размер SSD диска ноутбука - всего лишь 4Гб.
Уже позже всё-таки нашёл в интернете инфу, как установить операционку нам внешний USB-диск. Пришлось изрядно поплясать с бубном. Купил переходник USB ---> IDE, какими-то утилитами (сейчас уже даже и не помню какими именно) установил на старенький (40Гб) IDE-диск на этот раз уже вполне полноценную семёрку. Ну и на моё удивление всё очень неплохо заработало!
Но это же очень неудобно, когда лишний провод торчит и надо за крошечным нетбуком таскать по квартире жёсткий диск.
Снова залез в интернет, нашёл, как установить операционку на SD карточку во встроенном кард-ридере. И вот после очередных, и довольно продолжительных танцев с бубном установил-таки Windows_7 теперь уже на карточку (32Гб). Работает на удивление неплохо. В интернете пишут, что карточка в таком режиме долго не проживёт. Ну вот и посмотрим
0
Эксперт по электронике
6998 / 3314 / 341
Регистрация: 28.10.2011
Сообщений: 13,017
Записей в блоге: 7
24.04.2020, 17:38
Цитата Сообщение от The trick Посмотреть сообщение
А зачем ты пишешь мне про рантайм когда я говорю о внешних зависимостях?
Я изначально писал про внешний рантайм. Про внешние зависимости начал не я.

Цитата Сообщение от The trick Посмотреть сообщение
Ты говоришь о непрофессиональном приложении. Профессиональное приложение содержит инсталлятор который устанавливает все необходимые ему компоненты и запускается.
Глупо создавать инсталлятор для простых программ. Если программа не нуждается в установке, зачем инсталлятор? А если простая программа требует установки, вероятно она написана неправильно.

Цитата Сообщение от The trick Посмотреть сообщение
Смысл от этого не меняется - внешние библиотеки используются повсеместно.
Используются при необходимости. В отличие от них внешний рантайм используется всегда.

Цитата Сообщение от The trick Посмотреть сообщение
А какая разница? Эта опция по умолчанию включена в среде. Почему такие файлы не линкуются?
Знаете что значит LTO? Это Link Time Optimization. То есть оптимизация на этапе линковки. Для этого в объектные файлы добавляется некоторая информация об исходном коде, позволяющая оптимизировать линкеру. Именно это позволило ему инлайнить функцию из статической библиотеки.
Но у этого метода есть недостатки. Не знаю как в MS студии, а в GCC объектные файлы скомпилированные с опцией LTO в одной версии, не соберутся в другой версии.
-------------- Сборка: Release in Test ---------------
[ 33,3%] Компиляция: src\main.c
[ 66,7%] Linking executable: bin\Release\Test.elf
[100,0%] Creating Hex-file.
lto1.exe: fatal error: bytecode stream generated with LTO version 2.2 instead of the expected 4.1
compilation terminated.
lto-wrapper.exe: fatal error: arm-none-eabi-gcc.exe returned 1 exit status
compilation terminated.
c:/program files (x86)/embitz/1.11/share/em_armgcc/bin/../lib/gcc/arm-none-eabi/5.4.1/../../../../arm-none-eabi/bin/ld.exe: error: lto-wrapper failed
collect2.exe: error: ld returned 1 exit status
Процесс завершился со статусом 1 (0 минут, 1 секунд)
1 errors, 0 warnings (0 minutes, 1 seconds)
А про другие ЯП и говорить нечего. Поэтому если собираетесь использовать статическую библиотеку с другим компилятором (вероятно к другой версии VS C++ это тоже относится), отключаете LTO.
0
Модератор
10060 / 3905 / 885
Регистрация: 22.02.2013
Сообщений: 5,854
Записей в блоге: 79
24.04.2020, 18:02
Цитата Сообщение от locm Посмотреть сообщение
Я изначально писал про внешний рантайм. Про внешние зависимости начал не я.
Вот моя мысль изначальная была:
Цитата Сообщение от The trick Посмотреть сообщение
Это глупо. Много ли Вы видели профессиональных программ которые никаких DLL не используют? Да почти любая современная среда разработки тянет за собой кучу библиотек и это не плохо, а наоборот хорошо. Библиотеки придумали как раз для того чтобы ими пользовались, а не для того чтобы обходить их стороной.
И далее в ответ на Power_Basic:
Цитата Сообщение от The trick Посмотреть сообщение
Ну PureBasic использует к примеру Scintilla.dll
Ты же не так меня понял и начал писать:
Цитата Сообщение от locm Посмотреть сообщение
Для создаваемых приложений этот файл не требуется, кроме случая разработки текстового редактора на основе Scintilla.
На что я тебе написал:
Цитата Сообщение от The trick Посмотреть сообщение
Я не говорю про файлы которые делаются пуриком. Ты меня неверно понял. Я говорю что любое более-менее серьезное приложение в большинстве своем использует внешние зависимости. Даже пурик. То что у кого-то патологическая боязнь заиметь лишнюю зависимость в виде DLL, OCX, EXE - на это большинству рядовых пользователей все равно.


Цитата Сообщение от locm Посмотреть сообщение
Глупо создавать инсталлятор для простых программ.
А для простых программ он может быть и не нужен.
Цитата Сообщение от locm Посмотреть сообщение
Если программа не нуждается в установке, зачем инсталлятор?
А он и не нужен, если программа не нуждается. Кто-то с этим спорит?
Цитата Сообщение от locm Посмотреть сообщение
А если простая программа требует установки, вероятно она написана неправильно.
Простая/сложная - это вообще не влияет. Некоторые программы имеют опцию чтобы быть установленной, либо работать без установки.

Цитата Сообщение от locm Посмотреть сообщение
Используются при необходимости. В отличие от них внешний рантайм используется всегда.
Ну и? В чем проблема-то? Ну пурик к примеру требует внешний msvcrt, и что? JAVA требует установленный рантайм, Python требует, NET требует и другие. Рантайм - это необходимость и он используется по необходимости. Тоже самое любые внешние зависимости помимо рантайма - используются по необходимости.

Цитата Сообщение от locm Посмотреть сообщение
Не знаю как в MS студии, а в GCC объектные файлы скомпилированные с опцией LTO в одной версии, не соберутся в другой версии.
Не думаю что в студии так, проверять просто не хочется ставить студию другую.
0
 Аватар для Power_Basic
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
24.04.2020, 18:39  [ТС]
Цитата Сообщение от Power_Basic
А вообще-то я, пожалуй, запроста смог бы даже сейчас писать, как когда-то в Спектрум-бейсике, - всё подряд сверху вниз и с прыжками GOTO на номера строк
Цитата Сообщение от locm Посмотреть сообщение
Сейчас тоже можно писать подобным образом... Но так большую программу написать и поддерживать будет сложно.
Ну это же я пошутил так
Там смайликов куча
На самом деле, я, конечно же, всегда теперь стараюсь избегать оператора GOTO. Дурной стиль программирования и всё такое.
А в Спектрум-бейсике без него никак было не обойтись

Цитата Сообщение от Power_Basic
Я не знаю хорошо это или плохо, но просто здесь все зависимости вроде бы перечислены, потому и решил показать:
Цитата Сообщение от locm Посмотреть сообщение
Нужен список импорта dll.
Ну вот, пришлось ради этого даже специально скачать и установить trial-версию (на 30 дней) первой же попавшейся в интернете программы, которая умеет показывать импорт. На скриншоте результат её работы, - список импорта dll того же самого исполняемого файла на PowerBasic'е, который только показывает графическое окно и больше ничего не делает.
Миниатюры
Быстрый старт в изучении C++ для относительно опытных программистов Basic  
Вложения
Тип файла: zip Вся_папка_программы_с_исходником.ZIP (32.0 Кб, 1 просмотров)
0
Кормпилятор
 Аватар для Quiet Snow
5044 / 1718 / 409
Регистрация: 25.04.2010
Сообщений: 4,827
Записей в блоге: 2
24.04.2020, 19:11
Цитата Сообщение от Power_Basic Посмотреть сообщение
Ну вот, пришлось ради этого даже специально скачать и установить trial-версию (на 30 дней) первой же попавшейся в интернете программы, которая умеет показывать импорт. На скриншоте результат её работы, - список импорта dll того же самого исполняемого файла на PowerBasic'е, который только показывает графическое окно и больше ничего не делает.
Чё-то толстовато для голого окна.

Добавлено через 7 минут
Там всего то надо:
GetModuleHandle, LoadIcon, LoadCursor, GetStockObject
RegisterClass, CreateWindowEx
RedrawWindow, ShowWindow, UpdateWindow
PeekMessage, TranslateMessage, DispatchMessage, PostQuitMessage

Ну и ещё несколько функций по мелочи.
0
 Аватар для Power_Basic
46 / 25 / 0
Регистрация: 08.03.2016
Сообщений: 443
24.04.2020, 19:14  [ТС]
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Чё-то толстовато для голого окна.
Ну уж что есть, то и есть
Я от себя ничего не добавил

Добавлено через 2 минуты
Цитата Сообщение от Quiet Snow Посмотреть сообщение
Там всего то надо:
GetModuleHandle, LoadIcon, LoadCursor, GetStockObject
RegisterClass, CreateWindowEx
RedrawWindow, ShowWindow, UpdateWindow
PeekMessage, TranslateMessage, DispatchMessage, PostQuitMessage
Ну и ещё несколько функций по мелочи.
Ну там же ещё визуальный редактор это окно-то создаёт. Может это он чего лишнего намутил
0
Модератор
10060 / 3905 / 885
Регистрация: 22.02.2013
Сообщений: 5,854
Записей в блоге: 79
24.04.2020, 19:44
Окно можно создать одной функцией DialogBoxIndirectParam.
0
Эксперт по электронике
6998 / 3314 / 341
Регистрация: 28.10.2011
Сообщений: 13,017
Записей в блоге: 7
24.04.2020, 21:41
Цитата Сообщение от The trick Посмотреть сообщение
Не думаю что в студии так
Очень возможно что именно так. Ведь это данные оптимизатора и если алгоритм изменился, будет сбой.

Цитата Сообщение от The trick Посмотреть сообщение
Окно можно создать одной функцией DialogBoxIndirectParam.
Или вызовами одной функции CreateWindow.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.04.2020, 21:41

набор опытных C++ программистов
Большой иностранный банк проводит набор опытных C++ программистов для IT-департамента своего московского офиса. Необходимы кандидаты с...

Приглашаю На работу Опытных Программистов
Всем привет . Я ищю Хороших программистов для работы над Онлайн игрой ( в типе neverlands) От вас Требую одно хорошую ...

Нужен совет опытных программистов на C#
Всем добрый день! Я здесь абсолютно новенький! Так что прошу сразу не кидать камнями если задаю вопросы не там где нужно! :) Совсем...

Нужен совет опытных программистов
Задача: Написать систему логирования LS кода, подсчета производительности (как долго исполняется LS код) и учета ошибок. Цель: получить...

Требуется совет опытных программистов
Основы С++ более менее изучены. Что же дальше? Что учить чтоб писать хоть какие то простенькие прикладные программы?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
120
Ответ Создать тему
Новые блоги и статьи
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу))) Критические ошибки, мешающие компиляции и. . .
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата) Этот документ предназначен для того, чтобы новый чат Claude мог продолжить работу без необходимости заново разбираться в. . .
сукцессия 15 неявная схема
anaschu 29.06.2026
Алиса Калибровка параметров симбиотической модели: технический обзор Содержание: Введение Постановка проблемы Технические аспекты реализации Процесс внедрения изменений
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0» https:/ / ibb. co/ NnkGpfMd Представленная интегрированная схема описывает непрерывную нелинейную. . .
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы ### Аннотация Представлено исследование по разработке агентной модели микоризной. . .
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики Контекст Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
Сукцессия 11. Проверка орудий перед войной: разработка через тестирование
anaschu 27.06.2026
Как не дать модели соврать самой себе: проверки для симуляции микоризной сукцессии Введение Когда вы строите математическую модель живой системы — грибов, растений, почвы — главная опасность. . .
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np class PlantAgent: def __init__(self, name, strategy, initial_biomass): self. name = name self. strategy = strategy # "greedy" (широколиственные) или. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru