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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.07.2009, 20:17   #1
CraZZy RabbIt
Форумчанин
 
Регистрация: 16.02.2009
Сообщений: 172
По умолчанию Ошибки в фунции

нашел функцию в инете,но она совершенно отказывается работать...

Код:
function RunCGI 
 (Command:PChar;Data:TStrings):PChar;
var FS:TFileStream;
SI:TStartupInfo;
PI:TProcessInformation;
SL:TStringList;
Env:Pointer;
EnvStr:String;
begin
Result:=PChar (sNoErrorNoResult);
FS:=TFilestream.Create (ExtractFileDir 
 (ParamStr
(0))+'\temp.html',fmCreate);
try
FillChar (SI,SizeOf (SI),0);
SI.cb:=SizeOf (SI);
SI.dwFlags:=STARTF_USESTDHANDLES;
SI.hStdOutput:=FS.Handle;
SI.hStdInput:=GetStdHandle 
 (STD_INPUT_HANDLE);
SI.hStdError:=GetStdHandle 
 (STD_ERROR_HANDLE);
EnvStr:=FormEnv (Data);
if not CreateProcess
(Command,'',nil,nil,False,
 CREATE_NEW_PROCESS_GROUP
or DETACHED_PROCESS,Pointer 
 (EnvStr),PChar (ExtractFileDir
(ParamStr (0))),SI,PI) then
Result:=PChar (sCGIStartError) else
begin
if WaitForSingleObject 
 (PI.hThread,5000)=WAIT_FAILED then
begin
Result:=PChar (sTimeoutError);
exit;
end;
SL:=TStringList.Create;
try
FS.Position:=0;
SL.LoadFromStream (FS);
Result:=PChar (SL.Text);
finally
SL.Free;
end;
end;
finally
FS.Free;
if FileExists (ExtractFileDir 
 (ParamStr (0))+'\temp.html') then
DeleteFile (ExtractFileDir 
 (ParamStr (0))+'\temp.html');
end;
end;
источник http://www.citforum.ru/internet/webservers/webserver/
CraZZy RabbIt вне форума Ответить с цитированием
Старый 23.07.2009, 20:27   #2
Вавел из ГМТУ
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 896
По умолчанию

omg.. Если тебе нужна эта функция, то разбирайся.

Могу только сказать, что нету выражения "отказывается работать"...
Эта функция должна чтото делать и давать какието результаты своей работы. Вот по этим результатам работы и надо искать косяки.

А это возня с брекпоинтами, построчная проверка что и куда передаётся и т.д.

Задавать надо конкретные вопросы, а не вешать листинг и ждать экстрасенса.
Вавел из ГМТУ вне форума Ответить с цитированием
Старый 23.07.2009, 20:34   #3
CraZZy RabbIt
Форумчанин
 
Регистрация: 16.02.2009
Сообщений: 172
По умолчанию

конкретно фунция вешается на строчках

Result:=PChar (sNoErrorNoResult);
EnvStr:=FormEnv (Data);
Result:=PChar (sTimeoutError);
Result:=PChar (sCGIStartError)
Result:=PChar (sTimeoutError);

с ошибкой в духе

Undeclared identifier: 'sCGIStartError'
CraZZy RabbIt вне форума Ответить с цитированием
Старый 23.07.2009, 21:10   #4
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,455
По умолчанию

Попробуй так:

Код:
function RunCGI(Command:PChar;Data:TStringList):PChar;
var FS:TFileStream;
SI:TStartupInfo;
PI:TProcessInformation;
SL:TStringList;
Env:Pointer;
EnvStr:String;
begin
Result:= PcHar(GetLastError); // здесь используем обычные обработчики
FS:=TFilestream.Create (ExtractFileDir(ParamStr(0))+'temp.html',fmCreate);
try
FillChar (SI,SizeOf (SI),0);
SI.cb:=SizeOf (SI);
SI.dwFlags:=STARTF_USESTDHANDLES;
SI.hStdOutput:=FS.Handle;
SI.hStdInput:=GetStdHandle(STD_INPUT_HANDLE);
SI.hStdError:=GetStdHandle(STD_ERROR_HANDLE);
EnvStr:=FormEnv(data); // Data Указан был как TStrings а надо TStringList;
if not CreateProcess(Command,'',nil,nil,False,CREATE_NEW_PROCESS_GROUP
or DETACHED_PROCESS,Pointer (EnvStr), PChar(ExtractFileDir(ParamStr (0))),SI,PI)
then
Result:=PChar(GetLastError) // здесь используем обычные обработчики
else begin
if WaitForSingleObject(PI.hThread,5000)=WAIT_FAILED
then begin
Result:=PChar(GetLastError); // здесь используем обычные обработчики
exit; end;
SL:=TStringList.Create;
try
FS.Position:=0;
SL.LoadFromStream(FS);
Result:=PChar(SL.Text);
finally
SL.Free;
end;
end;
finally
FS.Free;
if FileExists (ExtractFileDir(ParamStr (0))+'\temp.html') then
DeleteFile (ExtractFileDir(ParamStr (0))+'\temp.html');
end;
end;
uberchel вне форума Ответить с цитированием
Старый 23.07.2009, 21:18   #5
Вавел из ГМТУ
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 896
По умолчанию

Цитата:
Сообщение от CraZZy RabbIt Посмотреть сообщение

с ошибкой в духе

Undeclared identifier: 'sCGIStartError'
Ну вот... компилятор сказал что он не знает что такое "sCGIStartError"..
Ему надо поянить что это.

Хотя я, например, незнаю что это.. Скорее всего это какието константы.
И неплохобы перепроверить раздел Uses....
Вавел из ГМТУ вне форума Ответить с цитированием
Старый 23.07.2009, 22:03   #6
CraZZy RabbIt
Форумчанин
 
Регистрация: 16.02.2009
Сообщений: 172
По умолчанию

все,разобрался
CraZZy RabbIt вне форума Ответить с цитированием
Старый 23.07.2009, 22:03   #7
uberchel
Участник клуба
 
Аватар для uberchel
 
Регистрация: 19.01.2009
Сообщений: 1,455
По умолчанию

И что было ?
uberchel вне форума Ответить с цитированием
Старый 23.07.2009, 22:11   #8
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Скорее всего
Цитата:
И неплохо бы перепроверить раздел Uses....
Наверное модуля не было, где типы описаны.
puporev вне форума Ответить с цитированием
Старый 24.07.2009, 05:37   #9
cnbeads
Заблокирован
 
Регистрация: 16.07.2009
Сообщений: 2
Вопрос Hi...

Hi, I am new here. Hope to know all of you! ---------------------------------------------------------------------------------------------------------------------------------------Handmade Designer in SterlingUnique Sponge Coral beadsCheap 925 sterling silver hand made jewelryShop for world treasures from ChinaFun fashion handmade jewelry
cnbeads вне форума Ответить с цитированием
Старый 24.07.2009, 19:01   #10
iilovesb
Заблокирован
 
Регистрация: 24.07.2009
Сообщений: 1
Стрелка buy the cheapest nfl jerseys

nfl jerseys | nfl jersey | wholesale nfl jerseys
iilovesb вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вернуть массив из фунции в Delphi Golovastik Общие вопросы Delphi 3 22.06.2009 00:45
Как найти уравнение касательной, проведенной через 2 фунции? Cerebrum Общие вопросы Delphi 0 20.05.2009 03:07
Фунции (Pascal) DsDevis Помощь студентам 9 26.03.2009 13:23
Ошибки delphin100 Операционные системы общие вопросы 12 17.04.2008 14:15