AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ausgaben an StdOut aus DLL lesen

Ein Thema von Tyrael Y. · begonnen am 17. Dez 2009 · letzter Beitrag vom 17. Dez 2009
Antwort Antwort
Tyrael Y.

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

Ausgaben an StdOut aus DLL lesen

  Alt 17. Dez 2009, 09:57
Hallo zusammen,
ich konnte den Titel irgendwie nicht besser formulieren.

Ich habe eine C DLL in der einige Funktionen sind.
Diese Funktionen werden in einer GUI Anwendung von mir aufgerufen.
Ich weiss, daß sich innerhalb der Funktionen Ausgaben an stdout mittels writeln befinden.

Wie kann ich diese Ausgaben in meinem GUI-Programm lesen?

Ich denke, ich müsste beim Start meiner GUI Anwendung einen nicht sichtbaren Konsolenprozess starten.
Zu diesem Prozess wahrscheinlich eine Pipe aufbauen und aus dieser Pipe dann die Ausgaben lesen.
Passt die Überlegung einigermassen oder müsste ich anders vorgehen?

Wie müsste ich konkret das Ganze machen?
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  Mit Zitat antworten Zitat
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
Benutzerbild von wicht
wicht

Registriert seit: 15. Jan 2006
Ort: Das schöne Enger nahe Bielefeld
809 Beiträge
 
Delphi XE Professional
 
#3

Re: Ausgaben an StdOut aus DLL lesen

  Alt 17. Dez 2009, 13:59
Das schreiben ins StdOut muss ja über irgendeine Funktion geschehen.
Diese Funktion könnte man eventuell auf eine eigene umbiegen, um so an die Daten zu kommen. Leider weiß ich so auch nicht, wie die Funktion heißen könnte, die dafür in Frage kommt...
http://streamwriter.org

"I make hits. Not the public. I tell the DJ’s what to play. Understand?"
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz