IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

> запуск bat файла
Георгий
сообщение 28.01.2009 13:59
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 36
Пол: Мужской
Реальное имя: Георгий

Репутация: -  0  +


smile.gif пт volvo, думаю ты знаешь.
вобщем сделал пргу которая должна запускать bat-ник (он запускает паскаль, думаю ты помнишь), текст в батнике :

@echo off
TPC.exe -b start.pas > nul
del c:\tp7\bin\usesone.tpu
start.exe



текст запуска батника в делфи:


procedure TForm1.Button1Click(Sender: TObject);
var cmdline:string;
si: STARTUPINFO;
pi: PROCESS_INFORMATION;

begin
ZeroMemory(@si,sizeof(si));
si.cb:=SizeOf(si);
cmdline:='c:\tp7\bin\run2';
if not CreateProcess( nil,
PChar(cmdline),
nil,
nil,
False,
0,
nil,
nil,
si,
pi )
then
begin
Exit;
end;
WaitForSingleObject( pi.hProcess, INFINITE );
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
end;



bat файл он запускает но вылазит ошибка "TPC.exe" не является внешней командой и все, хотя когда открываешь bat файл просто в винде все работает smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 28.01.2009 17:30
Сообщение #2


Гость






Цитата
еще есть C:\tp7\UNITS\ там куча TPU не знаю зачем они там
Тебе все это напрочь не надо - оставь только вот эти файлы в рабочей папке (допустим, в C:\TP):

BMP_PLUS.TPU
GRAPH.TPU
EGAVGA.BGI
run2.bat
START.PAS
TPC.EXE
TURBO.TPL
usesone.PAS
USESTWO.TPU

Все остальные можешь убирать, для того, чтобы откомпилировать твой проект, они не нужны.

+

Измени BAT на такой:
@echo off
TPC.exe -B -U.. start.pas > nul
del usesone.tpu
start.exe

, и вызывай

procedure RunAndWait(command: string);
var
si: STARTUPINFO;
pi: PROCESS_INFORMATION;
begin
ZeroMemory(@si, sizeof(si));
si.cb := SizeOf(si);

if not CreateProcess(nil, PChar('"' + command + '"'), nil, nil,
False, NORMAL_PRIORITY_CLASS, // <--- Внимание, БЕЗ Create_NO_WINDOW !!!
nil, PChar(ExtractFilePath(command)), si, pi)
then begin
ShowMessage('Error process creation'); Exit;
end;
WaitForSingleObject(pi.hProcess, INFINITE);
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
RunAndWait('C:\TP\run2.bat');
end;

. Только что проверил - все прекрасно работает.

Но я еще подкорректировал сам файл START.PAS - никогда не привязывайся к абсолютным путям, третий параметр в InitGraph сделай пустой строкой, тогда EGAVGA.BGI будет искаться в текущей папке, и все заведется как надо...
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 27.07.2025 7:44
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"