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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.10.2013, 11:12   #1
ivt22
Пользователь
 
Регистрация: 23.07.2013
Сообщений: 81
По умолчанию Не получается пользоваться командной строкой

Цитата:
i:=1;

WinExec(PAnsiChar('cmd /c png2pnm C:\GOCR\bot\1.png C:\GOCR\bot\1.pnm'), SW_HIDE); // Рабочий код

WinExec(PAnsiChar(cmd /c png2pnm C:\GOCR\bot\'+ IntToStr(i) +'.png C:\GOCR\bot\'+IntToStr(i)+'.pnm'), SW_HIDE); // нерабочий код
Подскажите плз. Первой строчкой у меня получается отправить в командную строку команду и все работает, но мне нужно 1.png и 1.pnm
каждый раз менять цифру в имени файла
Я набираю IntToStr(i); и ничего не работает, я скидывал получившуюся строку в Memo1.text и сравнивал с первым вариантом разницы нет, но одно работает, а другое нет(( Почему?
ivt22 вне форума Ответить с цитированием
Старый 23.10.2013, 11:19   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Может таки есть разница? Если в ручную запустить результат из второй строки, то что?

И я бы вместо WinExec (тем более оно deprecated) использовал ShellExecute или CreateProcess.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 23.10.2013, 11:34   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
или CreateProcess.
Поддерживаю.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.10.2013, 11:43   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

вот, когда я вижу такие посты, я сразу понимаю, что автор хочет что-то утаить.
Как он считает - что-то такое, что нам знать не обязательно..

Цитата:
Код:
WinExec(PAnsiChar(cmd /c png2pnm C:\GOCR\bot\'
этот код банально НЕ ОТКОМПИЛИРУЕТСЯ!
Нет открывающего апострофа перед cmd

это раз. а во-вторых.
напишите так:
Код:
var s : string;
   i : integer;
begin
  Memo1.Lines.Clear;
  s := 'cmd /c png2pnm C:\GOCR\bot\1.png C:\GOCR\bot\1.pnm';
  Memo1.Lines.Add('строка 1 = ' + s);
  WinExec(PAnsiChar(s), SW_HIDE);  
  i := 1;
  s := 'cmd /c C:\GOCR\bot\'+ IntToStr(i) +'.png C:\GOCR\bot\'+IntToStr(i)+'.pnm';
  Memo1.Lines.Add('строка 2 = ' + s);
  WinExec(PAnsiChar(s), SW_HIDE);  
  Memo1.Lines.SaveToFile('MyDebug.txt');
end;
файл MyDebug.txt запакуйте и выложите на форум архив. Будет повод для разговора.
ну и что значит "и ничего не работает". Может работает, а вы этого не видите?!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.10.2013, 12:02   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Цитата:
вот, когда я вижу такие посты, я сразу понимаю, что автор хочет что-то утаить.
Ну так судя по названию GOCR и bot автор скорее всего распознает капчи, так что вероятно занимается спамом/накруткой голосов или чем-то подобным неблаговидным, вот и боится "спалиться" и скрывает все подряд.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 23.10.2013 в 12:04.
Alex11223 вне форума Ответить с цитированием
Старый 23.10.2013, 12:51   #6
ivt22
Пользователь
 
Регистрация: 23.07.2013
Сообщений: 81
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
вот, когда я вижу такие посты, я сразу понимаю, что автор хочет что-то утаить.
Как он считает - что-то такое, что нам знать не обязательно..


этот код банально НЕ ОТКОМПИЛИРУЕТСЯ!
Нет открывающего апострофа перед cmd

это раз. а во-вторых.
напишите так:
Код:
var s : string;
   i : integer;
begin
  Memo1.Lines.Clear;
  s := 'cmd /c png2pnm C:\GOCR\bot\1.png C:\GOCR\bot\1.pnm';
  Memo1.Lines.Add('строка 1 = ' + s);
  WinExec(PAnsiChar(s), SW_HIDE);  
  i := 1;
  s := 'cmd /c C:\GOCR\bot\'+ IntToStr(i) +'.png C:\GOCR\bot\'+IntToStr(i)+'.pnm';
  Memo1.Lines.Add('строка 2 = ' + s);
  WinExec(PAnsiChar(s), SW_HIDE);  
  Memo1.Lines.SaveToFile('MyDebug.txt');
end;
файл MyDebug.txt запакуйте и выложите на форум архив. Будет повод для разговора.
ну и что значит "и ничего не работает". Может работает, а вы этого не видите?!
Не распознаванием капчи я не занимаюсь, это слишком трудоемко и обычными средствами стандартной GOCR не обойдешься. Если кому интересно я могу сказать чем я занимаюсь. Мне необходимо из покерного клиента считать информацию, чтобы в прямом эфире определить прибыльность моего хода, пока это можно сделать только после игры и разобрать свои ошибки, а я хочу их не совершать. Понимаю это тоже не совсем правильно и запрещено, но я просто не хотел обижать форумчан, а апостраф перед cmd я видимо забыл скопировать, на самом деле там все нормально - код компилируется, я делал так как ты просил, все сохранял в файл разницы между строками нет. Видимо проблема в том, что там строка AnsiString а я вставляю строчку IntToStr(i) может быть происходит какой-то не формат. P.S. И я точно знаю, что не работает вторая строка т.к. При первой строке при выполнении программы png2pnm появляется файл 1.PNM а при вызове второй строчки ничего не появляется, значит строчка не сработала)
ivt22 вне форума Ответить с цитированием
Старый 23.10.2013, 12:58   #7
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Запустите вторую строку (ее результат) из консоли руками. GOCR этот никаких ошибок не пишет?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 23.10.2013, 13:28   #8
ivt22
Пользователь
 
Регистрация: 23.07.2013
Сообщений: 81
По умолчанию

вот так написал все получилось... Блин да что за фигня...
Цитата:
for i := 1 to 5 do begin
b:='cmd /c png2pnm C:\GOCR\bot\'+ IntToStr(i) +'.png C:\GOCR\bot\'+IntToStr(i)+'.pnm';
WinExec(PAnsiChar(b), SW_HIDE);
end;
ivt22 вне форума Ответить с цитированием
Старый 23.10.2013, 13:34   #9
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,926
По умолчанию

Цитата:
вот так написал
А с чего вообще было решено использовать тип PAnsiChar? Почему не PChar?
northener вне форума Ответить с цитированием
Старый 23.10.2013, 14:01   #10
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

С того, что дельфи не древняя и PChar в ней не PAnsiChar, a PWideChar? А WinExec хочет PAnsiChar (в отличии от ShellExecute и CreateProcess, которые и рекомендуется использовать).
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 23.10.2013 в 14:05.
Alex11223 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с командной строкой Эльвира 4947 Помощь студентам 0 13.10.2013 17:04
Не совместимость с командной строкой bambarbia Visual C++ 2 28.12.2012 09:33
Проблема с командной строкой Skydream Общие вопросы C/C++ 23 15.08.2009 18:54
Помогите С командной строкой manax Помощь студентам 6 08.11.2008 18:03
Работа с командной строкой lyryks Помощь студентам 2 16.11.2007 13:06