Datenaustausch C# mit C

06/07/2009 - 12:53 von Dobo | Report spam
Hallo zusammen.
Ich arbeite gerade an einem C#-Programm, dass Daten visuell in Form von
Diagrammen darstellt. Da die Daten zu Beginn verschlüsselt sind, sollen diese
von meinem Programm an ein fertiges C-Programm weitergegeben werden, dass
diese in numerische Werte umrechnet und wieder zurück geben soll. Das
C-Programm erwartet die Daten über stdin.
Um die Datenübertragung zu bewerkstelligen, lasse ich das C-Programm durch
meine Software starten und setze Process.StartInfo.RedirectStandardInput und
-Output auf true. Danach weise ich StandardInput und Output je einem
StreamWriter bzw. StreamReader zu und schreibe anschließend die Daten in Form
eines Strings in den Stream.
Soweit zur Theorie.
Leider funktioniert die Datenübertragen über den StandardInput/Output nicht.
Nachdem das C-Programm alle Versuche mit Fehlermeldungen quittierte, habe ich
zur Kontrolle ein weiteres C-Programm geschrieben, dass nichts anderes tut
als die Daten, die es vom C#-Programm erhàlt wieder abzubilden (in einer
Textdatei). Leider auch hier ohne Erfolg.
Lediglich wenn ich ein C#-Programm als Konsolenanwendung aufbaue, dass die
gleiche Funktion hat (Daten lesen und einfach zur Kontrolle wieder
schreiben), funktioniert die Übertragung.
Gibt es etwas, was ich nicht beachtet habe? Bzw. ist diese Form des
Datenaustauschs zwischen einem C#- und einem C-Programm überhaupt möglich?
 

Lesen sie die antworten

#1 Frank Dzaebel
06/07/2009 - 20:51 | Warnen spam
Hallo,

wir benutzen hier gerne den vollen Vor- und Zunamen
als Usernamen.

[...] verschlüsselte Daten [...] an ein fertiges C-Programm
weitergegeben werden, dass diese in numerische
Werte umrechnet und wieder zurück geben soll.



Hast Du Zugriff auf den Quellcode des Programm?
Eine Übergabe über PInvoke wàre ja viel sauberer
und performanter/gàngiger.

Dennoch habe ich hier mal ein Beispiel
eines funktionierenden Auslesens der
Ausgabe eines Konsolen-App über Threads:

[Solve package errors in VS2005 help window]
http://dzaebel.net/FSnapView.htm


Lediglich wenn ich ein C#-Programm als Konsolenanwendung aufbaue,
dass die gleiche Funktion hat (Daten lesen und einfach zur Kontrolle
wieder schreiben), funktioniert die Übertragung.



Also mein Beispiel ist zumindest eine Windows Forms
Anwendung.


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen