![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
не запускается скрипт [D7, XP, 2003]
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 вызовется, а кода меньше, если нужно только запустить без всяких пайпов и т.п.