| 
| 
 | Вопрос # 1 916/ вопрос открыт / | 
 |  Здравствуйте уважаемые экперты!Возник вопрос :
 Необходимо запустить программу с Delphi, использовал ShellAPI (ShelExecute), все работает. Однако! Если я за место прямого пути типа (C:\DIR), то все работает. Если же я пытаюсь перевести из string в PAnsiChar с помощью функции SttPCopy, вроде все работает, но после исполнения кода, вылетает ошибка EAccessViolation...
 Приложение:Переключить в обычный режим b:PAnsiChar;...b:=StrPCopy(b,OpenDialog1.FileName);            ShellExecute(Handle,'open',b,nil,nil,SW_SHOWNORMAL);
|  |   Вопрос задал: WHILL (статус: Посетитель)Вопрос отправлен: 19 сентября 2008, 13:40
 Состояние вопроса: открыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: Вадим К Здравствуйте, WHILL!Не удивительно, что ругается. Вполне мог вообще не работать или вылетать с синим экраном.
 Дело в том, что копируя в переменную b строку, Вы не выделяете под неё память. И куда оно скопируется - непонятно. Всё дело случая.
 Но зачем мучиться, если можно написать так
 
 ShellExecute(Handle,'open',PAnsiChar(OpenDialog1.filename),nil,nil,SW_SHOWNORMAL);и никаких утечек, всё компилятор сам сделает? 
|  | Ответ отправил: Вадим К (статус: Академик)Время отправки: 19 сентября 2008, 14:01
 Оценка за ответ: 5
 Комментарий к оценке: Огромное Вам спасибо, Вадим! +5 :) |  
 Мини-форум вопросаМини-форум пуст. Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |