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

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

Автор: bomzzz
Дата сообщения: 15.09.2012 20:17
полно 16 битных компиляторов. и старые никуда не делись. я тасмом пользуюсь, и масмом. есть бейсик который я в школе учил, но я им уже совсем не пользуюсь как ассемблер подучил. эмулятором еще - вообще клевая штука чтоб ассебмлер учить
http://www.emu8086.com/
тут по моему фасм встроенный, но синтаксис практически полностью с тасмом совпадает
Автор: TeXpert
Дата сообщения: 15.09.2012 20:24
Если кто увлекается Qt --- может, подскажете, как в бесплатной версии в Qt Creator создать Toolchain для Intel C++ под Windows (в Linux он там есть)? Попробовал в исходниках покопаться --- долгая морока(. Вся надежда на обещанный скоро Qt Creator 2.6, там вроде кое-какие подвижки намечаются
Автор: bomzzz
Дата сообщения: 16.09.2012 09:32
кстати MASM32, который универсальный и содержит в себе и 16 битный компилятор, выдран из студии.
Автор: ne_viens
Дата сообщения: 16.09.2012 16:01

Цитата:
никто не поможет. есть программа написаная на студии, для запуска требует библиотеки Microsoft Runtime Libruary, и , зараза, в упор не хочет использовать если они рядом в папке лежат, а только если зарегистрированы в системе. нельзя это дело обойти как то?


1. Надо скопировать необходимые dll из C:\windows\winsxs\x86...\ рядом с приложением.
2. Скопировать сответствующий манифест из C:\windows\winsxs\Manifests\ туда-же под именем microsoft.vc90.crt.manifest.
3. Выкинуть из манифеста всё лишнее:

Код: <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<noInheritable></noInheritable>
<assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.30729.6161" processorArchitecture="x86" ></assemblyIdentity>
<file name="msvcr90.dll" />
<file name="msvcp90.dll" />
<file name="msvcm90.dll" />
</assembly>
Автор: bomzzz
Дата сообщения: 16.09.2012 16:05
огромное спасибо. попробую. уже надежду потерял

Добавлено:

Цитата:
Собрать приложение не с встроенным манифестом, а внешним.

а что это значит?

Добавлено:
application.exe.manifest а это что за файл у меня таких нету.

http://rghost.ru/40396564
Автор: ne_viens
Дата сообщения: 16.09.2012 16:26
Линкер это делает по умолчанию, если не включать опцию /MANIFEST:NO
Автор: bomzzz
Дата сообщения: 16.09.2012 16:30
а. то есть это надо перекомпилировать саму программу. у меня исходников то нет. и студией пользоваться не умеют. значит не получится.
Автор: ne_viens
Дата сообщения: 16.09.2012 16:37

Цитата:
...
http://rghost.ru/40396564


Там встроенные (в .rsrc) манифесты.
Moжно попробовать нех редактором подправить. Или вообще удалить редактором ресурсов, и написать внешний манифест.
Автор: bomzzz
Дата сообщения: 16.09.2012 16:44


Добавлено:
екзешник еще и сжат, надо сначала найти чем
Автор: MoLnuS
Дата сообщения: 17.09.2012 13:56

Цитата:
Однако, круто! А почему не предположение, что "32-разрядные делаются", ты же на 64-х разрядной машине?

Потому как Винда сама выдавала сообщение о 16-ти битности=)

Итак, настроил значит я компилятор пытаюсь делать задачи.
А мне из консоли на все попытки...улыбается смайл О__о
Что за???

Пытался вывести код введенного символа - смайл, писал что-то конкретное в принтф - тоже смайл...Из-за чего такое безумие?%)

Win7Ult_x64, Geany 1.22, MinGW (mingw32-g++.exe).

Скрин:
Автор: BagaBaga
Дата сообщения: 19.09.2012 22:19
Вопрос по оператору []. Он может принимать только единственный аргумент ([a]), или же его можно переопределить так, чтобы он принимал два аргумента ([a,b])?
Автор: akaGM
Дата сообщения: 20.09.2012 10:41
MoLnuS
ты хочешь сказать, что это тоже не работает?
int i = 10;
printf("i = %d\n", i);
Автор: panda3
Дата сообщения: 20.09.2012 11:30
BagaBaga

Цитата:
Вопрос по оператору []. Он может принимать только единственный аргумент ([a]), или же его можно переопределить так, чтобы он принимал два аргумента ([a,b])?

