Drucken

hi

yup mit int ist dann besser bzw richitig. okay danke für die Erläuterung

Bei siehts nun so aus:
Allerdings glaub ich dass ich die endlos schleife falsch ist.
Also es kommt jetzt eine Fehlermedlung andie Variable (Logfehler)
und dann soll sofort gedruckt werden. Okay das wird gemacht, das passt.
Wenn nun das alles war soll der Drucker die Seite nicht durchziehen (macht er glaub auch nicht, Kanns ja leider nicht testen). Sondern der Drucker steht still. Wenn nun wieder eine Medlung an die Variable (Logfehler) kommt soll einen Absatz drunter wieder gedruckt werden.

Aber das passt so nicht wie ich das gemacht hab oder? Weil der Inhalt der Variable (Logfehler) wird
ja nicht gelöscht

Code:
#include <stdio.h>  // Präprozessor-Direktiven
#include <stdlib.h>
int main()
{
   FILE *Drucker;
   int Logfehler;
   
// Ausgabe des Ergebnisses
   Drucker = fopen("PRN","w");
   fprintf(Drucker," L O G F E H L E R \n\n");
   for ( ; ; ) 
   {
  fprintf(Drucker,"%d",Logfehler);
   }
  fclose(Drucker); 
   return 0;
}
 
Hi,
Weil der Inhalt der Variable (Logfehler) wird ja nicht gelöscht
Logfehler soll ja nicht geloescht, sondern mit dem neuen Fehler beschrieben werden?
aber er soll immer was drucken wenn es eine fehlermeldung gibt.

soll "for( ; ; )" eine Endlosschleife darstellen?
Setz dann da lieber "while(true)"
Dann wuerde der Code den ich sehe bei Logfehler=123 dies an den Drucker schicken:
L O G F E H L E R

123123123123123123123123123123123123123123

du brauchst eine Fehlermeldungquelle... und natuerlich damit er die Fehlercodes untereinander schreibt, ein \n.
So sähe die Schleife aus:
Code:
while(true)
{
  Logfehler = GetError();  // wobei du diese Funktion selber schreibst
  fprintf(Drucker,"%d\n",Logfehler);
}
 
Die Variable Logfehler soll mit einem neuen Fehler beschrieben werden, Genau
JA meine Endlosschleife würde dann immer unednlich viele gleiche Fehler ausgeben
Das wäre ja müll ;-)
okay danke das sieht gut aus, wie du das gemacht hast
So solls sein.
Wusse nur nicht wie ich eine endlosschleife mit while mache. Danke
Und hier Logfehler = GetError(); fang ich mögliche fehler ab, z.B kein drucker insatlliert usw gell?

 
GetError solltest du eigentlich selber schreiben, eine Funktion die auf Fehler wartet, und den Fehlercode zuruckgibt.
Code:
int GetError()
{
   /* dein code hier*/
}
Das abfangen solcher fehler wie Drucker nicht installiert? Naja das wird schwerer. Vor allem der Fehler "Drucker nicht installiert" wird schon am Anfang auftauchen, als du den Drucker zu fopen() versuchst. :p
 
ist klar, yup danke, naja das stimmt, dass das schwer ist aber das brauch ja auch eigentlich nicht :-)

Du weißt auch nicht zufällig wie ich überprüfen kann ob es den als text eingegeben drucker auch gibt und wenn ja dann soll gedruckt werden ,andernsfalls fehlermedlung erzeugen

Naja, ich habs dass nur in MFC hinbekommen mit Enum Printer...., aber wie das in API geht. Keine Ahnung...
Wie ich einlesen kann (scanf) ist klar, aber wie man dann das überprüft ob es den auch gibt...?
 
Vor allem der Fehler "Drucker nicht installiert" wird schon am Anfang auftauchen, als du den Drucker zu fopen() versuchst. :p
fopen() gibt NULL zuruck falls da ein Fehler aufgetaucht ist.

Code:
   FILE *Drucker;
   Drucker = fopen("PRN","w");
   if(Drucker == NULL)
   {
      // Denk dir hier einen Fehler aus. Die 16 ist ein rotes Kreutz+OK Taste
      MessageBox(NULL, "Fehler beim zugreifen auf den Drucker", "LogFehler hat einen Fehler! ;) ", 16);
      return 1;
   }
 
ah sauber, okay vielen dank nochmal für deine super Unterstützung.
Ich hof ich bekomm das jetzt selber hin.... ist ja nicht mehr so viel
 
Hallo,
nochmal eine Frage

Dann wuerde der Code den ich sehe bei Logfehler=123 dies an den Drucker schicken:

Zitat:
L O G F E H L E R

123123123123123123123123123123123123123123
while(true)
{
fprintf(Drucker,"%d\n",Logmeldungen);
}

Wie bekomm ich das hin, dass er NICHT immer das selbe druckt? Sondern immer druckt wenn es was zu drucken gibt.
Weil nach dem er das aufgerufen hat : fprintf(Drucker,"%d\n",Logmeldungen);
Soll er nicht mehr drucken,

Jemand eine Ahnung?PixelShader vielleicht ? :-)
danke
 
würde das gehen?

Code:
//Endlosschleife, um die Logfehler zu bekommen
while(true)
{
 if(Logmeldungen !== NULL)
 {
  fprintf(Drucker,"%d\n",Logmeldungen);
  //Variableninhalt  löschen, aber wie,?
 }
 else
 {
  //nichts machen
 }
}
 
//Variableninhalt löschen, aber wie,?
Löschen muss man nicht, nochmal nach oben
du brauchst eine Fehlermeldungquelle... und natuerlich damit er die Fehlercodes untereinander schreibt, ein \n.
So sähe die Schleife aus:

Code:
while(true)
{
  Logfehler = GetError();  // wobei du diese Funktion selber schreibst
  fprintf(Drucker,"%d\n",Logfehler);
}
ich meinte damit, dass DU die Funktion GetError() proggst, die auf einen Fehler wartet, und den Fehlercode dann zurückgibt, sodass der Fehlercode dann in "Logfehler" landet, gedruckt wird, und das Programm dann beim nächsten Aufruf von GetError() hängenbleibt bis wieder ein Fehler kommt.
 
Zurück