Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
MichaelB Mini JLI'ler
Anmeldedatum: 09.07.2005 Beiträge: 27
Medaillen: Keine
|
Verfasst am: 11.07.2005, 13:01 Titel: VS C++6: Konsolenausgaben anzeigen? |
|
|
Hallo,
kurze Frage: Ich möchte in der MS VS C++6 Autorenversion die Möglichkeit haben, beim Ausführen einer Win32-Anwendung alle printf() Konsolenausgaben zu sehen, die das Programm so macht. Mir fehlt aber unten in der Statusleiste der Karteireiter "Konsole" (wie es ihn z.B. bei Eclipse gibt).
Selbst wenn ich die .exe in einem DOS-Fenster ausführe, werden keine printf() Ausgaben angezeigt. Gibt's da was zu beachten?
Danke im vorab!
Gruß,
Michael |
|
Nach oben |
|
 |
Patrick Dark JLI Master

Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
|
Nach oben |
|
 |
MichaelB Mini JLI'ler
Anmeldedatum: 09.07.2005 Beiträge: 27
Medaillen: Keine
|
Verfasst am: 11.07.2005, 13:25 Titel: |
|
|
Patrick hat Folgendes geschrieben: | Keine Printf ausgaben werden angezeigt? Hmn zeig mal Code, das will ich sehen  |
Um ein ellenlanges Listing zu ersparen: Es ist die "HelloWindows.cpp" aus Kapitel 12, wobei ich als erste Zeile der WinMain-Funktion einfach ein printf("Hello"); eingefügt habe:
Code: | ...
int WINAPI WinMain(HINSTANCE hInstance, // Handle der Programminstanz
HINSTANCE hPrevInstance, // Handle der letzten Instanz
LPSTR lpCmdLine, // Kommandozeile
int nCmdShow) // Art wie das Fenster angezeigt werden soll
{
printf("Hello!)";
// Fenster erzeugen und Handle speichern
hWnd = CreateMainWindow(hInstance);
... |
Dieses Hello kommt nirgendwo an, in der MS VC6 Autorenversion gibt's ja beim Ausführen einer Win32 Anwendung noch nicht einmal ein Konsolenfenster (oder muß man das erst irgendwo aktivieren?).
Auch in der DOS-Box kommt beim Ausführen der .exe keine Ausgabe der printf Funktion. Kompiliert wird alles fehlerfrei.
Als Java Programmierer bin ich's gewohnt, mir vom Programm Statusrückmeldungen auf die Konsole ausgeben zu lassen, einfach um zu wissen, ob etwas geklappt hat oder nicht. Wie handhabt Ihr das?
Gruß,
Michael |
|
Nach oben |
|
 |
AFE-GmdG JLI MVP


Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 11.07.2005, 13:42 Titel: |
|
|
Dass, was Eclipse dort macht, ist eine Konsole in der IDE anzuzeigen.
In dieser Konsole könntest du auch andere Befehle verwenden (z.B. ls oder cd). Unter Windows gibt es diese Möglichkeit so nicht direkt. Aber du hast das Fenster "Ausgabe", in dem du per Programmcode mittels OutputDebugString("...") reinschreiben kannst. eventuell hilft dir das ja.
Nur formatieren müsstest du den Code vorher (z.B. durch sprintf) _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
 |
MichaelB Mini JLI'ler
Anmeldedatum: 09.07.2005 Beiträge: 27
Medaillen: Keine
|
Verfasst am: 11.07.2005, 14:00 Titel: |
|
|
AFE-GmdG hat Folgendes geschrieben: | Aber du hast das Fenster "Ausgabe", in dem du per Programmcode mittels OutputDebugString("...") reinschreiben kannst. |
Ah, jetzt wird mir einiges klar!
MS VC6 unterscheidet auch noch zwischen "Ausführen (F5)" und "Programm ausführen (Ctrl+F5)". Nur ersteres öffnet überhaupt das Ausgabefenster für den Debugger.
Danke!
Gruß,
Michael |
|
Nach oben |
|
 |
AFE-GmdG JLI MVP


Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 11.07.2005, 14:36 Titel: |
|
|
Wenn du "Programm ausführen" nutzt, wird das Pogramm ohne Debugger gestartet - weshalb dieser keine Ausgaben an die IDE senden kann.
Bei "Ausführen" wird der Debugger gestartet, welcher das Programm ab der ersten Codezeile kontrolliert ausführt. - Entsprechende Ausgaben kann der Debugger nun an die IDE weiterleiten.
Eventuell kann man durch umbiegen des Standard-Out-Filepointers auch mit printf zum Ziel kommen - das habe ich aber noch nie getestet... _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|
Nach oben |
|
 |
DirectXer Dark JLI'ler

Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 11.07.2005, 17:09 Titel: |
|
|
MichaelB hat Folgendes geschrieben: |
Code: | ...
int WINAPI WinMain(HINSTANCE hInstance, // Handle der Programminstanz
HINSTANCE hPrevInstance, // Handle der letzten Instanz
LPSTR lpCmdLine, // Kommandozeile
int nCmdShow) // Art wie das Fenster angezeigt werden soll
{
printf("Hello!)";
// Fenster erzeugen und Handle speichern
hWnd = CreateMainWindow(hInstance);
... |
|
hmm, wenn du den Code so reingeschrieben hast, ists klar, dass das net ausgeführt wird. Ich glaube aber eher, dass das ein kleiner Tippferhler war, weil der Compiler da eigentlich auf einen Error gest0ßen wäre. Tipp: Guck dir mal den printf()-Aaufruf an.
Gruß DirectXer |
|
Nach oben |
|
 |
Patrick Dark JLI Master

Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
|
Nach oben |
|
 |
philipp_boeing JLI'ler

Alter: 35 Anmeldedatum: 26.07.2003 Beiträge: 188
Medaillen: Keine
|
Verfasst am: 11.07.2005, 18:05 Titel: |
|
|
ähem, da sind die anführungsstriche aber eine stelle zu weit... |
|
Nach oben |
|
 |
DirectXer Dark JLI'ler

Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 11.07.2005, 18:07 Titel: |
|
|
Patrick hat Folgendes geschrieben: | DirectXer
Ich sehe nichts was der Compiler als Fehler anerkennen würde?  |
Augen auf
Wie war das: Du siehst den Wald vor lauter Bäumen net mehr  |
|
Nach oben |
|
 |
MichaelB Mini JLI'ler
Anmeldedatum: 09.07.2005 Beiträge: 27
Medaillen: Keine
|
Verfasst am: 11.07.2005, 18:34 Titel: |
|
|
philipp_boeing hat Folgendes geschrieben: | ähem, da sind die anführungsstriche aber eine stelle zu weit... |
Yup, hast Recht, aber nur hier im Forum - nicht im eigentlichen Programmtext
AFE-GmdG hatte schon Recht: Win32 Applikationen geben printf() Kommandos nicht auf die Kommandozeile (jedenfalls nicht unter MS VC6 Autor).
Seit ich mit OutputDebugString() arbeite, ist alles kein Problem mehr.
Zuletzt bearbeitet von MichaelB am 11.07.2005, 18:36, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
DirectXer Dark JLI'ler

Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 11.07.2005, 18:35 Titel: |
|
|
MichaelB hat Folgendes geschrieben: | philipp_boeing hat Folgendes geschrieben: | ähem, da sind die anführungsstriche aber eine stelle zu weit... |
Yup, aber nur hier im Forum - nicht im eigentlichen Programmtext :wink: |
sag ich doch ;) |
|
Nach oben |
|
 |
MichaelB Mini JLI'ler
Anmeldedatum: 09.07.2005 Beiträge: 27
Medaillen: Keine
|
Verfasst am: 11.07.2005, 18:38 Titel: |
|
|
DirectXer hat Folgendes geschrieben: | Wie war das: Du siehst den Wald vor lauter Bäumen net mehr  |
Ich will meine Eclipse IDE zurück
Der korrigiert Syntaxfehler schon während des Tippens...
(Jaja, ich weiß, mit CDT gibt's Eclipse auch für C/C++, aber mit wesentlich weniger Komfort) |
|
Nach oben |
|
 |
DirectXer Dark JLI'ler

Anmeldedatum: 05.02.2005 Beiträge: 1201 Wohnort: Köln Medaillen: Keine
|
Verfasst am: 11.07.2005, 18:43 Titel: |
|
|
MichaelB hat Folgendes geschrieben: | DirectXer hat Folgendes geschrieben: | Wie war das: Du siehst den Wald vor lauter Bäumen net mehr  |
Ich will meine Eclipse IDE zurück
Der korrigiert Syntaxfehler schon während des Tippens...
(Jaja, ich weiß, mit CDT gibt's Eclipse auch für C/C++, aber mit wesentlich weniger Komfort) |
Das war auf Patrick bezogen, schön dass du dich angesprochen fühlst  |
|
Nach oben |
|
 |
|