Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Pascal 2 C++

48K
12 августа 2009 года
iknownotall
8 / / 10.08.2009
Помогите перевести с Pascal на C++ :
Код:
private
    function RunCaptured(const _dirName, _exeName, _cmdLine: string): Boolean;
     

function TForm1.RunCaptured(const _dirName, _exeName, _cmdLine: string): Boolean;
var
  start: TStartupInfo;
  procInfo: TProcessInformation;
  tmpName: string;
  tmp: Windows.THandle;
  tmpSec: TSecurityAttributes;
  res: TStringList;
  return: Cardinal;
begin
  Result := False;
  try

    tmpName := 'Test.tmp';
    FillChar(tmpSec, SizeOf(tmpSec), #0);
    tmpSec.nLength := SizeOf(tmpSec);
    tmpSec.bInheritHandle := True;
    tmp := Windows.CreateFile(PChar(tmpName),
           Generic_Write, File_Share_Write,
           @tmpSec, Create_Always, File_Attribute_Normal, 0);
    try
      FillChar(start, SizeOf(start), #0);
      start.cb          := SizeOf(start);
      start.hStdOutput  := tmp;
      start.dwFlags     := StartF_UseStdHandles or StartF_UseShowWindow;
      start.wShowWindow := SW_Minimize;

      if CreateProcess(nil, PChar(_exeName + ' ' + _cmdLine), nil, nil, True,
                       0, nil, PChar(_dirName), start, procInfo) then
      begin
        SetPriorityClass(procInfo.hProcess, Idle_Priority_Class);
        WaitForSingleObject(procInfo.hProcess, Infinite);
        GetExitCodeProcess(procInfo.hProcess, return);
        Result := (return = 0);
        CloseHandle(procInfo.hThread);
        CloseHandle(procInfo.hProcess);
        Windows.CloseHandle(tmp);

        res := TStringList.Create;
        try
          res.LoadFromFile(tmpName);
       {   Memo1.Lines.AddStrings(res); }
        finally
          res.Free;
        end;
        Windows.DeleteFile(PChar(tmpName));
      end
      else
      begin
        Application.MessageBox(PChar(SysErrorMessage(GetLastError())),
          'Ошибка', MB_OK);
      end;
    except
      Windows.CloseHandle(tmp);
      Windows.DeleteFile(PChar(tmpName));
      raise;
    end;
  finally
  end;
end;
// Example:
procedure TForm1.Button1Click(Sender: TObject);
begin
  RunCaptured('C:\', 'cmd.exe', '/c dir');
end;
48K
13 августа 2009 года
iknownotall
8 / / 10.08.2009
Вроде как перевел, только проблема есть...

Delphi(Pascal):
 
Код:
if CreateProcess(nil, [COLOR="#ff0000"]PChar[/COLOR](_exeName + ' ' + _cmdLine), nil, nil, True,
                       0, nil, [COLOR="Red"]PChar(_dirName)[/COLOR], start, procInfo) then

C++:
 
Код:
if(CreateProcess(NULL, [COLOR="Red"]?[/COLOR](_exeName + " " + _cmdLine).c_str(), NULL, NULL, True,
                         0, NULL, [COLOR="#ff0000"]?[/COLOR], &start, &procInfo))


Не могу понять, как это сделать на C++
Поможет кто-нибудь?
11
13 августа 2009 года
oxotnik333
2.9K / / 03.08.2007
AnsiString/String если VCL
или std::string
288
14 августа 2009 года
nikitozz
1.2K / / 09.03.2007
Цитата: oxotnik333
AnsiString/String если VCL
или std::string



+ c_str()

11
14 августа 2009 года
oxotnik333
2.9K / / 03.08.2007
Цитата: nikitozz
+ c_str()


там уже все есть :)

48K
19 августа 2009 года
iknownotall
8 / / 10.08.2009
Я не понял:\
Можно полный код?
Нормально компилирующейся C++
11
19 августа 2009 года
oxotnik333
2.9K / / 03.08.2007
Цитата: iknownotall
Я не понял:\
Можно полный код?
Нормально компилирующейся C++


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

48K
19 августа 2009 года
iknownotall
8 / / 10.08.2009
В личку мне код отправь! Пожалуйста, срочно надо!
11
19 августа 2009 года
oxotnik333
2.9K / / 03.08.2007
Цитата: iknownotall
В личку мне код отправь! Пожалуйста, срочно надо!


почта просматривается, коридоры простреливаются... ужос, как жить...

48K
19 августа 2009 года
iknownotall
8 / / 10.08.2009
Я тебе в личку напишу мыло, вышлешь на него код?:))
Да и вообще, где написано что нельзя посылать код через ЛС?
А если и это запрещено, скинешь по мылу, это они уже не могу посмотреть!
9
19 августа 2009 года
Lerkin
3.0K / / 25.03.2003
Цитата: iknownotall

А если и это запрещено, скинешь по мылу, это они уже не могу посмотреть!


Могут, могут. Они все могут...
Второе нарушение в профиль. На пару недель. Еще раз - и досвидос.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог