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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.10.2013, 16:47   #11
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
i:=1;
ExecAndWait('cmd /c png2pnm C:\GOCR\'+inttostr(i)+'.png C:\GOCR\'+inttostr(i)+'.pnm','',SW_SHOWNORMAL);
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.11.2013, 08:08   #12
ivt22
Пользователь
 
Регистрация: 23.07.2013
Сообщений: 81
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Код:
i:=1;
ExecAndWait('cmd /c png2pnm C:\GOCR\'+inttostr(i)+'.png C:\GOCR\'+inttostr(i)+'.pnm','',SW_SHOWNORMAL);
Не рабочий код, уже много раз пробовал, вообще ничего не происходит...
ivt22 вне форума Ответить с цитированием
Старый 01.11.2013, 08:26   #13
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

во-первых, выполните перед ExecAndWait...
процедуру ChDir:
Код:
  ChDir('C:\GOCR');
  i:=1;
  ExecAndWait(.....
во-вторых, если png2pnm - это EXE файл, то зачем Вам cmd /c в команде?!
пробуйте указать прямо
Код:
ExecAndWait('png2pnm.exe', 'C:\GOCR\'+inttostr(i)+'.png C:\GOCR\'+inttostr(i)+'.pnm',SW_SHOWNORMAL);
в-третьих, процедура CreateProcess возвращает код выполнения операции. Более того, ваша ФУНКЦИЯ
Цитата:
Код:
function ExecAndWait(const FileName,
                     Params: ShortString; const WinState: Word): boolean; export;
возвращает Вам этот код. Почему Вы не хотите его запомнить в переменную и посмотреть, что же Вам вернул - CreateProcess - вообще не понятно? Вы пытаетесь угадать, почему Ваш код не работает?! Отлаживать не пробовали?!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 01.11.2013, 08:28   #14
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Ну а полній путь для png2pnm? Такие варианты
Код:
ExecAndWait('cmd /c C:\GOCR\png2pnm C:\GOCR\1.png C:\GOCR\1.pnm','',SW_SHOWNORMAL);
ExecAndWait('cmd','/c C:\GOCR\png2pnm C:\GOCR\1.png C:\GOCR\1.pnm',SW_SHOWNORMAL);
Или принудительно рабочий каталог перед обращением сделать C:\GOCR
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 01.11.2013, 08:32   #15
ivt22
Пользователь
 
Регистрация: 23.07.2013
Сообщений: 81
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Ну а полній путь для png2pnm? Такие варианты
Код:
ExecAndWait('cmd /c C:\GOCR\png2pnm C:\GOCR\1.png C:\GOCR\1.pnm','',SW_SHOWNORMAL);
ExecAndWait('cmd','/c C:\GOCR\png2pnm C:\GOCR\1.png C:\GOCR\1.pnm',SW_SHOWNORMAL);
Или принудительно рабочий каталог перед обращением сделать C:\GOCR
png2pnm это командный файл, он запускается через командную строку с некими параметрами, путь до него у меня описан в переменной окружения, поэтому WinExec(........) у меня работало и без указания полного пути, попробую конечно по вашим советам сейчас сделать..

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

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
в-третьих, процедура CreateProcess возвращает код выполнения операции. Более того, ваша ФУНКЦИЯ
возвращает Вам этот код. Почему Вы не хотите его запомнить в переменную и посмотреть, что же Вам вернул - CreateProcess - вообще не понятно? Вы пытаетесь угадать, почему Ваш код не работает?! Отлаживать не пробовали?!
дело в том, что я очень слаб в программировании, я даже не знаю в переменную какого типа надо записывать код ошибки и что мне это даст, поэтому и не отлаживаю,

Последний раз редактировалось Stilet; 01.11.2013 в 09:22.
ivt22 вне форума Ответить с цитированием
Старый 01.11.2013, 09:03   #16
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от ivt22 Посмотреть сообщение
Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
у вас в папке C:\GOCR\ лежит файл с именем png2pnm.
Какое расширение у этого файла? (что это - командный файл, exe-шник или что-то другое?)
вообще там написано png2pnm.exe Но я его всегда этой командой запускаю,
по другому просто нельзя, нужно ему параметры передавать.

Цитата:
Сообщение от ivt22 Посмотреть сообщение
png2pnm это командный файл, он запускается через командную строку с некими параметрами
ну вот, то он у Вас EXE, то командный файл...
Вы разницу в этих типах не видите/не понимаете?..

Цитата:
дело в том, что я очень слаб в программировании, я даже не знаю в переменную какого типа надо записывать код ошибки и что мне это даст, поэтому и не отлаживаю
сочувствую... реально. Когда пытаешься сделать что в области, где не являешься профи, это тяжко...
Ну, я, кроме советов, не знаю, чем Вам можно помочь... разве что, выложите архив с папкой C:\GOCR\ + исходники проекта. Возможно, тогда возможна и более конструктивная помощь.
А пока - Вам придётся разбираться и отлаживать самостоятельно..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 01.11.2013, 09:08   #17
ivt22
Пользователь
 
Регистрация: 23.07.2013
Сообщений: 81
По умолчанию

Вот прикрепил архив с прогой. Просто вы спрашивали exe ли это файл, да он называется png2pnm.exe, но запускается он только из командной строки с параметрами переданными ему. Назначение этой проги переводить файлы из формата .PNG в .PNM других функций нет, вот мне у и нужно дождаться пока прога сделает .PMM файл, а дальше уже работать с ним.

Вот исходник функции которую нужно заставить правильно работать
Попробовал с помощью меток зациклить программу, до момента создания последнего файла, не работает такой метод..

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
i,z: integer;
a,b: ansistring;
s: string;
F: textfile;
players: array[1..6] of integer;


Label met, met1;//метка

begin
  z:=1;
  i:=1;
  flag1 := false;

  WinExec(PAnsiChar('cmd /c cd C:\GOCR\'), SW_HIDE); //переходим в директорию C:\GOCR

  // Переводим все в PNM
  while i <> 7 do begin
    b:='cmd /c png2pnm C:\GOCR\'+ IntToStr(i) +'.png C:\GOCR\'+IntToStr(i)+'.pnm';
    WinExec(PAnsiChar(b), SW_HIDE);
   i:=i+1;
  end;
  //

  //Ждем создание последнего файла и распознаем
  met:
    if  fileexists('C:\GOCR\6.png') = false then goto met // Это не помогает!!!
  else begin
 
    while z<>7 do begin
      a:='cmd /c gocr -i C:\GOCR\'+IntToStr(z)+'.PNM -c >C:\GOCR\'+IntToStr(z)+'.txt';
      WinExec(PAnsiChar(a), SW_HIDE);
      z:=z+1;
    end;
  end;
  //

  met1:
    if  fileexists ('C:\GOCR\6.txt') = false then goto met1
  else
  //Записываем стэки игроков в массив
  for i := 1 to 6 do begin

   memo1.Lines.LoadFromFile('C:\GOCR\'+IntToStr(i)+'.txt');
   s := Memo1.Lines.Strings[0];
   players[i] := RedStek(s);
   RichEdit1.Lines.Strings[i] := IntToStr(players[i]);
   memo1.Clear;

  end;     }
  //

  for i := 1 to 6 do begin
    DeleteFile ('C:\GOCR\'+IntToStr(i)+'.png');
    DeleteFile ('C:\GOCR\'+IntToStr(i)+'.pnm');
    DeleteFile ('C:\GOCR\'+IntToStr(i)+'.txt');
  end;

end; 

function TForm1.RedStek(s: string): integer;
var i: integer;
begin

  s:=StringReplace(s,',','',[rfReplaceAll]);
  s:=StringReplace(s,' ','',[rfReplaceAll]);
  s:=StringReplace(s,'O','0',[rfReplaceAll]);
  s:=StringReplace(s,'o','0',[rfReplaceAll]);

end;
Вложения
Тип файла: rar png2pnm.rar (190.5 Кб, 7 просмотров)

Последний раз редактировалось Stilet; 01.11.2013 в 09:23.
ivt22 вне форума Ответить с цитированием
Старый 01.11.2013, 09:43   #18
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Так работает
Цитата:
ExecAndWait('C:\GOCR\png2pnm.exe',' C:\GOCR\1.png C:\GOCR\1.pnm',SW_SHOWNORMAL);
Серж еще в #13 предлагал, почему не попробовать?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 01.11.2013, 09:48   #19
ivt22
Пользователь
 
Регистрация: 23.07.2013
Сообщений: 81
По умолчанию

Олень потомучто. Спасибо огромное, сейчас буду экспериментировать
ivt22 вне форума Ответить с цитированием
Старый 01.11.2013, 09:51   #20
ivt22
Пользователь
 
Регистрация: 23.07.2013
Сообщений: 81
По умолчанию

Да есть же сработало!!!!!!!!!!!!!!
ivt22 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дождаться завершения другой программы в консоле delphi SawaMEN Общие вопросы Delphi 4 09.09.2013 14:26
ожидание завершения работы макроса -Anton- Microsoft Office Excel 15 18.06.2011 18:17
Как дождаться завершения запущенного приложения DennerV Win Api 5 13.08.2010 13:48
Как дождаться завершения процедуры? Hintman Win Api 6 14.10.2009 14:46
Перехват завершения работы ОС vynt Win Api 7 19.05.2008 08:59