Zum Inhalt springen

gugelhupf

Mitglieder
  • Gesamte Inhalte

    482
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von gugelhupf

  1. Aus einer Applikation die bei uns läuft: ///////////////////// Drucken über Netzwerkdrucker //////////////// LOGFONT lf; lf.lfHeight=2100; lf.lfWidth=0; lf.lfEscapement=0; lf.lfOrientation=0; lf.lfWeight=FW_BOLD; lf.lfItalic=FALSE; lf.lfUnderline=FALSE; lf.lfStrikeOut=0; lf.lfCharSet=ANSI_CHARSET; lf.lfOutPrecision=OUT_DEFAULT_PRECIS; lf.lfClipPrecision=CLIP_DEFAULT_PRECIS; lf.lfQuality=DEFAULT_QUALITY; lf.lfPitchAndFamily=DEFAULT_PITCH | FF_SWISS; strcpy(lf.lfFaceName,"Courier New"); HFONT hFont=CreateFontIndirect(&lf); DOCINFO di; HDC ghdc; LPDEVMODE DruckerInfos; HANDLE hPrinter; DWORD wert; /////////////////////////// Rechnername checken ///////////////// char PC_Name[50]; AfxSocketInit(); ::gethostname(PC_Name,50); // Name ist ermittelt if(strcmp(PC_Name,"Versand8")!=0) // prüfen wer wo drucken will { // if(!(OpenPrinter("HP LaserJet 5L",&hPrinter,NULL))) if(!(OpenPrinter("\\\\EXTRA\\395_q.logistik.extra",&hPrinter,NULL))) { MessageBox("Kann Drucker nicht öffnen !"); return; } //wert=DocumentProperties(NULL,hPrinter,"HP LaserJet 5L",NULL,NULL,0); // Schritt eins wert=DocumentProperties(NULL,hPrinter,"\\\\EXTRA\\395_q.logistik.extra",NULL,NULL,0); // Schritt eins DruckerInfos=(LPDEVMODE)malloc(wert); //DocumentProperties(NULL,hPrinter,"HP LaserJet 5L",DruckerInfos,NULL,DM_OUT_BUFFER); // Schritt zwei DocumentProperties(NULL,hPrinter,"\\\\EXTRA\\395_q.logistik.extra",DruckerInfos,NULL,DM_OUT_BUFFER); // Schritt zwei DruckerInfos->dmOrientation=DMORIENT_LANDSCAPE ; //wert=DocumentProperties(NULL,hPrinter,"HP LaserJet 5L",DruckerInfos,DruckerInfos,DM_IN_BUFFER | DM_OUT_BUFFER); wert=DocumentProperties(NULL,hPrinter,"\\\\EXTRA\\395_q.logistik.extra",DruckerInfos,DruckerInfos,DM_IN_BUFFER | DM_OUT_BUFFER); if (wert != IDOK) { /* if failure, cleanup and return failure */ free(DruckerInfos); return ; } ClosePrinter(hPrinter); // if(!(ghdc=CreateDC("HP LaserJet 5L","HP LaserJet 5L","LPT1:",DruckerInfos))) if(!(ghdc=CreateDC("HP LaserJet 2100 Series PCL 6","\\\\EXTRA\\395_q.logistik.extra","\\\\EXTRA\\395_q.logistik.extra",DruckerInfos))) { MessageBox("Fail"); free(DruckerInfos); return ; } di.cbSize = sizeof(DOCINFO); di.lpszDocName = "Palettendruck"; di.lpszOutput = NULL; StartDoc (ghdc, &di); m_strWeNr.Insert(0,"WE "); for(len=0; len<atoi(m_strAnzahl); len++) // Druckanzahl { SaveDC(ghdc); StartPage (ghdc); lf.lfHeight=2100; hFont=CreateFontIndirect(&lf); SelectObject (ghdc, hFont); TextOut(ghdc,1,200,m_strArtnr,m_strArtnr.GetLength()); lf.lfHeight=600; hFont=CreateFontIndirect(&lf); SelectObject (ghdc, hFont); TextOut(ghdc,4200,3500,m_strDatum,m_strDatum.GetLength()); TextOut(ghdc,10,3500,m_strWeNr,m_strWeNr.GetLength()); EndPage (ghdc); RestoreDC(ghdc,-1); } EndDoc(ghdc); DeleteDC (ghdc); ///// !!!!!!!!!!!!!!!! free(DruckerInfos); //////////////////////////////////////////////////////////////////// LANDSCPAE ist soweit ich noch weiss die Einstellung um quer zu drucken...in der MSDN sind alle relevanten Methoden beschrieben....musst halt gucken :-)
  2. Hmmm...ich denke nicht dass der Timeslice beendet wird...wär mal nen Test wert ! Ich dachte mir nur dass der Thread-Ersteller die windows.h wegen des Overheads nicht einbinden wollte. Und nur deshalb mein Posting mit asm.... Spart sich halt dann ein paar Scheibchen kostbaren RAM's
  3. also du kannst do sleep simulieren mit asm: nicht getestet: while(hier deine Taktzeit) { _asm { nop } }
  4. mit der shell weiss ichs net, aber mit der winapi gehts *ggg*
  5. Hallo Leutz ! @Mods: Ich wusste nicht wohin mit diesem Thema, ihr könnts ja verschieben http://www.pms.informatik.uni-muenchen.de/eignungstest/ Das is ein Link zu einem Eignungstest für angehende Informatiker (oder solche die es werden wollen). Die letzte Aufgabe (5min) hat es mir besonders angetan. Ich habs mit binärer Logik versucht, aber komm nich so recht weiter ? Jemand ne Idee ? Ausserdem könnten wir ja auch die anderen Fragen diskutieren ! Hab bis jetzt keine Lösungen im Netz gefunden, deswegen bin ich auf Eure Vorschläge gespannt Viel Spass !
  6. so ohne weiteres nicht zu machen... aber hier http://www.codeguru.com/staticctrl/label_static.zip gibt es eine klasse (von codeguru)
  7. Hallo !! Bin stinkesauer !! Hab gerade mein Abschlusszeugnis von der IHK bekommen, das einigermassen gut ausgefallen ist. Als ich die Mappe durchsah fiel mir auf, dass ich keine Berufsurkunde (Gesellenbrief ?!) mitbekam. Ich möchte mich demnächst bei versch. Firmen bewerben und kann jetzt nur dieses Abschlusszeugnis vorweisen, dass mir bescheinigt die AP für FIAE bestanden zu haben. Also m.E. nach bekommt doch jeder der einen Beruf erlernt hat eine Urkunde in der ihm bescheinigt wird, dass er/sie folgende Berufsbezeichnung hat, oder nicht ??? Was wisst ihr ????
  8. Sorry, musst noch in den Linkereinstellungen winmm.lib miteinbinden....
  9. habs selber nicht compiliert, aber versuchs halt mal: #include <windows.h> #include <stdio.h> #include <winuser.h> #include <mmsystem.h> #include <iostream.h> bool DoOpenCdRom(void); bool DoCloseCdRom(void); // Prototypen int main() { bool rc; char ch; cout << "Oeffne das Laufwerk..." << endl; rc = DoOpenCdRom(); anfang:; printf("Zum Schliessen s druecken: "); ch=getchar(); printf("\n"); if(ch=='s') { cout << "Schliesse es wieder..." << endl; rc = DoCloseCdRom(); } else goto anfang; } bool DoOpenCdRom(void) { char chrRc[256]; char *ptrChrRc = &chrRc[0]; return mciSendString("Set CDAudio Door Open\0",ptrChrRc,256,NULL); } bool DoCloseCdRom(void) { char chrRc[256]; char *ptrChrRc = &chrRc[0]; return mciSendString("Set CDAudio Door Closed\0",ptrChrRc,256,NULL); }
  10. fgets, fgetws Get a string from a stream. char *fgets( char *string, int n, FILE *stream ); wchar_t *fgetws( wchar_t *string, int n, FILE *stream ); Function Required Header Compatibility fgets <stdio.h> ANSI, Win 95, Win NT fgetws <stdio.h> or <wchar.h> ANSI, Win 95, Win NT For additional compatibility information, see Compatibility in the Introduction. Libraries LIBC.LIB Single thread static library, retail version LIBCMT.LIB Multithread static library, retail version MSVCRT.LIB Import library for MSVCRT.DLL, retail version Return Value Each of these functions returns string. NULL is returned to indicate an error or an end-of-file condition. Use feof or ferror to determine whether an error occurred. Parameters string Storage location for data n Maximum number of characters to read stream Pointer to FILE structure Remarks The fgets function reads a string from the input stream argument and stores it in string. fgets reads characters from the current stream position to and including the first newline character, to the end of the stream, or until the number of characters read is equal to n – 1, whichever comes first. The result stored in string is appended with a null character. The newline character, if read, is included in the string. fgets is similar to the gets function; however, gets replaces the newline character with NULL. fgetws is a wide-character version of fgets. fgetws reads the wide-character argument string as a multibyte-character string or a wide-character string according to whether stream is opened in text mode or binary mode, respectively. For more information about using text and binary modes in Unicode and multibyte stream-I/O, see Text and Binary Mode File I/O and Unicode Stream I/O in Text and Binary Modes. Generic-Text Routine Mappings TCHAR.H Routine _UNICODE & _MBCS Not Defined _MBCS Defined _UNICODE Defined _fgetts fgets fgets fgetws Example /* FGETS.C: This program uses fgets to display * a line from a file on the screen. */ #include <stdio.h> void main( void ) { FILE *stream; char line[100]; if( (stream = fopen( "fgets.c", "r" )) != NULL ) { if( fgets( line, 100, stream ) == NULL) printf( "fgets error\n" ); else printf( "%s", line); fclose( stream ); } } Output /* FGETS.C: This program uses fgets to display
  11. ist schon richtig ! ich hab im dezember die prüfung in BW gemacht. also für meinen teil wars echt ok, aber fast alle haben gemosert weil ein UML mit statischen membervariablen und methoden gegeben war. das hatten wir im unterricht nicht und alle die auch noch nie sowas gemacht haben hatten pech :-(( also: der schwierigkeitsgrad war sehr hoch, WENN man nur den schulstoff hergenommen hat....
  12. @Klotzkopp: Richtig, die Methode prüft nur, ob der nächste Schritt ausgeführt werden kann... Damals war keine Zeit mehr dies einzubauen :WD Aber jeder kann sich die SMTP-Spezifikationen durchlesen und die Fehlercodes abfangen.
  13. hmmm...du redest jetzt aber von sockets , gelle ? man kann aber über DCOM auch ohne threads (kommt auf die aufgabe an) kommunizeren...
  14. Da schliesst sich eine Frage meinerseits gleich mit an: Ich hab mir überlegt so eine Kommunikation ebenfalss zu erstellen, wo die Server-Exe als Dienst auf dem Server läuft. Ich hab leider noch nichts darüber gefunden, ob nun eine Socket-Verbindung oder eine DCOM-Verbindung performanter ist. Wer hat Erfahrung mit so etwas ?
  15. Also schön...is zwar eine eigene zusammengeschusterte Methode, aber sie funtz *ggg* BOOL CMontagenVersandView::MailSenden(int nListenIndex) { ////////// Bearbeiter KZ ermitteln //////////////// CString sWemoNr; CString sBetreff; // Betreff sagt aus welche Wemo versandbereit ist CString SQLstr; // über SQL-Statement ermitteln, welcher Bearbeiter gewählt wurde CString MailTo; CString sEmail; // E-Mail-Adresse des Bearbeiters wird hier gespeichert CString sFrom; // Mail von.... CString sDatum; // Datum und Uhrzeit der Mail hier festhalten CString sHeader; // in diesen String kompletten Header schreiben CString sTemp; // temporärer String erzeugen, für weitere Messages an den Server CTime sTime; // String für Zeitangaben des lokalen Systems sWemoNr=m_ctrListe.GetItemText(nListenIndex,0); // WemoNr der gewählten Wemo ///////// E-Mail über die KZ ermitteln //////////// SQLstr="SELECT * FROM [dbo].[MontageDaten] WHERE WemoNr="; SQLstr+=sWemoNr; m_MontageDaten->Open(AFX_DB_USE_DEFAULT_TYPE,SQLstr); SQLstr="SELECT * FROM [dbo].[emailBearbeiter] WHERE KZ="; SQLstr+=m_MontageDaten->m_BeaKz; m_MontageDaten->Close(); sBetreff="Wemo "; // Betreffstring generieren sBetreff+=sWemoNr; sBetreff+=" ist versandbereit !"; m_EMailListe->Open(AFX_DB_USE_DEFAULT_TYPE,SQLstr); sEmail=m_EMailListe->m_EMail ; // Mail-Adresse in String schreiben m_EMailListe->Close(); // Abfrage schliessen ////////////////////////////////////////////////////////////////////////////////// ///////// MAIL GENERIEREN //////////////////// ////////////////////////////////////////////////////////////////////////////////// //////////// alle benötigten Variablen deklarieren //////////// char lokaler_PC[80]; // String für den lokalen Rechnernamen char m_ansbuf[1024]; // Fehlerpuffer für Server deklarieren CString sHello; // Aufrufstring für Mail-Server if(AfxSocketInit()==0) // Sockets initialisieren { MessageBox("Sockets konnten nicht eingerichtet werden ! Evtl. fehlender TCP/IP-Stack!"); return FALSE; // zurück } CSocket m_Server; // erforderliches Socket-Objekt einrichten if(!m_Server.Create()) // Abfragen, ob Objekt erstellt werden konnte { MessageBox("Create des Sockets fehlgeschlagen! Initialisierungsfehler der Sockets !"); // Socket erstellen return FALSE; } if(!m_Server.Connect("192.168.100.10",25)) // unser E-Mail-Server mit Port 25(SMTP) { MessageBox("Connect zu Server fehlgeschlagen! Falsche IP oder Portnummer !"); // Connection aufgerufen m_Server.Close(); return FALSE; } /////////// HALLO MODUL /////////////////////////////// gethostname( lokaler_PC, 80 ); // lokaler PC-Name in String schreiben sHello.Format("HELO %s\r\n", (LPCTSTR)lokaler_PC); m_Server.Send((LPCTSTR)sHello, sHello.GetLength() ); // Hallo senden if(m_Server.Receive(m_ansbuf,1024)==SOCKET_ERROR) // Bestätigung vom Server holen (notwendig !!) { MessageBox("Fehler beim HELO"); m_Server.Close(); return FALSE; } ////////// MAIL FROM MODUL ///////////////////////// sFrom.Format( "MAIL From: <%s>\r\n", "Lager"); // VON m_Server.Send( (LPCTSTR)sFrom, sFrom.GetLength() ); if(m_Server.Receive(m_ansbuf,1024)==SOCKET_ERROR) // { MessageBox("Fehler bei Mail From !"); m_Server.Close(); return FALSE; } ////////// RCPT TO MODUL /////////////////////////////// MailTo.Format("RCPT TO: <%s>\r\n", (LPCTSTR)sEmail ); // AN m_Server.Send( (LPCTSTR)MailTo, MailTo.GetLength() ); if( m_Server.Receive( m_ansbuf, 1024 ) == SOCKET_ERROR ) { MessageBox("Fehler bei RCPT TO !"); m_Server.Close(); return FALSE; } /////////////// DATEN MODUL ////////////////////////// sTemp = "DATA\r\n"; m_Server.Send( (LPCTSTR)sTemp, sTemp.GetLength() ); if( m_Server.Receive( m_ansbuf, 1024 ) == SOCKET_ERROR ) // Datensignal { MessageBox("Fehler bei DATA !"); m_Server.Close(); return FALSE; } //////////// KOPF MODUL ////////////////// sTime=sTime.GetCurrentTime(); // aktuelle Systemzeit ermitteln sDatum=sTime.Format( "%a, %d %b %y %H:%M:%S %Z" ); // Für Server formatieren sHeader.Format( "Date: %s\r\n"\ "From: %s\r\n"\ "To: %s\r\n"\ "Subjekt: %s\r\n"\ "MM-Mailer: <%s>\r\n\r\n", (LPCTSTR)sDatum, (LPCTSTR)sBetreff, (LPCTSTR)MailTo, (LPCTSTR)sWemoNr, "MontageManager Mail" ); m_Server.Send( (LPCTSTR)sHeader, sHeader.GetLength() ); // Kopf senden ///////////// ENDE MODUL ///////////////////////////// sTemp = "\r\n.\r\n"; m_Server.Send( (LPCTSTR)sTemp, sTemp.GetLength() ); if( m_Server.Receive( m_ansbuf, 1024 ) == SOCKET_ERROR ) // Endesignal senden { MessageBox("Error beim END"); m_Server.Close(); return FALSE; } m_Server.Close(); // Socket schliessen return TRUE; // Mail erfolgreich versand ! }
  16. bei mir liegt noch irgendwo verstaubt ne methode, die über sockets e-mails versendet. damit bist du dann unabhängig von irgendwelchen clients , es muss natürlich lediglich der tcp/ip-stack installiert sein. das beispiel greift auf mfc-socket-objekte zurück und ist recht simpel.
  17. gugelhupf

    Extrem C++

    Designerirrtum ?! Ich kann da aus meiner Erfahrung folgendes beisteuern: VERZICHTET AUF MEHRFACHVERERBUNG ! Das ist m.E. nach ein Schlag ins Wasser gewesen. Wer mit Schnittstellen arbeitet der weiss was ich meine. All diese Namenskonventionen in Bezug auf Methoden etc....
  18. richtig ! das bewirkt gar nichts ! was mich wundert ist, dass er das compiliert.... Leere Funktionen sollten m.E. nach so aussehen: void foo() { ; // !!!!!!!!!!!!! } Was das Pogramm sonst so macht können wir Dir nur sagen, wenn mehr Infos herausgibst ! Um was gehts eigentlich ????:confused:
  19. Der Vegleich sollte Schröder gelten und keineswegs auf Hitler bezogen sein...war vielleicht eine etwas drastische Wortwahl ! (womit wir mal wieder sehen was man alles mit Wortwahl und Rhetorik erreichen oder auch zerstören kann)
  20. Ups...sorry für das doppelposting.... Verschon uns bitte mit dem Wort "sachlich". Trotz geschmissenen Psycho-Studiums hab ich noch einiges mitbekommen in Bezug auf Rhetorik. Und es gibt Menschen die können dir ruhig und sachlich und auf eine charmante und sehr überzeugende Art mitteilen dass 1+2=3 ist. Lass Dich nicht blenden, so wie es schon unsere Grossväter geblendet wurden.
  21. Das ist absolut richtig ! Ich bin etz zwar fertiger FIAE, aber i.a. bleiben einem manche Türen (auch wenn man SEHR GUT ist) einfach verschlossen, weil in Deutschland eine sehr hohe "Papiergläubigkeit" herrscht. Diese geht sogar z.T. soweit, dass Leute mit einem Fernstudium weniger Chancen haben, als normale Vollzeit-Dipls. Woran DAS aber liegt entzieht sich meinem Horizont....
  22. Ein heisser Tip : Benutze die Sucufunktion dieses Forums und du kannst zu Deiner Frage wahrscheinlich tagelang Postings lesen Also viel Spass beim Schmökern !

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...