Используй круглые скобочки, там скокохошь можно аргументов. А тут: [а, b] - нет двух аргументов у оператора [], тут два аргумента у оператора запятая, т.е вопрос даже не в том, чтобы его переопределить, а в том что вообще синтаксически невозможно ему два аргумента указать.
Автор: BagaBaga
Дата сообщения: 20.09.2012 19:54
Вопрос по vector. У него [] не проверяют границы диапазонов, т.е. действуют точно так же, как у обычного массива. at() аналогичен, но проверяет. Есть ли какой флаг "дебага", чтобы с ним скомпилированная программа на [] проверяла допустимость индекса (т.е. вела себя как at())? Уверен, что когда-то такое находил, но вот теперь нигде не вижу ничего похожего.
Автор: Aktaf
Дата сообщения: 21.09.2012 09:31
Помогите пожалуйста.
Я не программер. Но, вот вынужден был немного приспособиться.
Никто не брался, а нужно было Вертуал Даб зделать как мне бы понравился.
Не всю программу конечно, а расположения кнопок управлений, за одно более полно перевести и еще по мелочу. Вроде удалось. Но, он же постоянно развивается, я и приготовил себе чтобы можно было с учетом изменений, свежие версии сделать по своему образцу. Раздал предыдущие версии, тем кто хотел и так же впредь хочется поддержать. Явно удобнее. Но, вот с свежей версией проблема.
Я не могу его заставить "работать. Т.е. Из исходников, ничего не меняя, не могу скомпилировать. Видимо версия не подходит и при конвертации что-то не получается или что еще не знаю...

Визуал у меня 2008.
Попробуйте пожалуйста, что не так и как мне приспособиться. Вот исходник с сайта:
http://www.virtualdub.org/beta/VirtualDub-1.10.3-test6-src.7z

Спасибо.
Автор: lokoham
Дата сообщения: 21.09.2012 09:37
Здравтствуйте У меня есть 2 вопроса по языку Си:
1. Возможно ли в формате вывода fprintf внутри формата использовать переменную, которая допустим отвечает за количество знаков после точки ( пример: fprintf(write, "%.jf ",c); , где j переменная, которая высчитывается раньше) ?

2.Как правильно сравнить вещественное и целое число?
Автор: ne_viens
Дата сообщения: 21.09.2012 12:45
1. Нет, сначало sprintf'ом придётся поработать:

...
int x = 3;
char j[10];
float c;

sprintf(j, "%%.%df", x);
fprintf(write, j, c);
...

2. Просто сравнивать:
...
float c = 3.14;
int x = 3;

if(c > x)
...
Автор: panda3
Дата сообщения: 21.09.2012 19:14
BagaBaga

Цитата:
Есть ли какой флаг "дебага", чтобы с ним скомпилированная программа на [] проверяла допустимость индекса

В stl вообще поддержки отладки никакой нет, как правило. Я использую векторы из библиотеки boost:ublas, там есть проверка индекса при отладке.
Автор: kotlomoy
Дата сообщения: 22.09.2012 01:56
lokoham

Цитата:
2.Как правильно сравнить вещественное и целое число?

Самое главное, нужно избегать прямых сравнений типа

...
double d;
...
if (0 == d)
...

а вместо этого писать, например, так

if (abs( d - 0 ) <= 0.00001)


То же самое при проверке на больше/меньше, вместо

if (d > 0)

лучше писать

if (d > 0.00001)
Автор: adasiko
Дата сообщения: 24.09.2012 07:02
Aktaf
Лучше использовать ту среду под которой эти исходники - vs 2005. Даже для программиста со среднем опытом перенос чужого кода под другую ИДЕ зачатую не простая задача.
Автор: Aktaf
Дата сообщения: 24.09.2012 14:16
adasiko

Цитата:
Лучше использовать ту среду под которой эти исходники - vs 2005. Даже для программиста со среднем опытом перенос чужого кода под другую ИДЕ зачатую не простая задача.

Наверно так. Но, вот с тремя разными версиями Даба добился. А тут они изменили что-то.
В описании ошибок то есть, но я не понимаю. То ли это при конвертации воспринимает правильно описанное как не правильным, то ли на самом деле не правильно (тогда вроде и у самих не получилось бы).
А я так долго добивался, с установками плохо происходит. Кое как добился. Теперь если снова все переделывать. Это кошмар.

Неужели никто не хочет помощь. Знающим же это не так сложно. Там ошибки в одном месте и мне кажется совсем легко должно быть. Но, набегает как 83 ошибки (в одном разделе). А в Дабе это вроде 1-4 ошибок. Вообщем ругается, что написано не правильно, что-то типа - перед запятой нужно ставить точку с запятой, и т.д. и поэтому не правильно определяется...
Автор: ItsJustMe
Дата сообщения: 25.09.2012 00:19
Aktaf
2005 и 2008 отличаются незначительно. При переносе проблем возникнуть не должно. Даже при переносе кода с 2005 на 2012 проблем обычно не возникает.

Цитата:
Т.е. Из исходников, ничего не меняя, не могу скомпилировать.

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

Цитата:
Знающим же это не так сложно.

Дело не в том, что сложно, а в том, что человек сам должен быть заинтересован в компиляции этого нечто. В данном случае VirtualDub. Потому, что это все же может потребовать некоторых усилий. Я вот сейчас скачал исходники и... действительно пришел к выводу, что некоторые усилия понадобятся. В моем случае - несколько бОльшие усилия, чем я готов приложить.
Автор: Aktaf
Дата сообщения: 25.09.2012 06:56
ItsJustMe

Цитата:
В моем случае - несколько бОльшие усилия, чем я готов приложить.

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

Спасибо. Вопрос - просьба снимается. Помогли разобраться.
Они сменили "платформу" ...
Автор: bURov73
Дата сообщения: 03.10.2012 15:11
Создаю MSI.
Хочется понять как поступают разработчики, если нужно приложение устанавливать как на 32-битные, так и на 64-битные системы?
Делать 2 экземпляра MSI?
Автор: bomzzz
Дата сообщения: 03.10.2012 15:14
да два инсталятора создают. ни разу не попадалась программы чтоб инсталятор один был или екзешник. вот дллки общие попадались
Автор: BagaBaga
Дата сообщения: 03.10.2012 18:59
Вопрос про произвольный нижний индекс в массиве.

Известно, что в С++ нумерация элементов в массива происходит с нуля. Чтобы было не с нуля, делают, например, вот такой хак:
int *ptr;
int *p = ptr-1;
После этого его можно использовать от 1 до n, а не от 0 до N-1.

Так вот, насколько этот хак законен, и что луше, если не он? В оригинале нужно было получить произвольную нижнюю границу, например
из
int *ii = {1,2,3};
(диапазон по i от 0 до 2)
int *jj = ii+1;
(Диапазон от -1 до 1)
Автор: adasiko
Дата сообщения: 03.10.2012 19:53
bURov73
Зависит от задачи, в принципе можно и в один все запихать
bomzzz
Ну как же, я хоть и не активный пользователь вендов, но virtualbox, flash-plugin...

Добавлено:
BagaBaga
А зачем это вообще нужно, если можно просто линейным сдвигом по индексу...
так только извращенцы дельфисты делают
А хак немного грязноват - можно с помощью него выстрелить себе по заднице
Автор: BagaBaga
Дата сообщения: 03.10.2012 20:25
Это нужно в некоторого рода задачах, когда индекс "естественным образом" ложится в некоторый непрерывный диапазон (или когда вся задача описана в такого рода диапазонах). Из учебных задачек можно вспомнить "о восьми ферзях" (кодирование диагоналей и антидиагоналей). Из неучебных придётся сначала делать "реверанс" в предметную область, но нужно ли? И - таки да - индекс можно просто пересчитать, может, даже спрятать в функцию (чтобы не накосячить с очепятками при наборе), или - для красивости - упаковать в оператор (понятно, что не для массива, - т.к. для стандартных типов не перегрузить, - а для своего класса-обёртки).
Автор: karakurt2
Дата сообщения: 03.10.2012 21:35
BagaBaga
Такой подход применяется в книге, Numerical Recipes, но люди правильно говорят, что это извращение. Для языка это просто базовый адрес и смещение от него, так что с точки зрения эффективности лучше подправить логику алгоритма.
Автор: juvaforza
Дата сообщения: 03.10.2012 22:12
bURov73
Если конкретно про MSI - вот, и дальше про проблемы по гуглу.

Цитата:
Хочется понять как поступают разработчики, если нужно приложение устанавливать как на 32-битные, так и на 64-битные системы?

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

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

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193

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


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