Autor Beitrag
Toz
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Di 12.06.12 09:02 
Hallo,
ich bin dabei mir ein Programm zu schreiben um mit einer grafischen Oberfläsche GIT zu nutzen.
Ich möchte aber trotzdem das in dem VCL ein "echtest" Konsolenfenster ist in dem ich auch direkt die Befehele eingeben kann (also nicht eine schwarze edit box die alles in die konsole schreibt bzw. aus ihr heraus liest).
Jetzt ist aber genau das mein Problem ;)

Hat einer von euch eine Idee oder Tipp wie ich ein Konsolenfenster (cmd) innerhalb eines VCL Forms anzeigen kann?

Im Vorraus schon mal danke :)

Grüße
Toz
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 12.06.12 09:22 
Hallo und :welcome: im Forum!

Du kannst mit AllocConsole selbst eine Konsole anzeigen:
msdn.microsoft.com/e...681944(v=vs.85).aspx
Toz Threadstarter
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Di 12.06.12 11:50 
Danke :)

Ähmm, wie baue ich die Konsole den dann ein, werd aus dem link nicht wirklich schlau^^
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Di 12.06.12 12:01 
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
unit Unit5;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm5 = class(TForm)
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
    FConsoleAllocated:Boolean;
    procedure WriteConsole(const s: String);
  public
    { Public-Deklarationen }
  end;

var
  Form5: TForm5;

implementation

{$R *.dfm}

Procedure TForm5.WriteConsole(Const s:String);
begin
  if FConsoleAllocated then Writeln(s);

end;

procedure TForm5.Button1Click(Sender: TObject);
begin
  WriteConsole(FormatDateTime('hh:nn:ss.zzz',now));
end;

procedure TForm5.FormCreate(Sender: TObject);
begin
    FConsoleAllocated := Windows.AllocConsole;
end;

procedure TForm5.FormDestroy(Sender: TObject);
begin
   if FConsoleAllocated then FreeConsole;

end;

end.

_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
Toz Threadstarter
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Di 12.06.12 13:01 
Danke, 2 Fragen haben ich doch noch :oops:

zum einen, ist es auch möglich die konsole im Form zu haben, also wie z.B. ein Panel.

und, ich habe mir die API angeguckt aber finde dort nicht die möglichkeit befehle in die konsole zu packen, wie z.B. 'dir', steh ich da aufm schlauch oder geht das nicht?
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 12.06.12 13:13 
Was willst du denn nun?
  • Eine eingebundene Konsole inklusive Kommunikation: Dann macht es wenig Sinn eine direkte Konsole aufzumachen, sondern dann kann die im Hintergrund geöffnet und z.B. in ein Memo gepackt werden
  • Eine einzelne Konsole: Dann macht AllocConsole Sinn
Theoretisch findest du in der Doku aber auch Funktionen um in eine Konsole zu schreiben und daraus zu lesen:
msdn.microsoft.com/e...esktop/ms681944.aspx
(WriteConsole usw., wie der Name schon sagt.)
Aber damit machst du dir das Leben nicht gerade einfacher...
Toz Threadstarter
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Di 12.06.12 13:26 
Eine eingebundene Konsole inklusive Kommunikation ;) die Idee mit dem Memo hatte ich auch schon, aber ich finde das unsauber, mir persönlich ist eine richtige Konsole innerhalb der Form lieber (Geschmackssache halt ;D).

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TForm2.Button1Click(Sender: TObject);
begin
  WriteConsole(FormatDateTime('hh:nn:ss.zzz',now));
  WriteConsole('dir');
end;


Habe ich versucht, aber er schreibt mir nur 'dir' rein, logisch, aber ich will auch das er den befehl ausführt, das tut er leider nicht.... :(
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Di 12.06.12 14:19 
Eine Konsole ist ja kein CMD oder Command, sondern eine Ein/Ausgabemedium
Wenn Du CMD fernsteuern willst kannst Du Dir den Anhang mal anschauen
Einloggen, um Attachments anzusehen!
_________________
Das Problem liegt üblicherweise zwischen den Ohren H₂♂
DRY DRY KISS
Toz Threadstarter
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Di 12.06.12 14:33 
danke, dann muss ich leider doch mit memo arbeiten :( .
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 12.06.12 14:53