| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Совместимость с XP и Vista |
| Автор: Newo 24.12.2008, 00:19 |
| Здравствуйте! У меня возникла проблема. Я работаю в Windows XP SP2 x32. Написал одну программу, в WinXP работает нормально. Однако многие люди пишут про несовместимость этой программы с WinVista. Вылезает окошко с надписью: "Параметр задан неверно". Вот скриншот (сделан не мною): http://s53.radikal.ru/i141/0812/71/008cb96b700f.jpg . Пробовал компилить как Delphi 7, так и Delphi 2009.... Все одно и то же - на Висте не работает! Подскажите, пожалуйста, как наладить совместимость с WinVista? Заранее спасибо! |
| Автор: CodeMonkey 24.12.2008, 00:33 |
| Это совершенно общее сообщение, которое ничего не говорит о причине ошибки. Расскажите больше о программе: что она делает, какие используются компоненты, в какой момент показывается ошибка, если она показывается, например, при нажатии на кнопку - приведите код. |
| Автор: Newo 24.12.2008, 00:54 | ||||||
Программа для обработки текстовых файлов (с ключевыми словами, но это уже мелочи))). Такая ошибка выдается сразу при запуске программы. Используются потоки (TThread) и соединение с интернетом. Т.к. в работе с сетью я еще не силен, воспользовался валявшейся в сети готовой функцией загрузки файла:
Из стандарных модулей подключаю:
|
| Автор: Данкинг 24.12.2008, 00:54 |
Параметр чего именно? Что программа пытается такого сделать-то? Аж самому интересно! |
| Автор: Newo 24.12.2008, 01:08 | ||
Не знаю. |
| Автор: nmn 24.12.2008, 01:18 |
| поставить vista и под отладчиком посмотреть что же все таки происходит, иначе очеь сложно если возможно |
| Автор: Frees 24.12.2008, 09:12 |
| может попробывать запускать с правами админа |
| Автор: Poseidon 24.12.2008, 10:10 |
| В Висте все немного по другому. Если программе нужен админский доступ, Виста сама попросит об этом. "Параметр задан неверно" - очень похоже на запуск программы с ярлыка, в котором указан параметр запуска. В таком случае не мешало бы увидеть все процедуры, выполняемые при запуске. OnCreate, OnShow, OnPaint и т.п. |
| Автор: Frees 24.12.2008, 12:14 | ||
это если научиш прогу просить админа сама виста просить админа не будет а выдаст ошибку memo1.lines.savetofile('c:\1.txt'); даст ошибку а не попросит пав админа |
| Автор: CodeMonkey 24.12.2008, 12:17 |
http://gunsmoker.blogspot.com/2008/10/vista.html. |
| Автор: lukas 24.12.2008, 14:19 |
| Frees, если для программы сделать инсталятор и зарегистрировать в системе в списке программ то никаких ошибок не будет. У меня по крайней мере не было. |
| Автор: Newo 24.12.2008, 20:50 | ||
| nmn, ну мало ли... Например, вдруг кто-нибудь встречался с такой проблемой... Poseidon, CodeMonkey, Вот код kwk.dpr (по сути при запуске подключаюсь с сайту, скачиваю txt-файлик, в котором лежит номер последней версии и url баннера, после чего гружу баннер):
|
| Автор: Akella 24.12.2008, 21:26 | ||
не попросит, прост дас программе по рукам, поверь Добавлено через 24 секунды Причём зависит от того, установлен ли SP1 |
| Автор: Newo 11.1.2009, 18:27 |
| Вобщем, я установил WinVista, как и посоветовали (полностью ее обновил). Поставил на нее Delphi 2009. При компиляции моя программа ошибок не выдает. Однако при запуске пишет, что недостаточно памяти (хотя в XP по-прежнему запускается, и ест примерно 8мб оперативы). Кто-нибудь сталкивался с подобным? Вот скриншот: http://s45.radikal.ru/i109/0901/ba/d926bd6a7963.jpg PS могу кинуть в личку исходники проги Заранее спасибо! |
| Автор: nmn 11.1.2009, 20:28 |
| посмотри в отладке где выбрасывается исключение |
| Автор: Newo 11.1.2009, 20:34 | ||
А можно по-подробней, если не сложно? Как это сделать? |
| Автор: CodeMonkey 11.1.2009, 20:35 |
Я сомневаюсь, что это исключение. Окно, похоже, показывается ещё до того, как программа получила управление. Newo, можешь скинуть мне - у меня и Vista и D2009. Добавлено через 10 минут и 10 секунд Посмотрел. Это чё такое: {$MAXSTACKSIZE 50000000000} ??? |
| Автор: Newo 11.1.2009, 20:46 | ||||
Отправил линк на рапиду. PS в исходящих сообщениях не сохраняется - это нормально?)) Добавлено через 5 минут и 3 секунды
Это в модуле Randomizer, так? Убрал, все-равно недостаточно памяти... |
| Автор: CodeMonkey 11.1.2009, 20:51 |
| P.S. Код вообще страшноват. Особенно, с учётом того, что это D2009. Вы бы лучше D2007 взяли. Поддержка Vista есть и в ней, но она по крайней мере Ansi. А то в D2009 в вашем коде проблемы с Unicode чуть ли не в каждой второй строчке ;) Вроде там галочку для этого где-то ставить надо. Добавлено через 2 минуты и 28 секунд P.P.S. По крайней мере я воспроизвёл "Параметр задан неверно". |
| Автор: Newo 11.1.2009, 20:56 | ||||
Изначально я это на Delphi 7 писал... Только сегодня пытался с юникодом разобраться)) Все-равно, сейчас основная проблема в другом... Добавлено через 3 минуты и 9 секунд
Как? У меня все равно пишет, что недостаточно памяти |
| Автор: CodeMonkey 11.1.2009, 21:00 |
Так точно. Убираете все MAXSTACKSIZE (у вас их вроде штук 5, наверное оставшиеся 4 - контрольные Добавлено через 7 минут и 9 секунд Пробежался по коду - заметил большое кол-во статических массивов. Подозреваю, что MAXSTACKSIZE вы добавили из-за проблем со стеком. Просто не надо использовать инструменты не по назначению (читай: заворачивать шурупы молотком). Стек не предназначен для хранения больших объёмов данных. Я рекомендую вам вместо адаптации под D2009 взять D2007 и переписать программу на использование динамических массивов ("var A: array of B;" + "SetLength(A, 15000);" + "Finalize(A);"). |
| Автор: Newo 11.1.2009, 21:08 | ||
Так, еще раз: 1. удаляю все maxstacksize в модуле randomizer (в другим модулях вроди б нет))). 2. удаляю файлы *.cfg и *.dof (кстати, а чем они мешали?) 3. скомпилить и запустить После этого всего у меня опять "недостаточно памяти". Что-то не так сделал? |
| Автор: CodeMonkey 11.1.2009, 21:10 |
| Про dpr файл забыли. Там тоже есть. Добавлено через 3 минуты и 51 секунду Я не посмотрел, но в этих модулях вписываются настройки проекта, в том числе - размер стека для главного потока программы. Дабы не гадать, допустимое там значение или нет - на всякий пожарный мы их удаляем. |
| Автор: Newo 11.1.2009, 21:14 | ||
Дааа!!))) Ура, спасибо))) Почему же тогда, это прекрасно работало в XP?))) По поводу перехода на d2009: по количеству варнингов, ая сразу понял, что точно намудрил со строками, но с этим уж я разберусь)) Еще раз спасибо!)) |
| Автор: CodeMonkey 11.1.2009, 21:18 |
Я не знаю. Может быть, XP вам просто прощала. Но это - явная и причём грубая ошибка. |
| Автор: Newo 11.1.2009, 21:22 | ||
И именно поэтому я на нее не обращал внимания в Висте)) |