function RunConsolApp(const cmd: string): string; var StartupInfo: TStartupInfo; ProcessInformation: TProcessInformation; SecurityAttributes: TSecurityAttributes; hReadPipe, hWritePipe,hReadError,hWriteError: THandle; Buffer,ErrorBuffer: array [1..4096] of char; dwRead,dwReadError: integer; dwExitCode:dword; dwBytesAvail,dwBytesRead,dwBytesReadError:cardinal; begin fillchar(SecurityAttributes, SizeOf(TSecurityAttributes), 0); SecurityAttributes.nLength := sizeof(TSecurityAttributes); SecurityAttributes.lpSecurityDescriptor := nil; SecurityAttributes.bInheritHandle := true; if CreatePipe(hReadPipe, hWritePipe, @SecurityAttributes,0) then begin CreatePipe(hReadError, hWriteError, @SecurityAttributes,0); fillchar(StartupInfo, SizeOf(TStartupInfo), 0); StartupInfo.cb := sizeof(TStartupInfo); StartupInfo.dwFlags := STARTF_USESHOWWINDOW or STARTF_USESTDHANDLES; StartupInfo.wShowWindow := SW_HIDE; StartupInfo.hStdOutput := hWritePipe; StartupInfo.hStdError:=hWriteError; Result:=''; if CreateProcess(nil,pChar(cmd),nil,nil,true,NORMAL_PRIORITY_CLASS, nil,nil,StartupInfo,ProcessInformation) then begin repeat repeat if PeekNamedPipe(hReadPipe,nil,0,nil,@dwBytesRead,nil) then if dwBytesRead>0 then begin if ReadFile(hReadPipe,Buffer,sizeof(buffer), dwBytesRead,NIL) then begin result:=Result+Copy(buffer,0,dwBytesRead); Application.ProcessMessages; end; end; until dwBytesRead=0; repeat if PeekNamedPipe(hReadError,nil,0,nil,@dwBytesRead,nil) then if dwBytesRead>0 then begin if ReadFile(hReadError,Buffer,sizeof(buffer), dwBytesRead,NIL) then begin result:=Result+Copy(buffer,0,dwBytesRead); Application.ProcessMessages; end; end; until dwBytesRead=0; WaitForSingleObject(ProcessInformation.hProcess,0); GetExitCodeProcess(ProcessInformation.hProcess,dwExitCode); until dwexitcode<>still_active; CloseHandle(hReadPipe); CloseHandle(hReadError); CloseHandle(ProcessInformation.hProcess); end; end; end; procedure TForm1.Button1Click(Sender: TObject); begin memo1.Text := RunConsolApp(Edit1.Text); end;
Yazılımı oluşturan bileşenlerden daha önce söz etmiştik.
Şimdi bu bileşenlerin neler oldukları üzerinde biraz duralım.
Yazılımı oluşturan bileşenler = Mantık + Veri + Belge + İnsan + Program.
Bu bileşenlerin az çok neler olduğunu, neleri kapsadığını biliyoruz ama
biz yine de kıyısından köşesinden açıklayalım. Zaten bu yazıdaki asıl amaç yazılım bileşenlerinden belgelemenin yerini ve önemi (dökümantasyon) vurgulamak.
Mantık = Yazılım herşeyden önce bir işin bilgisayar aracılığı ile yapılması amacına yöneliktir. Bu nedenle bilgisayarlaştırılmak istenen işin mevcut mantığı bir şekilde yazılıma da yansılıtılmak zorundadır.
Veri = Her tür yazılım mutlaka bir veri üzerinde çalışmak durumundadır. Veri işlemeyen yazılımın geliştirilmesi söz konusu değildir. Söz konusu olan veri dış ortamdan alınabileceği gibi yazılımın içerisinde de üretilebilir. Zaten yazılımın temel amacı veriyi bilgiye dönüştürmektir.
İnsan = Doğal olarak yazılımın insan bileşeni iki boyutludur. Yazıl
Yorumlar