VCL-Frontend für ANSI-C Konsolenprogramm
-
Guten Abend allerseits,
ich hoffe meine Frage liegt nicht zu weit ab vom Schuß. Ich hab mich in letzter Zeit mit der 2. Ausgabe von Kernighan/Ritchie "The C-Programming Language" quasi ANSI-C beschäftigt und ein einfaches Programm geschrieben, das im Prinzip Intervalle von Artikelnummern überprüft ob die angegebene innerhalb des Intervalls liegt und dann den zugehörigen Text ausgibt. Das Programm funktioniert unter Linux gcc, Visual C++, und borland turbo C++ einwandfrei als Konsolenanwendung. Es handelt sich um ein Programm, das mir in der Firma die Arbeit erleichtert, es wird allerdings nicht kommerziell genutzt. Da wir in der Firma XP benutzen und ich mir den ewigen Umweg über die Konsole sparen würde, würde ich dem Programm gern mit geringem Aufwand ein Windows Frontend verpassen. Dafür bin ich auf die VCL Anwendungen des Turbo C++ Explorer von Embarcadero/Borland verfallen. Ich würde gerne wissen, ob sich die ANSI-C Konsolen exe ohne große Änderungen aus einem VCL-Formular aufrufen lassen würde. Das sollte etwa so aussehen, daß ein Fenster das Programm kurz präsentiert, ein zweites ein Auswahlbox anzeigt, deren jeweiliges Ereignis darin besteht die dahinterstehende ANSI exe zu starten und ein drittes, das auf einfarbigem Fensterhintergrund den vom Programm ausgegebenen Text zeigt. Geht das so oder bin ich da komplett falsch gewickelt?
Gruß chris
-
Also ich würde ja sagen dass, wenn du den Source von der EXE hast gleich eine Formularbasierte Anwendung bastelst.
Was natürlich nur solange funktioniert wenn das Programm nur für Windows sein soll, ansonsten wäre ein anderes Framework sinnvoller.
Die Ausgabe der EXE kannst du (Source vorrausgesetzt) entweder über WINAPI (SendMessage/PostMessage) an deine Anwendung senden, kommt natürlich auch drauf an was ausgegeben wird.
Alternativ kannst du eine Pipe benutzen. Dazu musst du dann aber die Ausgabe parsen. Das wäre meiner Meinung nach die sinnvollste Methode wenn du den Source der EXE nicht hast.
-
Wenn du das C-Programm selbst geschrieben hast, wäre es viel einfacher, den Quelltext in eine mit C++Builder geschriebene Windows-Anwendung einzubinden.
-
Vielen Dank Maverik und audacia für die Antworten, also mal vorne weg den Source-Code hab ich selbst mit gcc geschrieben und dann mit visual C++ bzw. turbo C++ explorer 2006 nach windows portiert. Ich hab keinen kommerziellen C++builder, sondern den turbo C++ explorer 2006 von embarcado. Verstehe ich das richtig, daß ich in dieser IDE den ANSI-C code in eine unit stecken könnte und für das GUI einfach ein VCL Formular zusammenklicken könnte? Meine Kenntnisse mit winAPI und MFC sind eben eher dürftig.
Gruß Chris
-
Genau, einfach ein VCL-Projekt erstellen und deine C-Sourcen einbinden und dann die entsprechenden Funktionen aufrufen (evtl. müßtest du noch eine Header-Datei für deine C-Sourcen erstellen und diese dann von deiner Form-Datei aus inkludieren).
WinAPI und MFC benötigst du NICHT!
-
Vielen Dank Th69, ich versuchs mal und schreib dann wieder
Gruß Chris
-
Noch als Ergänzung:
die Funktionen der Header-Datei sollten mit 'extern "C"' umschlossen werden, damit C++ nicht fälschlicherweise das Name-Mangling benutzt, d.h.
#ifdef __cplusplus extern "C" { #endif int my_func(const char *); <-- deine C-Funktionen #ifdef __cplusplus } #endif