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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2011, 01:19   #1
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию програмно вызвать brcc.exe, то не собирает ресурсы!

Всем привет! собственно сабж=)

Програмно пишу файл RC, далее запускаю борландовский brcc
Код:
procedure ShellExecuteAndWait(FileName, aRunRarams: string; ShowMode: Cardinal);
var
  exInfo: TShellExecuteInfo;
  Ph: DWORD;
begin
  FillChar(exInfo, SizeOf(exInfo), 0);
  with exInfo do
  begin
    cbSize := SizeOf(exInfo);
    fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_FLAG_DDEWAIT;
    Wnd := GetActiveWindow();
    exInfo.lpVerb := 'open';
    lpFile := PWideChar(FileName);
    lpParameters := PWideChar(aRunRarams);
    nShow := ShowMode;
  end;
  if ShellExecuteEx(@exInfo) then
  begin
    Ph := exInfo.HProcess;
  end
  else
  begin
    ShowMessage(SysErrorMessage(GetLastError));
    Exit;
  end;
  while WaitForSingleObject(exInfo.HProcess, 50) <> WAIT_OBJECT_0 do
    Application.ProcessMessages;
  CloseHandle(Ph);
end;

....
    ShellExecuteAndWait(myDir + 'Data\Compiler\BRCC.exe',
      myDir + 'Data\Compiler\InDATA.rc -foInDATA', SW_HIDE);
{   myDir - ExtractFilePath(ParamStr(0))  }
Но файлик RES е появляется....

А если обычный батник:
Цитата:
brcс.exe InDATA.rc -foInDATA
то RES файл успешно появляется...
Человек_Борща вне форума Ответить с цитированием
Старый 28.05.2011, 01:29   #2
Zeron
Пользователь
 
Регистрация: 11.06.2010
Сообщений: 15
По умолчанию

по моему этот файл называется brcc32.exe, а не просто brcc.exe
Zeron вне форума Ответить с цитированием
Старый 28.05.2011, 01:31   #3
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

у меня он вообще brc.exe называется(вытащил и переименовал). В прочем решения проблемы в вашем сообщении я не вижу...

Последний раз редактировалось Человек_Борща; 28.05.2011 в 01:37.
Человек_Борща вне форума Ответить с цитированием
Старый 28.05.2011, 02:36   #4
maxionans
Форумчанин
 
Аватар для maxionans
 
Регистрация: 02.01.2010
Сообщений: 254
По умолчанию

а myDir точно заканчивается символом '\'?
maxionans вне форума Ответить с цитированием
Старый 28.05.2011, 03:12   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Да, заканчивается символом '\'.
Человек_Борща вне форума Ответить с цитированием
Старый 28.05.2011, 09:31   #6
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

А кавычки где?
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 28.05.2011, 11:21   #7
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

нус блин вообще непонимаю.

Я вытащил компилятор ресурсов из Delphi XE пакета.

Какие файлы кроме brcc32.exe ещё нужны?

Уже все перепробовал. И winExec и ShellExecute и CreateProcess там же и параметры и с кавычками и без них и указывал -fo (File Output). Ничего не помогает!
Хатя простой батник успешно собирает!
Человек_Борща вне форума Ответить с цитированием
Старый 28.05.2011, 11:32   #8
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Ты всё в кучу не мешай, а делай по шагам.

1). Сначала добейся работы brcc32, запускаемого из папки bin Delphi.
2). Затем вытаскивай его отдельно (кстати, это пиратство).

1 раскладывается на проверку основных частей так:
а). Кавычки.
б). Текущий каталог.
в). Код возврата.
г). (опционально) вывод сообщений об ошибках (можно применять только при диагностике провала пункта "в").

Я уже сейчас вижу, что программно ты собираешь не так, как в bat-нике: у тебя отличаются пути и текущая папка.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 29.05.2011, 17:34   #9
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Эхх а проблема просто решалась....
Код:
procedure ShellExecuteAndWait(FileName, aRunRarams: string; ShowMode: Cardinal);
var
  exInfo: TShellExecuteInfo;
  Ph: DWORD;
begin
  FillChar(exInfo, SizeOf(exInfo), 0);
  with exInfo do
  begin
    cbSize := SizeOf(exInfo);
    fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_FLAG_DDEWAIT;
    Wnd := GetActiveWindow();
    exInfo.lpVerb := 'open';
    lpFile := PWideChar(FileName);
    lpParameters := PWideChar(aRunRarams);
    lpDirectory:=PWideChar(ExtractFilePath(FileName));
    nShow := ShowMode;
  end;
  if ShellExecuteEx(@exInfo) then
  begin
    Ph := exInfo.HProcess;
  end
  else
  begin
    ShowMessage(SysErrorMessage(GetLastError));
    Exit;
  end;
  while WaitForSingleObject(exInfo.HProcess, 50) <> WAIT_OBJECT_0 do
    Application.ProcessMessages;
  CloseHandle(Ph);
end;
Человек_Борща вне форума Ответить с цитированием
Старый 30.05.2011, 02:10   #10
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Иными словами, дело было в относительных путях (считаются относительно текущего каталога).
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
cmd.exe и занимает почти все ресурсы процессора Gorychev Windows 11 06.12.2013 07:31
програмно загруз веб страницу вставить текст и програмно нажать кнопку. asdn Общие вопросы .NET 0 05.10.2010 13:40
Запись в ресурсы собственного exe? Человек_Борща Общие вопросы Delphi 3 02.08.2010 15:19
Ресурсы. Как запихать .bmp в приложение .exe? КСВ Мультимедиа в Delphi 6 24.10.2009 06:25
по нажатию на кнопку вызвать другой фаил с расширением exe который находится в той же папке 1234 Общие вопросы Delphi 3 05.08.2008 12:32