Форум программистов, компьютерный форум, киберфорум
Delphi: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
5 / 22 / 1
Регистрация: 24.11.2015
Сообщений: 165

ShellExecute упаковка в WinXP выдаёт ошибку

12.01.2026, 07:50. Показов 1133. Ответов 42
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Столкнулся с такой проблемой по ShellExecute : распаковка файла rar работает всюду
Delphi
1
2
3
4
S_N:=S_NameFileFIGURE+'.rar';
a := Pchar(ExtractFilePath(ParamStr(0))+'RaskFigMem\'+S_N);
b := Pchar(ExtractFilePath(ParamStr(0))+'RaskFigMem\');
ShellExecute(0, 'open', 'winrar.exe', pchar('e -y '+a+' '+b), nil, SW_show);
, но вот упаковка в WINXP не работает
Delphi
1
2
3
s_rar_Mask:=S_Mask+'.bmp';
b := Pchar(ExtractFilePath(ParamStr(0))+'RaskFigMem\'+s_rar_Mask);
   ShellExecute(0, 'open', 'WinRAR.exe', Pchar('a -r -ep1 '+a+' '+b), nil, SW_SHOW);
Знатоки, может кто то сталкивался с этим, поделитесь опытом
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
12.01.2026, 07:50
Ответы с готовыми решениями:

Программа которая выдает платформу компьютера выдает ошибку
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics,...

[ShellExecute в Delphi 2009] Где ошибка?
Доброго времени суток.Уже второй день бьюсь с проблемой ShellExecute в Delphi2009. Облазил весь...

Ошибка при запуске другой программы через ShellExecute
Доброго всем! если не трудно помогите, вот уже 2 дня голова болит из за ошибки. Делаю я отдельную...

42
Эксперт .NET
 Аватар для Rius
13131 / 7691 / 1677
Регистрация: 25.05.2015
Сообщений: 23,465
Записей в блоге: 14
12.01.2026, 08:09
У "не работает" есть какие-то сообщения или коды ошибок? Или просто "не работает"?
0
Модератор
 Аватар для D1973
9921 / 6457 / 2457
Регистрация: 21.01.2014
Сообщений: 27,406
Записей в блоге: 3
12.01.2026, 08:16
ShellExecute() - функция, которая возвращает какое-либо значение: если возвращаемое значение больше или равно 32, операция прошла успешно, в противном случае — это код ошибки Windows.
- Какое именно значение она возвращает в тот момент, когда "не работает"?
- Почему ShellExecute(), а не CreateProcess()?
0
Эксперт .NET
 Аватар для Rius
13131 / 7691 / 1677
Регистрация: 25.05.2015
Сообщений: 23,465
Записей в блоге: 14
12.01.2026, 08:23
Лицензия-то на winrar есть?
Если нет, используйте https://www.7-zip.org/
0
5 / 22 / 1
Регистрация: 24.11.2015
Сообщений: 165
12.01.2026, 08:27  [ТС]
Rius, Проверял в WinXP и Oracle VM VirtualBox
Миниатюры
ShellExecute упаковка в WinXP выдаёт ошибку  
0
Эксперт .NET
 Аватар для Rius
13131 / 7691 / 1677
Регистрация: 25.05.2015
Сообщений: 23,465
Записей в блоге: 14
12.01.2026, 08:29
Вы пытаетесь заархивировать файл, в данный момент открытый в CAD (SAPR)?
Закройте SAPR. Или выберите шаринг режим, если такой есть в winrar.
0
5 / 22 / 1
Регистрация: 24.11.2015
Сообщений: 165
12.01.2026, 08:30  [ТС]
D1973, Проверял в WinXP и Oracle VM VirtualBox. C CreateProcess() те же яйца, только всмятку.
Это вид ошибки в Oracle VM VirtualBox:
Миниатюры
ShellExecute упаковка в WinXP выдаёт ошибку  
0
Злостный нарушитель
 Аватар для Verevkin
10358 / 5773 / 1274
Регистрация: 12.03.2015
Сообщений: 26,685
12.01.2026, 08:39
А ты уверен, что ошибка доступа к памяти возникает при вызове ShellExecute(), а не где-то раньше [или позже]? У тебя там в кучу смешались указатели и delphi-строки. Сначала вычисли все значения параметров (во временных переменных), а потом подставляй их в функцию. Перед вызовом функции можешь вывести их куда-нить в лог и/или показать на экране.
0
Эксперт .NET
 Аватар для Rius
13131 / 7691 / 1677
Регистрация: 25.05.2015
Сообщений: 23,465
Записей в блоге: 14
12.01.2026, 08:47
Или посмотреть в отладчике пошагово.
0
Злостный нарушитель
 Аватар для Verevkin
10358 / 5773 / 1274
Регистрация: 12.03.2015
Сообщений: 26,685
12.01.2026, 08:51
Цитата Сообщение от Rius Посмотреть сообщение
Или посмотреть в отладчике пошагово.
Если кот написан в относительно новой IDE, то её не вкрячишь на WinXP. Для начала, всё ж, надо попробовать менее кровавые способы локализовать ошибку.
0
Злостный нарушитель
 Аватар для Verevkin
10358 / 5773 / 1274
Регистрация: 12.03.2015
Сообщений: 26,685
12.01.2026, 08:54
Цитата Сообщение от basil_cat Посмотреть сообщение
Проверял в WinXP и Oracle VM VirtualBox
Меня терзают смутные сомнения: чой-то окно с сообщением об ошибке выглядит, как в Windows 10?

0
Модератор
 Аватар для D1973
9921 / 6457 / 2457
Регистрация: 21.01.2014
Сообщений: 27,406
Записей в блоге: 3
12.01.2026, 08:58
Цитата Сообщение от basil_cat Посмотреть сообщение
Это вид ошибки в Oracle VM VirtualBox:
Я вообще не про это спрашивал, а про возвращаемое функцией ShellExecute значение, но вот, судя по скрину, до нее дело даже не доходит. Verevkin правильно Вам советует избавиться от конкатенации строк с указателями - запросто AV может быть из за этого.
0
5 / 22 / 1
Регистрация: 24.11.2015
Сообщений: 165
12.01.2026, 11:43  [ТС]
Verevkin,
Извините. Был обесточен район.
Нет, этот файл в данный момент архивирования не открыт в моём CAD (SAPR). Его можно удалять или изменять в этот момент, но воздействий на него нет. SAPR это система на моих исходных файлах. Система разработки управляющих программ на станки термической резки. Это ссылка на сам проект.

https://ru.files.fm/u/cwkekw8dd9 - система SAPR.
https://ru.files.fm/f/yyy774c797 - фото раскроя.

Скачать. Переименовать в SAPR.rar . Установить на диск C: в корень. Все файлы и папки должны быть в директории C:\SAPR

Запустить SAPR.EXE. Ответить ДА. Выбрать num14.bmp мышью, нажать Enter и ещё раз Enter. Загрузится это проект раскроя.
Уменьшение и увеличение на холсте колёсико мыши вверх, вниз или выделение лупой + или =.
Нажимайте ЗАПИСЬ в левом нижнем углу, ответьте ДА, введите новое имя БЕЗ расширения, например num14_1 ничего не трогайте. Происходит сохранение файлов проекта в директорию C:\SAPR\RaskFigMem\ или если установлен SAPR на диск E:/ то изменится папка на E:\SAPR\RaskFigMem\ . Действия в WIN10, WINВиста и WINXP одинаковые, требуется разрешение 1920х1080 и более, но запустится и при меньшем. Именно при упаковке сохраняемых файлов
NUM14_1.xlsx NUM14_1.bmp testNUM14_1_Chetchik.eb testNUM14_1.ebook KVKOLNUM14_1.txt StringGridNUM14_1.txt List_FigNUM14_1.txt в NUM14_1.rar в WINXP и вылетают эти ошибки.

Первое выглядит так в BOX, второе в чистом WINXP v3
Миниатюры
ShellExecute упаковка в WinXP выдаёт ошибку   ShellExecute упаковка в WinXP выдаёт ошибку  
0
5 / 22 / 1
Регистрация: 24.11.2015
Сообщений: 165
12.01.2026, 11:54  [ТС]
Verevkin, Тот же проект собран и в WINXP и тем же DELPHI 7. Результат тот же. Почему я и вышел на знатоков.

Добавлено через 2 минуты
Verevkin, "А ты уверен, что ошибка доступа к памяти возникает при вызове ShellExecute(), а не где-то раньше [или позже]? У тебя там в кучу смешались указатели и delphi-строки. Сначала вычисли все значения параметров (во временных переменных), а потом подставляй их в функцию. Перед вызовом функции можешь вывести их куда-нить в лог и/или показать на экране."

Ответь пожалуйста тогда на вопрос почему всё таки с указателями всё нормально работает в WIN10 и Висте и не работает в WINXP.

Добавлено через 2 минуты
D1973,
Ответь пожалуйста тогда на вопрос почему всё таки с оформленными так указателями всё нормально работает в WIN10 и Висте и не работает в WINXP.

Добавлено через 3 минуты
Rius, В Delphi 7 работу функции API ShellExecute не посмотришь.
0
Злостный нарушитель
 Аватар для Verevkin
10358 / 5773 / 1274
Регистрация: 12.03.2015
Сообщений: 26,685
12.01.2026, 11:56
Цитата Сообщение от basil_cat Посмотреть сообщение
Ответь пожалуйста тогда на вопрос почему всё таки с указателями всё нормально работает в WIN10 и Висте и не работает в WINXP.
Этот вопрос задавай на форуме телепатов. Здесь их нет, они все там тусуются.
Однако, это ошибка доступа к памяти. Сначала найди, где она возникает. Пока ты этого не сделаешь, будет больно.
0
5 / 22 / 1
Регистрация: 24.11.2015
Сообщений: 165
12.01.2026, 12:03  [ТС]
Rius, Пробовал, теже, только в профиль. Пробовал сторонние упаковщики, упаковывают даже в WIN10 только по одному файлу, но в WINXP также выдают ошибку именно на упаковке файлов в архив.
Я почему и обратился, когда исчезли идеи.

Добавлено через 2 минуты
В сущности, все уже работают на WIN10, 11 но обломала сама ситуация не доведенная до логического завершения. В прошлом вы мне много помогли в других темах, надеюсь решим вопрос вместе. Думаю он будет интересен и для других программистов системщиков.

Добавлено через 2 минуты
Verevkin, "Однако, это ошибка доступа к памяти. Сначала найди, где она возникает. Пока ты этого не сделаешь, будет больно."

Да это ясно что доступ к памяти, но как найти где?
Есть идеи?
Попробую ещё файл поковырять в ollydbg
Спасибо.
0
Эксперт .NET
 Аватар для Rius
13131 / 7691 / 1677
Регистрация: 25.05.2015
Сообщений: 23,465
Записей в блоге: 14
12.01.2026, 12:03
Работает на Windows 10 и не работает в Windows XP?
Может, не та версия функции WinAPI вызывается? Ansi/Wide, например.
0
Злостный нарушитель
 Аватар для Verevkin
10358 / 5773 / 1274
Регистрация: 12.03.2015
Сообщений: 26,685
12.01.2026, 12:07
Цитата Сообщение от basil_cat Посмотреть сообщение
Пробовал сторонние упаковщики, упаковывают даже в WIN10 только по одному файлу
Плохо пробовал. У меня 7zip прекрасно пакует дерево каталогов по маске.
Есть способ лучше - можно не вызывать внешний упаковщик, а воспользоваться каким-нить опенсорс-компонентом для работы с архивами.

Добавлено через 1 минуту
Цитата Сообщение от basil_cat Посмотреть сообщение
Да это ясно что доступ к памяти, но как найти где?
Есть идеи?
я ж выше написал.
Сделай тестовое приложение для отладки упаковки и если ошибка будет воспроизводиться, выложи его сюда, а мы поковыряем.
0
5 / 22 / 1
Регистрация: 24.11.2015
Сообщений: 165
12.01.2026, 12:07  [ТС]
Rius,
Вы имеете ввиду что вместо ShellExecute() вызвать по очереди эти
function ShellExecuteA;
function ShellExecuteW;x
function ShellExecuteEx;
function ShellExecuteExA;
function ShellExecuteExW;
???
0
Эксперт .NET
 Аватар для Rius
13131 / 7691 / 1677
Регистрация: 25.05.2015
Сообщений: 23,465
Записей в блоге: 14
12.01.2026, 12:08
По очереди попробовать, вдруг на одной будет везде работать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.01.2026, 12:08
Помогаю со студенческими работами здесь

Аналог функции ShellExecute
Вобщем мне нужна функция для запуска всевозможных файлов: картинок, экзех и проч. из дельфишной...

Invalid Typecast при использовании ShellExecute
В БД Access в столбике adress_M хранятся адреса файлов(ну просто строкой: Hi.txt....) хочу...

FindWindow не нашел окна, а ShellExecute возвращает ERROR_PATH_NOT_FOUND
Функция ShellExecute возвращает ERROR_PATH_NOT_FOUND(числовое значение - 2), хотя путь указан...

Как пользоваться функцией ShellExecute (Delphi 5-7)?
воопщем задание звучит так: составить програму и использовать ShellExecute для вывода нескольких...

ShellExecute
Добрый день!Помогите,пожалуйста,разобраться с такой проблемой. Использую функцию ShellExecute.При...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru