Einzelnen Beitrag anzeigen

Tyrael Y.

Registriert seit: 28. Jul 2003
Ort: Stuttgart
1.093 Beiträge
 
Delphi 2007 Professional
 
#2

Re: Ausgaben an StdOut aus DLL lesen

  Alt 17. Dez 2009, 13:56
Ich habe eine kleine Testapplikation erstellt.
Wenn ich in den Projektoptionen bei Linker/Konsolenanwendung markiere krieg ich mit folgendem Weg die Ausgaben aus der Console in mein Memo. Es erscheint halt aber ein sichtbares Konsolenfenster.

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  stdout := GetStdHandle(STD_OUTPUT_HANDLE);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
    coord: _COORD;
    readed: Cardinal;
    text: string;
begin
  ExecuteFunctionFromDLL();
 
  coord.x := 0;
  coord.y := 0;
  SetLength(text, 2048);
  ReadConsoleOutputCharacter(stdout, PChar(text), 2048, coord, readed);
  memo1.Lines.Text := Text;
end;
Lass ich das mit der Konsolenanwendung in den Optionen weg und schreibe statt dessen...
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  AllocConsole;
  stdout := GetStdHandle(STD_OUTPUT_HANDLE);
end;
...erscheint wieder ein Konsolenfenster, aber beim Test krieg ich weder in der Konsole, noch im Memo einen Text.

Ändere ich den BuutonKlick aber in
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
    coord: _COORD;
    readed: Cardinal;
    text: string;
begin
  writeln('foo');
 
  coord.x := 0;
  coord.y := 0;
  SetLength(text, 2048);
  ReadConsoleOutputCharacter(stdout, PChar(text), 2048, coord, readed);
  memo1.Lines.Text := Text;
end;
...seh ich das foo im Konsolenfenster und auch in der Memo.

Scheint ein Rechteproblem im Zusammenhang mit DLL´s zu sein.
Nur wie löse ich es über den Weg mit AllocConsole?

...to be continued
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  Mit Zitat antworten Zitat