![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Sur0vy |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 1.10.2009 Репутация: нет Всего: нет |
Доброго времени суток!
Определяю версию программы, используя библиотеку jedi Код примерно такой:
Работает нормально на компьютере, где установлена среда, запускаю на любом другом компьютере Access violation Но это только часть проблемы, добавляю к коду одну строку
И все наоборот: на моем компе с win7 и delphi xe2 вылетает, а на "чистой" XP все нормально работает. Может было у кого-нибудь подобное волшебство? |
||||
|
|||||
| northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 8 Всего: 20 |
Это не волшебство. Это нормальное поведение AV. Неверная работа с памятью не всегда приводит к AV. Так что не ищите разницы в компьютерах. Ишите саму ошибку. Очень советую прочитать вот это. Причём полностью и вдумчиво. Это сообщение отредактировал(а) northener - 21.1.2012, 01:32 -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
|
|||
|
||||
| superVad |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 735 Регистрация: 6.4.2006 Где: Черкассы, Украина Репутация: 4 Всего: 15 |
Sur0vy, на какой строчке вылетает тот самый АВ? Без этой информации можно долго гадать.
Если на другом компе нету делфи, то хотя бы по вставляй туда шоумеседжей, что бы определить... |
|||
|
||||
| Keeper89 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 20 Всего: 58 |
Надо бы добавить проверку на успешность получения версии, как-то так:
Это сообщение отредактировал(а) Keeper89 - 21.1.2012, 01:44 |
|||
|
||||
| northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 8 Всего: 20 |
Извращенцы!
Зачем вам понадобилось помощь джедаев, чтобы получить полную информацию о версии программы? -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
| Keeper89 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 20 Всего: 58 |
Подключили всего один модуль, а ты сразу извращенцы
Хорошая объектная обертка. А кому нужна диета - можно прям вырезать GetFileVersionInfo оттуда, вот как вариант. |
|||
|
||||
| БелАмор |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 209 Регистрация: 10.6.2010 Где: Россия Репутация: 5 Всего: 17 |
1. Поиск чего-либо в текущем каталоге - путь мазохиста. Указывайте полный путь. Текущий каталог может смениться в любой момент. В частности, его меняют все диалоги открытия/сохранения файлов, имеющие настройки по умолчанию. 2. Указание литералом того, что можно получать автоматически - плохой стиль. 3. Полное имя своего исполняемого файла можно получить либо из командной строки ParamStr(0), либо из свойства Application.ExeName Это сообщение отредактировал(а) БелАмор - 21.1.2012, 11:22 |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
и чем же вам мой вариант не подходит?
Добавлено через 25 секунд а джедаев используют только мазохисты |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
А я всегда советовал брать свою версию из ресурса, а не обращаться к своему файлу.
|
|||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 38 Всего: 89 |
Есть мнение, что если человек не может разобраться с объектной обёрткой, то программирование на WinAPI для него - вообще труба.
-------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| Akella |
|
||||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
|
||||
|
|||||
| Keeper89 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 20 Всего: 58 |
||||
|
||||
| gesper |
|
|||
![]() "Shарфик" ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 23.2.2005 Репутация: 1 Всего: 2 |
Чем плох такой вариант, как то не разбирался в нем досканально, но давно очень использую и на всех ОС работал, зачем куча кода?
--------------------
...И приколется обломившийся и oбломится приколовшийся... |
|||
|
||||
| northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 8 Всего: 20 |
Я лично такого не говорил. Более того у джедаев есть весьма много полезного и весьма грамотного. Особенно если использовать их наработки с умом. Возможно используя их библиотеку (начиная с времен RxLib и до нынешнего времени) не столько напрямую, сколько просматривая её исходный код в "учебных" целях. Но вот использовать их компоненты для получения номера версии программы просто глупо. Ведь с помощью WinAPI реализовать получение данной информации возможно на любой версии Дельфи начиная с истоков (т.е. Д1)! И даже в Д1, где приходилось делать "лишние телодвижения" для преобразовании string в PChar и наоборот, такой код состоит из всего 9 строчек!!!
Соглашусь в целом, но не в данном случае. Ссылок на пример получения версии программы через WinAPI во всемирной помойке - миллион и ещё маленькая тележка. И разобраться в этих примерах гораздо проще, ибо те три функции WinAPI, которые там используются достаточно нормально документированы. А вот сторонние "обёртки", как правило страдают в этом плане. Добавлено @ 00:36 Страдает он только неграмотной работой с функциями WinAPI. Это я бы сказал "вариант новичка". Функции WinAPI в данном коде используются как процедуры. Т.е. "Авось и так сойдёт, а писать лишний код лень, да и не понятно как". Это сообщение отредактировал(а) northener - 22.1.2012, 00:51 -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
| CodeMonkey |
|
||||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 38 Всего: 89 |
Это - не компоненты, это - объектная обёртка. Любая нормальная книжка по правильному коду скажет нам, что объетные обёртки - это хорошо по миллиону причин, а прямое обращение к API - зло.
И весь этот миллион страдает от известных проблем. Что и подтверждается примером в этой теме. Нормальных примеров - пересчитать по пальцам.
Особенно хорошо заметно по этой теме, как просто в них разобраться -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
||||||
|
|||||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 38 Всего: 89 |
Посмотри пример в комплекте: \jcl\examples\windows\fileversion\VerInfoExample.dpr Прошу прощения, TJvVersionInfo - действительно компонент, а объектная обёртка - это TJclFileVersionInfo. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Keeper89, потому что для того, чтобы использовать пару компонентов оттуда, приходится устанавливать 2 помойки компонент. Ну или ломать голову над тем, как можно установить только те пару нужных компонент.
|
|||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 38 Всего: 89 |
Что и говорить - крайне сложно запустить .bat файл и нащёлкать Далее, Далее, Далее
-------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Да и нечего говорить. Ты не понял ход моей мысли. Попробуй перечитать может уловишь
|
|||
|
||||
| Keeper89 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2580 Регистрация: 26.2.2009 Репутация: 20 Всего: 58 |
Akella, мне места не жалко =)
Ну а если серьезно, я понимаю о чем ты, и ясно, что ради получения версии устанавливать это вряд ли надо. Но я пользуюсь этим пакетищем регулярно, и не только парой, поэтому для меня это нормально. К тому же там много чему есть поучиться (получению версии в том числе). З.Ы. Хотя может я и расточительный: установлена у меня вот, например, Visual Studio целиком, а пользуюсь только C# Это сообщение отредактировал(а) Keeper89 - 22.1.2012, 16:41 |
|||
|
||||
| northener |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1361 Регистрация: 2.9.2010 Репутация: 8 Всего: 20 |
Вы противоречите сами себе. Хоть какой-то ответ автору "по теме" дали только вы, Александр. И то не известно правильный ли? "Не известно" потому, что для анализа вопроса и/или ответа нужно знать компонент/обёртку. А имя им легион, этим компонентам/обёрткам созданным кем-то, когда-то. Знать их все - нереально (не сомневаюсь, что вы это понимаете). А был бы вопрос типа gesper, многим не составило бы труда указать на ошибки и на то как их исправить. А что касается известных проблем, то тут вы передёргиваете. Естественно, что на помойке трудно найти что-то ценное. Но некие простые примеры решения простых вопросов (а вопрос определения версии уж "Ну очень простой и ну уж очень старый и его решение не менялось ни разу до сих пор и вряд ли когда-нибудь изменится!") найти там не трудно. Это сообщение отредактировал(а) northener - 23.1.2012, 01:23 -------------------- Но только лошади летают вдохновенно. Иначе лошади разбились бы мгновенно! |
|||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 38 Всего: 89 |
Ответ по теме дали Keeper89 и БелАмор. Добавлено через 3 минуты и 8 секунд P.S. Вообще замечу, что автору, похоже, по барабану на тему. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
Т.е. Snowy и Я типа здесь просто пофлудили?
Добавлено через 17 секунд Вот она - черная неблагодарность |
|||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 38 Всего: 89 |
Могу ответить твоими словами - "Ты не понял ход моей мысли. Попробуй перечитать может уловишь".
Но я добрый и поэтому подскажу, что Keeper и БелАмор указали на проблему с кодом (про это говорил northener). Все остальные не указывали на решение проблемы кода в вопросе. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 62 Всего: 128 |
Jedi... интернеты... примеры получения версии.
Зачем это все? Есть же SysUtils.GetFileVersion, правда она только dwFileVersionMS получает, но может послужить примером кода для своей функции получения всех 64 бит значения версии... -------------------- There are always someone smarter than you... |
|||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 38 Всего: 89 |
Вот из-за "но"-то оно и...
-------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 62 Всего: 128 |
CodeMonkey, ну так одна доп.строчка кода решает проблему "но".
-------------------- There are always someone smarter than you... |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |