Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

Ответ
 
Опции темы
Старый 20.08.2010, 01:15   #1
Sadowod
 
Регистрация: 20.08.2010
Сообщений: 3
Репутация: 10
По умолчанию Ошибка при использовании CreateProcess

Пишу оболочку для запуска консольного кодировщика ogg Vorbis. Сначала всё было нормально, всё работало. Но после незначительных изменений в коде (не в этой функции), после завершения работы кодировщика - вылетает ошибка:
Project ogg.exe raised exception class EAccessViolation with message 'Access violation at adress ... in module 'ogg.exe'. Read of adress 00000000'.

Вот функция, запускающая внешнюю программу:
Код:

function ExecAndWait(const FileName, Params: ShortString; const WinState: Word): boolean; export;

var
  StartInfo: TStartupInfo;
  ProcInfo: TProcessInformation;

begin
  CmdLines := Filename + ' ' + Params;
  FillChar(StartInfo, SizeOf(StartInfo), #0); 

  with StartInfo do
  begin
    cb := SizeOf(StartInfo);
    dwFlags := STARTF_USESHOWWINDOW;
    wShowWindow := WinState;
  end;
  Result := CreateProcess(nil, PChar( String( CmdLines ) ), nil, nil, false,
                          CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil,
                          PChar(ExtractFilePath(Filename)),StartInfo,ProcInfo);
  if Result then
  begin
    WaitForSingleObject(ProcInfo.hProcess, INFINITE);
    CloseHandle(ProcInfo.hProcess);
    CloseHandle(ProcInfo.hThread);
  end;
end;

Уже пару часов пытаюсь разобраться из-за чего так стало происходить, но ничего в голову не приходит...
Sadowod вне форума   Ответить с цитированием
Старый 20.08.2010, 03:27   #2
GunSmoker
Профессионал
 
Регистрация: 13.08.2009
Адрес: Россия, Тверь
Сообщений: 2,581
Репутация: 1066

icq: 436815515
skype: RandomClear
По умолчанию

Вообще-то это проблема ogg.exe, а не ваша.
__________________
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума   Ответить с цитированием
Старый 20.08.2010, 07:32   #3
Sadowod
 
Регистрация: 20.08.2010
Сообщений: 3
Репутация: 10
По умолчанию

ogg.exe - это и есть моя программа. Кодировщик зовётся oggenc2.exe...
Sadowod вне форума   Ответить с цитированием
Старый 20.08.2010, 09:54   #4
Stilet
Белик Виталий :)
Профессионал
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Адрес: Украина, Донецкая область, г. Краматорск
Сообщений: 57,842
Репутация: 6832
По умолчанию

Цитата:
CloseHandle(ProcInfo.hProcess);
CloseHandle(ProcInfo.hThread);
Дважды зачем?

Выясни на какой строке падает.
at adress ... - к какой строке относится? посмотри в отладчике
__________________
I'm learning to live...
Stilet вне форума   Ответить с цитированием
Старый 20.08.2010, 14:51   #5
GunSmoker
Профессионал
 
Регистрация: 13.08.2009
Адрес: Россия, Тверь
Сообщений: 2,581
Репутация: 1066

icq: 436815515
skype: RandomClear
По умолчанию

Цитата:
Сообщение от Sadowod Посмотреть сообщение
ogg.exe - это и есть моя программа. Кодировщик зовётся oggenc2.exe...
Тогда в показанном вами коде ошибок нет. Она где-то ещё. Если запускать под отладчиком - на какой строчке встаёт отладчик при ошибке?

Читать.

Цитата:
Сообщение от Stilet Посмотреть сообщение
Дважды зачем?
Затем, что это разные вещи. Всё правильно.
__________________
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.

Последний раз редактировалось GunSmoker; 20.08.2010 в 14:53.
GunSmoker вне форума   Ответить с цитированием
Старый 20.08.2010, 16:00   #6
Sadowod
 
Регистрация: 20.08.2010
Сообщений: 3
Репутация: 10
По умолчанию

Простите, это какие-то происки Delphi
Всё-таки ночью надо спать наверное... А то я себе вбил в голову что ошибка в этой процедуре . Сейчас глянул куда дебагер ставит курсор. Выяснилось что на TStringList.Destroy (он в конце цикла стоял) - хотя я уже несколько альбомов своей оболочкой перекодировал - всё было нормально... Заменил на TStringList.Free - перестал вылетать с ошибкой... Вместо этого выдаёт уже забытое на вид showmessage "Кодирование завершено"...

Последний раз редактировалось Sadowod; 20.08.2010 в 16:04.
Sadowod вне форума   Ответить с цитированием
Старый 20.08.2010, 16:37   #7
Stilet
Белик Виталий :)
Профессионал
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Адрес: Украина, Донецкая область, г. Краматорск
Сообщений: 57,842
Репутация: 6832
По умолчанию

Цитата:
Затем, что это разные вещи.
Извиняюсь за оффтоп, разве освобождение процесса не закрывает все его потоки?
Цитата:
Заменил на TStringList.Free
Опа!! Ты чего класс освобождаешь?
__________________
I'm learning to live...
Stilet вне форума   Ответить с цитированием
Старый 20.08.2010, 17:43   #8
GunSmoker
Профессионал
 
Регистрация: 13.08.2009
Адрес: Россия, Тверь
Сообщений: 2,581
Репутация: 1066

icq: 436815515
skype: RandomClear
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Извиняюсь за оффтоп, разве освобождение процесса не закрывает все его потоки?
Рихтера читать. Срочно. Закрытие описателя <> закрытие процесса.
__________________
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ошибка dcc70.dll при использовании AnsiUpperCase hello88 Общие вопросы Delphi 8 13.07.2010 16:05
ошибка в tFIBDataSet при использовании параметров. Lokos БД в Delphi 30 25.05.2010 10:32
Ошибка при использовании WorksheetFunction.VLookup imagenable@mail.ru Microsoft Office Excel 2 26.02.2010 13:04
Ошибка при использовании copyfile The Best Общие вопросы Delphi 20 22.07.2009 13:26


04:41.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru