24-09-2024, Saat: 15:19
ChatGPT ye sizin sorunuzu sordum.
Aşağıda verdiği cevap var. Vaktiniz varsa deneyebilirsiniz.
Aşağıda verdiği cevap var. Vaktiniz varsa deneyebilirsiniz.
uses
System.SysUtils, System.Classes, Vcl.Forms, Vcl.StdCtrls, Vcl.Controls, Vcl.ExtCtrls, Windows;
procedure TForm1.ExecuteCommand(const Command: string);
var
Security: TSecurityAttributes;
ReadPipe, WritePipe: THandle;
StartupInfo: TStartupInfo;
ProcessInfo: TProcessInformation;
Buffer: array[0..255] of AnsiChar;
BytesRead: DWORD;
CommandLine: string;
begin
// Boru hatlarını ayarlama
Security.nLength := SizeOf(Security);
Security.bInheritHandle := True;
Security.lpSecurityDescriptor := nil;
// Okuma ve yazma boruları oluştur
CreatePipe(ReadPipe, WritePipe, @Security, 0);
SetHandleInformation(ReadPipe, HANDLE_FLAG_INHERIT, 0);
// Başlatma bilgilerini ayarlama
ZeroMemory(@StartupInfo, SizeOf(StartupInfo));
StartupInfo.cb := SizeOf(StartupInfo);
StartupInfo.dwFlags := STARTF_USESTDHANDLES;
StartupInfo.hStdOutput := WritePipe;
StartupInfo.hStdError := WritePipe;
// Komutu çalıştır
CommandLine := 'cmd.exe /C ' + Command;
if CreateProcess(nil, PAnsiChar(AnsiString(CommandLine)), nil, nil, True,
CREATE_NO_WINDOW, nil, nil, StartupInfo, ProcessInfo) then
begin
// Yazma borusunu kapat
CloseHandle(WritePipe);
// Çıktıyı oku
while ReadFile(ReadPipe, Buffer, SizeOf(Buffer), BytesRead, nil) do
begin
Buffer[BytesRead] := #0; // Sonlandırıcı ekle
Memo1.Lines.Add(string(Buffer)); // Çıktıyı TMemo'ya ekle
end;
// Boru hatlarını kapat
CloseHandle(ReadPipe);
CloseHandle(ProcessInfo.hProcess);
CloseHandle(ProcessInfo.hThread);
end
else
begin
Memo1.Lines.Add('Hata: ' + SysErrorMessage(GetLastError));
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Clear; // Önce memo'yu temizle
ExecuteCommand('dir'); // Örnek komut
end;
PostgreSQL - Linux - Delphi, Poliüretan

