Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.09.2011, 20:38   #1
hacker_007
Пользователь
 
Регистрация: 18.09.2011
Сообщений: 17
Злость Как правильно поставить условие?

Сделал для бота функцию для управления компом через консоль, задумка была такая: отсылаешь ему команду, например !cmd start write.exe, и на компе открывается write.exe, но вот встал вопрос, как правильно написать условие, если оставить как есть:
Код:
if Msg = '!cmd' then
begin
Msg := StringReplace(Msg, '!cmd', '',[rfReplaceAll, rfIgnoreCase]);
ShellExecute(0,'open','cmd.exe','/k' + Msg + ','C:\Windows\system32\',SW_SHOW);
end
else
то от него толку нуль... Отправил !cmd start writen.exe он запустил write.exe отправил !cmd start ipconfig он вывел конфиг...

if Msg = '!cmd' then Если сообщение равно !cmd, то...
Если сделать так: if Msg = '!cmd start write.exe' then
То будет откликаться только на эту команду, а на другие, например: !cmd ipconfig он уже работать не будет...
Тык вот, как же правильно составить условие?

Последний раз редактировалось Stilet; 18.09.2011 в 20:49.
hacker_007 вне форума Ответить с цитированием
Старый 18.09.2011, 20:52   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
var s:TStringList;
begin
 s:=TStringList.Create;s.DelimitedText:=Команда;
 if s[0]= '!cmd' then begin
   if s[1]='start' then ShellExecute(0,'open',pchar(s[2]),'C:\Windows\system32\',SW_SHOW);
   if s[1]='stop'  then Завершаем процесс с именем s[3]
 end else ...
...
s.free;
end;
Ферштейн, студенте?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.09.2011, 21:06   #3
hacker_007
Пользователь
 
Регистрация: 18.09.2011
Сообщений: 17
По умолчанию

ферштейне.... но не пашет...

Код:
procedure TForm1.ICQClient1MessageRecv(Sender: TObject; Msg, UIN: String);
var 
s:TStringList;
msge: string;
begin
Msge := StringReplace(Msg, '!cmd', '',[rfReplaceAll, rfIgnoreCase]);
s := TStringList.Create;s.DelimitedText:=Msge;
if s[0]= '!cmd' then begin
if s[1]='start' then ShellExecute(0,'open','cmd.exe','/k' + pchar(s[2]) + ','C:\Windows\system32\',SW_SHOW);
if s[1]='stop'  then
end
else
s.free;
end;
Может я туплю?
Код:
ShellExecute(0,'open','cmd.exe','/k' + pchar(s[2]) + ','C:\Windows\system32\',SW_SHOW);
эта часть его не устраивает...

Код:
[Error] Unit1.pas(88): Undeclared identifier: 'ShellExecute'
[Error] Unit1.pas(88): Missing operator or semicolon
[Error] Unit1.pas(88): '.' expected but identifier 'system32' found
[Error] Unit1.pas(89): Missing operator or semicolon
[Error] Unit1.pas(135): Statement expected but 'PROCEDURE' found
[Fatal Error] Project2.dpr(5): Could not compile used unit 'Unit1.pas'

Последний раз редактировалось hacker_007; 18.09.2011 в 21:29.
hacker_007 вне форума Ответить с цитированием
Старый 18.09.2011, 21:30   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Undeclared identifier: 'ShellExecute'
Значит в uses не хватает модуля shellapi
Цитата:
else
s.free;
Одумайся, кстати... Или закончи код иначе гарантированы утечки памяти.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 18.09.2011, 21:30   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
ферштейне.... но не пашет...
А оно и не будет пахать, если вот так бездумно копипаст делать..
Человек_Борща вне форума Ответить с цитированием
Старый 18.09.2011, 21:30   #6
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,826
По умолчанию

Цитата:
ShellExecute не понимает?
может, модуль какой подключить надо в uses?
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 18.09.2011, 21:33   #7
hacker_007
Пользователь
 
Регистрация: 18.09.2011
Сообщений: 17
По умолчанию

Так, с этим разобрался... ошибка в той же строке


Код:
[Error] Unit1.pas(88): Incompatible types: 'Integer' and 'PAnsiChar'
hacker_007 вне форума Ответить с цитированием
Старый 18.09.2011, 22:04   #8
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,826
По умолчанию

Код:
 ','C:\
а может тут запятой нет после кавычки?
вот в этой строчке:
Код:
ShellExecute(0,'open','cmd.exe','/k' + pchar(s[2]) + ','C:\Windows\system32\',SW...
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 18.09.2011, 22:31   #9
hacker_007
Пользователь
 
Регистрация: 18.09.2011
Сообщений: 17
По умолчанию

там все норм... вот раб. состояние:
Код:
ShellExecute(0,'open','cmd.exe','/k start write.exe ','C:\Windows\system32\',SW_SHOW);
А в моём случае:
Код:
ShellExecute(0,'open','cmd.exe','/k' + pchar(s[2]) + ','C:\Windows\system32\',SW_SHOW);
Код:
[Error] Unit1.pas(88): Incompatible types: 'String' and 'PAnsiChar'
[Error] Unit1.pas(88): '.' expected but identifier 'system32' found
[Error] Unit1.pas(89): Missing operator or semicolon

Последний раз редактировалось hacker_007; 18.09.2011 в 22:39.
hacker_007 вне форума Ответить с цитированием
Старый 18.09.2011, 23:07   #10
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
[Error] Unit1.pas(88): Incompatible types: 'String' and 'PAnsiChar'
Несовместимые типы "Строка" и "PAnsiChar (указатель на Ansi-символ"

Цитата:
[Error] Unit1.pas(88): '.' expected but identifier 'system32' found
вместо точки обнаружен идентификатор "system32"

Цитата:
[Error] Unit1.pas(89): Missing operator or semicolon
пропущен оператор или точка с запятой
Вадим Мошев вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правильно поставить таймер ? sice Общие вопросы Delphi 5 27.01.2011 01:10
Счетчик mail.ru и как его мне правильно поставить misher HTML и CSS 4 05.01.2011 19:06
Как правильно поставить условиЕ. 89legend89 Microsoft Office Excel 5 07.10.2010 00:09
как правильно поставить условие ГОСЕАН Помощь студентам 5 27.04.2009 10:52
как правильно поставить тип данных? RedWolf Помощь студентам 4 29.12.2007 11:18