Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

не запускается скрипт [D7, XP, 2003]


Страницы:   1 2

cyberspy85 ©   (2009-09-14 22:44:00) 

Необходимо запустить скрипт с параметром (полное имя файла)
var
CurrentFilename, ScriptString: string;

//ArgMessages.js скрипт получающий в качестве параметра строку
//CurrentFilename
ScriptString:=  'Wscript.exe ArgMessages.js ' + CurrentFilename;
winexec(PAnsiChar(ScriptString), SW_SHOWNORMAL);
не хочет работать, а вот если в winexec указывать явно:
winexec('Wscript.exe ArgMessages.js Myfile.txt ', SW_SHOWNORMAL), то работает нормально.
Подскажите пожалуйста, что нужно сделать чтобы скрипт запускался а в качестве параметра принимал переменую с именем файла.


Anatoly Podgoretsky   (2009-09-16 11:39:00) [1]


> В общем все заработало на ура, помощи никакой не добился,
>  разобрался сам

Ну ну


Anatoly Podgoretsky   (2009-09-16 11:36:00) [2]

> cyberspy85  (15.09.2009 17:56:27)  [27]

Не воспринимается как wide, а воспринимается как UnicodeString


Anatoly Podgoretsky   (2009-09-16 11:36:00) [3]

> cyberspy85  (15.09.2009 17:56:27)  [27]

Потребовалось 27 сообщений, что бы определить, что запускается на Д2009


sniknik   (2009-09-16 09:10:00) [4]

> помощи никакой не добился
о какой помощи может быть речь если никто кроме тебя НЕ ЗНАЕТ реальной картины происходящего... твоими же усилиями. всех кто мог помочь ты "кормишь" байками на тему "все правильно делаю, а оно вот такое хреновое не хочет работать". а все попытки "свернуть тебя"  на выставление этой самой реальной картины на всеобщее обозрение тобой же отвергаются как "несущественные для вопроса".

тебе нужен форум телепатов... хотя, они могут не знать дельфи. :)


cyberspy85   (2009-09-16 07:46:00) [5]

В общем все заработало на ура, помощи никакой не добился, разобрался сам


TIF   (2009-09-16 06:01:00) [6]

> ну нет там RAD STUDIO и WIN 2008

Написать версию Delphi и Windows в тексте, не используя галочки, не сработала фантазия? Дописать это отдельным сообщением - тоже...

> Жаль , я не знал

Пора что-то менять в жизни. Юникод - самая главная грандиозная новинка в D2009. Пройти мимо этого - гм...
Имеет смысл срочно ознакомиться с описанием продукта, чтобы не столкнуться лбом о стену препятсвий, которые и не препятствия вовсе, а новые возможности :)

> Long string by default: False

%-\


cyberspy85   (2009-09-15 19:23:00) [7]

Удалено модератором
Примечание: Без наездов давай, ответы тебе нужны, а не нам.


sniknik   (2009-09-15 19:13:00) [8]

> запустил на делфи 7 все отлично работает, в RAD 2009 объявляю string а воспринимается как wide
теперь смотрим на вопрос
> не запускается скрипт [ D7, XP, 2003]
и кого должно телепатически "пробить", что написав D7 подразумевается RAD 2009?

а то что стринг в 2009 в связи с ее юникодностью уже и не стринг вовсе тут уже обсуждалось и знают про это многие.

в итоге вопрос - сплошные недомолвки, урезания инфы из ложной скром... желания сократить (смысл?) + как оказывается банальная лож.
хорошая почва для чудес.


cyberspy85   (2009-09-15 18:11:00) [9]

в опциях проекта  Compiling нужно переключить
Long string by default: False


clickmaker   (2009-09-15 17:57:00) [10]

> в RAD 2009 объявляю string а воспринимается как wide

ну да. там по дефолту так и должно быть


cyberspy85   (2009-09-15 17:56:00) [11]

запустил на делфи 7 все отлично работает, в RAD 2009 объявляю string а воспринимается как wide


