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

> ВНИМАНИЕ!

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

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> запуск bat файла
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






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, CREATE_NO_WINDOW or NORMAL_PRIORITY_CLASS,
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('F:\Test\run2.bat');
end;

Это работает, если в BAT-файле все правильно, и прописаны верные пути. У тебя там творится какой-то бардак, если нужна помощь - говори, что в какой папке находится, где usesone.pas, где usestwo.pas, где graph.tpu и так далее, все tpu-файлы. И где находятся сами файлы tpc.exe и run2.bat ...

Цитата
хотя когда открываешь bat файл просто в винде все работает
Это тебе кажется... Попробуй удалить usesone.tpu и запустить BAT, увидишь, как оно "работает"...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

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


А как там с рабочей папкой? В какой папке находится батник, в какой программа, вызывающая батник, в какой тэпэце?


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Новичок
*

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

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


smile.gif нажимаю на button и повисает, ну вот что где находится:

C:\tp7\BIN\start.pas
C:\tp7\BIN\usesone.tpu
C:\tp7\BIN\BMP_PLUS.TPU
C:\tp7\BIN\CRT.TPU
C:\tp7\BIN\GRAPH.TPU
C:\tp7\BIN\run.bat
C:\tp7\BIN\START.EXE
C:\tp7\BIN\START.PAS
C:\tp7\BIN\TPC.EXE
C:\tp7\BIN\USESONE.PAS
C:\tp7\BIN\USESTWO.TPU
C:\tp7\BIN\USESA.TPU

еще есть C:\tp7\UNITS\ там куча TPU не знаю зачем они там типа дистриба шоли, но без этой папки все работает smile.gif

вот архив там весь паскаль и программ сама, там 2 файлика ("ввести график.exe" и "пострить график")
"ввести график.exe"
сюда вводится график, с нажатием в ней "построить график" изменяется ф-ия и после должен запускаться "C:\tp7\BIN\run.bat" там в корне лежит ярлык к нему для удобства сейчас.
ссылка на программу http://webfile.ru/2592456

кстате строит графики неявно выраженых ф-ий с очень большой скоростью, в инете таких прог не видел поэтому и написал ее, придумал оч сложный алгоритм smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Цитата
еще есть 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 будет искаться в текущей папке, и все заведется как надо...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

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

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


да деткааа, все работает!

спс volvo за огромную помощь в проекте! напишу в COPYRIGH про ваш портал словечко good.gif good.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 7.05.2024 18:13
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name