Dr.Yevhenius
|
|
« : 03-12-2009 20:51 » |
|
Получил задание: сделать (простую) программу, которая может работать на машинах 32/64-bit с ОС Windows XP/Vista/7 (да и просто - такое знать полезно, а мне - и интересно). Ничего подобного раньше не встречал. Подскажите пожалуйста, что для этого надо знать? Может есть какие-то книги по этому делу? Или ссылки? Буду очень благодарен всему! P.S. Заинтересовала тема https://forum.shelek.ru/index.php/topic,5267.0.html... Но то для Delphi... Больше ничего на этом форуме не нашел.
|
|
« Последнее редактирование: 22-01-2010 14:21 от Вад »
|
Записан
|
|
|
|
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #1 : 03-12-2009 21:14 » |
|
На уровне сырцов практически нет никаких проблем, если не применять всякие трюки. На уровне откомпилированного кода, скорее всего приложения не запустятся. Или будет работать в режиме эмулятора.
Кстати тема названа не корректно. Или уже Windows Vista это не продолжение Windows XP?
|
|
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
RXL
|
|
« Ответ #2 : 03-12-2009 21:16 » |
|
Знать для этого надо много чего. Думаю, что прежде всего - требования этих ОС по безопасности, размещению файлов и т.п. В контексте 32/64 нужно знать, какие типы применять и не путать с другими, имеющими на 32-битной платформе один размер. Например, int и long - разные типы. В 32-битных системах они не отличаются, а вот в других системах имеют разный размер: int - размер целого для данной платформы (16, 32, 64), long - 32 бита.
Разве компилятор Delphi умеет создавать 64-битный код?
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Dr.Yevhenius
|
|
« Ответ #3 : 03-12-2009 21:17 » |
|
Кстати тема названа не корректно. Или уже Windows Vista это не продолжение Windows XP?
Суть темы - не научит Ься программировать под Windows XP/Vista/7, а вообще, под разные ОС: под Windows, Linux и т. д. В контексте 32/64 ... long - 32 бита.
Я так понял , что для 32/64 нужно быть осторожным с размеры типов данных и всего. Разве компилятор Delphi умеет создавать 64-битный код?
Не понял . Но всё-равно Delphi меня не интересует.
|
|
« Последнее редактирование: 04-12-2009 06:03 от Sel »
|
Записан
|
|
|
|
RXL
|
|
« Ответ #4 : 03-12-2009 21:26 » |
|
Разве не ты сказал про Delphi?
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Dr.Yevhenius
|
|
« Ответ #5 : 03-12-2009 21:29 » |
|
На уровне сырцов практически нет никаких проблем, если не применять всякие трюки. На уровне откомпилированного кода, скорее всего приложения не запустятся. Или будет работать в режиме эмулятора.
Т о есть , все-таки готовая программа может и не запуститься под XP или Vista или "коряво" работать? Разве не ты сказал про Delphi?
Я имел ввиду, что тема определения версии ОС интересна. И что , к сожалению , она решена на Delphi, который мне не поможет. Извините, что неточно выразился.
|
|
« Последнее редактирование: 04-12-2009 06:02 от Sel »
|
Записан
|
|
|
|
RXL
|
|
« Ответ #6 : 03-12-2009 21:32 » |
|
Inkognito, посмотри вот эту тему: https://forum.shelek.ru/index.php/topic,22548.0.htmlМеня тоже интересуют вопросы совместимости: есть уже готовое ПО в исходниках, работающее под XP, и как его можно адаптировать для Vista/W7. По твоей ссылки ничего про совместимость нет - там лишь получение версии ОС.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #7 : 03-12-2009 21:35 » |
|
Ну чтоб код почти без исправлений мог компилироваться и в Винде и в *nix. Есть два пути, Или полностью придерживаться только стандартных библиотек. Или использовать кросс платформенные библиотеки. Первый способ не всегда работает. Microsoft любит заниматься самодеятельностью, даже в стандартных вешах. И даже наперекор своим собственным стандартам. Второй способ более приемлем. Так как все неровности в подходах разных ОС берет на себя кроссплатформенная библиотека. Ты же работаеш только средствами этой библиотеки. Самая известная из них это Qt фирмы Trolltech. Правда где то год назад ее полностью выкупила фирма Nokia. На уровне сырцов практически нет никаких проблем, если не применять всякие трюки. На уровне откомпилированного кода, скорее всего приложения не запустятся. Или будет работать в режиме эмулятора.
Тоесть все-таки готовая программа может и не запуститься под XP или Vista или "коряво" работать? Тому примеров куча. Недавно в новостных лентах видел. Что составляется уже список приложений, которые работали прекрасно в Vista и не работают в семерке. Про Хр я молчу.
|
|
« Последнее редактирование: 03-12-2009 21:39 от Finch »
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
|
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #9 : 03-12-2009 21:57 » |
|
Inkognito, А писать код, который будет знать твой тип, и который сможет работать с твоим типом?
Я не знаю как студия компилирует. GCC в 64 разрядной среде битность типов практически не меняет. Едиственное что она меняет, из того что я заметил, это указатели. Но оно и понятно. Чтобы компилятор компилировал согласно стандарту для 64 разрядной среды, нужно указывать специальный ключик компиляции. Сделано это я так думаю, чтоб не слишком править код для 64 рязрядной среды в Linux. Но уже готовое приложение без эмуляции нельзя запустить в 32 системе и наоборот.
Inkognito, Это не чат. Старайся все писать в один пост. А не разбрасывать по предложению в несколько постов. Функция редактирования поста у тебя должна уже работать.
|
|
« Последнее редактирование: 03-12-2009 22:03 от Finch »
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
Dr.Yevhenius
|
|
« Ответ #10 : 28-12-2009 06:44 » |
|
Решил заняться изучением кроссплатформенного программирования. Нашел учебник. Но там, почему-то, не указали, в какай среде работать. В результате, компилятор ругается сразу на строчке #include <QtGui>. Кто работал с Qt - подскажите: в какой программе мне работь, что установить на компьютер? И кстати: обязательно писать QtGui или можно и qtgui? (Хотя в лубом случае я буду использовать первый вариант, но всё равно интересно знать)
|
|
« Последнее редактирование: 28-12-2009 06:58 от Inkognito »
|
Записан
|
|
|
|
RXL
|
|
« Ответ #11 : 28-12-2009 08:42 » |
|
Inkognito, сходи на сайт производителя Qt: www.trolltech.com
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #12 : 28-12-2009 09:42 » |
|
Для виндовс, если ты работаешь в VC++, то Qt идет на коммерческой основе, что в принципе логично. Если у тебя есть деньги приобрести официальную студию, значит ты занимаешся коммерческой деятельностью. Значит должен приобрести коммерческий вариант и Qt.. Чтоб работать для обучения, нужно ставить также пакет MinGW. Это портирование GCC в винду. И, естественно, писать в стиле GCC. #include <QtGui> Да, так обязательно писать, иначе у тебя в других ОС будут проблемы. Все *nix регистрозависимы в названии файлов.
|
|
« Последнее редактирование: 21-01-2010 14:41 от Алексей1153++ »
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
Dr.Yevhenius
|
|
« Ответ #13 : 21-01-2010 13:56 » |
|
Извините за пост, но: Для виндовс. Если ты работаеш в VC++. То Qt идет на коммерческой основе. Что в принципе логично. Если у тебя есть деньги приобрести официальную студию. Значит ты занимаешся коммерческой деятельностью. Значит должен приобрести коммерческий вариант и Qt.. Чтоб работать для обучения. Нужно ставить также пакет MinGW. Это портирование GCC в винду. И естественно писать в стиле GCC.
Finch, очень сложно понять ход твоих мыслей, когда ты пишешь в таком стиле. Предложения без логического завершения (или начала).
|
|
|
Записан
|
|
|
|
Алексей++
глобальный и пушистый
Глобальный модератор
Offline
Сообщений: 13
|
|
« Ответ #14 : 21-01-2010 14:42 » |
|
Inkognito, это не стиль, а отсутствие клавы с кириллицей )
|
|
|
Записан
|
|
|
|
Dr.Yevhenius
|
|
« Ответ #15 : 22-01-2010 14:01 » |
|
То есть, если я работаю над коммерческим проектом, то должен оплатить использование Qt, правильно?
|
|
« Последнее редактирование: 22-01-2010 20:57 от Inkognito »
|
Записан
|
|
|
|
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #16 : 22-01-2010 14:08 » |
|
Да. Причем насколько я понял лицензионное соглашение. Одно рабочее место одна лицензия. Более конкретно, чтоб узнать цены. Нужно обрашаться к ним по E-mail. Цена около 1000 баксов за лицензию, в зависимости от комплектации. Но есть также скидки.
|
|
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
Dr.Yevhenius
|
|
« Ответ #17 : 22-01-2010 21:01 » |
|
Ого! А если я пишу программу не в коммерческих целях, программу для свободного распостранения и использования, могу я использовать Qt бесплатно? Или ИСЛЮЧИТЕЛЬНО для ОБУЧЕНИЯ?
|
|
|
Записан
|
|
|
|
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #18 : 22-01-2010 21:11 » |
|
У Qt два вида лицензий. Одна LGPL и одна коммерческая. Если ты используеш бесплатную версию Qt, значит ты пишеш свою программу по LGPL лицензии. Которая допускает бесплатное использование библиотеки в любых целях, кроме коммерческих. Только если ты вносиш в код Qt какие либо изменения. Ты должен в обязательном порядке опубликовать.
|
|
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
Dr.Yevhenius
|
|
« Ответ #19 : 18-03-2010 10:49 » |
|
Извините за столь глупый, возможно, вопрос, но у Qt (у меня 4.6.0) есть что-то типа ConfirmDialog'а? А то я что-то не нашел.
|
|
|
Записан
|
|
|
|
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #20 : 18-03-2010 11:45 » |
|
Посмотри QMessageBox. Этот диалог как швецарский армейский нож.
|
|
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
Антон (LogRus)
|
|
« Ответ #21 : 18-03-2010 11:47 » |
|
|
|
|
Записан
|
Странно всё это....
|
|
|
Dr.Yevhenius
|
|
« Ответ #22 : 18-03-2010 11:50 » |
|
Ну да, можно заменить с помощью msgBox.setStandardButtons(QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel); Решение, как всегда, проще, чем искалось. Спасибо.
|
|
« Последнее редактирование: 18-03-2010 11:54 от Inkognito »
|
Записан
|
|
|
|
clearance
Гость
|
|
« Ответ #23 : 22-03-2010 01:02 » |
|
Например, int и long - разные типы. В 32-битных системах они не отличаются, а вот в других системах имеют разный размер: int - размер целого для данной платформы (16, 32, 64), long - 32 бита.
short не может быть длиннее int int не может быть длиннее long
|
|
|
Записан
|
|
|
|
RXL
|
|
« Ответ #24 : 22-03-2010 07:08 » |
|
clearance, источник, пожалуйста, и ссылки на него.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
|
Антон (LogRus)
|
|
« Ответ #26 : 22-03-2010 09:08 » |
|
+1
|
|
|
Записан
|
Странно всё это....
|
|
|
RXL
|
|
« Ответ #27 : 22-03-2010 12:01 » |
|
clearance, -1: это не ссылка, а помойка.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Finch
Спокойный
Администратор
Offline
Пол:
Пролетал мимо
|
|
« Ответ #28 : 22-03-2010 14:29 » |
|
3.9.1 Fundamentals type 2. There are four signed integer types: “signed char”, “short int”, “int”, and “long int.” In this list, each type provides at least as much storage as those preceding it in the list. Plain ints have the natu- ral size suggested by the architecture of the execution environment39) ; the other signed integer types are provided to meet special needs.
Про тип long ничего не сказано.
|
|
|
Записан
|
Не будите спашяго дракона. Джаффар (Коша)
|
|
|
RXL
|
|
« Ответ #29 : 22-03-2010 17:53 » |
|
6. Language 6.2 Concepts 6.2.5 TypesThere are five standard signed integer types, designated as signed char, short int, int, long int, and long long int. 6.3 Conversions 6.3.1 Arithmetic operands 6.3.1.1 Boolean, characters, and integersEvery integer type has an integer conversion rank defined as follows:
* The rank of long long int shall be greater than the rank of long int, which shall be greater than the rank of int, which shall be greater than the rank of short int, which shall be greater than the rank of signed char. Размеры не регламентированы, но сказано: char < short < int < long < long longЧестно говоря, не помню, где читал про фиксированный размер long. То ли какой-то старый стандарт, то ли еще чего. Короче, я ошибался. Посмотрел в заголовках glibc: Для 32-бит: char | 8 | short | 16 | int | 32 | long | 32 | long long | 64 |
Для 64-бит: char | 8 | short | 16 | int | 32 | long | 64 | long long | 64 |
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
|