cyberspy85   (2009-09-15 17:36:00) [12]


> она у тебя, что объявлена как вайдстринг? а здесь приведено
> другое, или получаешь/формируешь ее в таком виде хитрым
> индейским способом, и здесь это вообще не приведено, а потом
> чудеса и происходят...

string и никак иначе


sniknik   (2009-09-15 17:30:00) [13]

да, рассмотрим вариант
procedure TForm1.Button1Click(Sender: TObject);
var
ScriptString: string;
begin
 ScriptString:=  'Wscript.exe';
 winexec(PAnsiChar(ScriptString), SW_SHOWNORMAL);
end;
работает! и строка в CPU передается однобайтная.

она у тебя, что объявлена как вайдстринг? а здесь приведено другое, или получаешь/формируешь ее в таком виде хитрым индейским способом, и здесь это вообще не приведено, а потом чудеса и происходят...

в итоге
> описание ЧТО ты делаешь абсолютно бессмысленно без того КАК ты это делаешь.
+1
это и было "существо вопроса" в ветки, если кто не понял.


cyberspy85   (2009-09-15 16:47:00) [14]

По моему понял в чем проблема, посмотрим два варианта
Вариант 1. работает
winexec('Wscript.exe', SW_SHOWNORMAL);

код CPU
Unit1.pas.608: winexec('Wscript.exe', SW_SHOWNORMAL);
004C9240 6A01                 push $01
004C9242 683C944C00       push $004c943c  < указатель на строку
004C9247 E8CCFCF3FF       call WinExec         |
                                                              |
память<--------------------------------------
$004c943c  72637357   2E747069  Wscript.   < строка  из байтовых символов
$004c9444  00657865   8B575653  exe.SVW. <

Вариант 2. не работает
winexec(PAnsiChar(ScriptString), SW_SHOWNORMAL);

код CPU
Unit1.pas.608: winexec(PAnsiChar(ScriptString), SW_SHOWNORMAL);
004C9240 6A01              push $01
004C9242 8B45F0           mov eax,[ebp-$10]
004C9245 50                 push eax                < указатель на строку
004C9246 E8CDFCF3FF    call WinExec              |
                                                                |
память<--------------------------------------
004C9424  00730057  00720063  W.s.c.r.  < строка двухбайтовых символов
004C942С  00700069  002E0074  i.p.t...

короче говоря сформированную строку ScriptString надо преобразовать в
строку однобайтовых символов


Anatoly Podgoretsky   (2009-09-15 13:30:00) [15]


> Игорь Шевченко ©   (15.09.09 13:26) [21]

А я сейчас еще как обзовусь "а кода меньше" это для ленивых,

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


Anatoly Podgoretsky   (2009-09-15 13:26:00) [16]

> clickmaker  (15.09.2009 12:20:18)  [18]

Ну не ожидал я от тебя такого аргумента "в итоге createprocess вызовется", гораздо сильнее аргумент против, что "данная функция оставлена для совместимости с Win16"


Игорь Шевченко   (2009-09-15 13:26:00) [17]

Anatoly Podgoretsky ©   (15.09.09 10:31) [13]

Ну вот взял и обозвал.


Anatoly Podgoretsky   (2009-09-15 13:25:00) [18]

> cyberspy85  (15.09.2009 11:58:17)  [17]

> по существу вопроса будут предложения?

Существа нет.


Anatoly Podgoretsky   (2009-09-15 13:23:00) [19]

> cyberspy85  (15.09.2009 11:21:15)  [15]

> Кстати WinExec используть или ламеры, или новички, которые
> справку не читают из принципа.

Теперь не читаешь справку по ShellExecute


clickmaker   (2009-09-15 12:20:00) [20]

> Кстати WinExec используть или ламеры, или новички

а что тут ламерского?
все равно в итоге createprocess вызовется, а кода меньше, если нужно только запустить без всяких пайпов и т.п.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо