1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121:
| // ValidateSN.cpp // //*************************************************************************************** // Beinhaltete Header Dateien //***************************************************************************************
#include "stdafx.h" #include <tchar.h> #include <stdlib.h> #include "sn_variablen.h"
BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { return TRUE; }
LONG WINAPI ValidateSN(HWND hwnd, LPSTR szSrcDir, LPSTR szSupport, LPSTR szSerialNum, LPSTR szDbase) { //*************************************************************************************** // Sichern der Seriennummer in einem eindimmensionalen Feld //*************************************************************************************** TCHAR sn_temporaer[25]; // Temporäres eindimmensionales Feld für die SN deklarieren _tcscpy(sn_temporaer, szSerialNum); // kopieren der einzelnen Teile der SN in das Array //*************************************************************************************** // Aufschlüsseln der SN in einzelne Felder. Die Felder sind getrennt // durch Kennzeichen '-'. // 32 Bit Pointer zeigt auf den Anfang der String- Felder //*************************************************************************************** LPSTR sn_feld1 = _tcstok( sn_temporaer, trennzeichen ); // Erstes SN- Feld mit String- Werten LPSTR sn_feld2 = _tcstok( NULL, trennzeichen ); // Zweites SN- Feld mit Integer- Werten LPSTR sn_feld3 = _tcstok( NULL, trennzeichen ); // Drittes SN- Feld mit Sring- Werten
//*************************************************************************************** // Überprüfen der drei Einzelfelder der SN auf ihre Gültigkeit durch Aufruf der // Überprüfungs- Funktionen //*************************************************************************************** // Variable sn_Feld1 wird an Funktion Übergeben und der Rückgabewert löst bei // UNGLEICHHEIT eine Messagebox im Installshield aus. if (feld_ueberpruefung1(sn_feld1) != ueberpruefung_erfolg) { MessageBox(GetFocus(), "Ungültige Seriennummer", "Warnung", MB_OK|MB_SYSTEMMODAL|MB_ICONWARNING);
// MB_OK: Messagebox mit OK-Button // MB_ICONWARNING: Fenster mit Ausrufezeichen und Text Warnung und Ungültige SN // MB_SYSTEMMODAL: Alle Anwendungen werden gestoppt, bis User Meldung quittiert // Außerdem bekommt das erscheinende Fenster den Focus auf den OK- Button return ueberpruefung_misslungen;
} //********************************************************************************************* else if (feld_ueberpruefung2(sn_feld2) != ueberpruefung_erfolg) { MessageBox(GetFocus(), "Ungültige Seriennummer", "Warnung", MB_OK|MB_SYSTEMMODAL|MB_ICONWARNING); return ueberpruefung_misslungen;
} //********************************************************************************************* else if (feld_ueberpruefung3(sn_feld3) != ueberpruefung_erfolg) { MessageBox(GetFocus(), "Ungültige Seriennummer", "Warnung", MB_OK|MB_SYSTEMMODAL|MB_ICONWARNING); return ueberpruefung_misslungen; } else return ueberpruefung_erfolg; }
//********************************************************************************************* // Funktion feld_ueberpruefung1 //********************************************************************************************* // Vergleich ob Seriennummer im Feld 1 der Angabe in der Header Datei entspricht // => 'ABTGSR'
LONG feld_ueberpruefung1(LPSTR sn_feld1) // deklaration der Funktion und Übergabe des Pointers { // Im ersten Feld muss der String 'ABTGSR' vorhanden sein if (0 == _tcsicmp(sn_feld1, seriennummer_feld1)) // Vergleich auf Übereinstimmung return ueberpruefung_erfolg; else return ueberpruefung_misslungen; }
//********************************************************************************************* // Funktion feld_ueberpruefung2 //*********************************************************************************************
LONG feld_ueberpruefung2(LPSTR sn_feld2) {
long lNumToValidate = atoi (sn_feld2);
// Im zweite Feld muss einen Wert enthalten, der ein vielfaches von 5 ist if ((lNumToValidate % 5) == 0) return ueberpruefung_erfolg; else return ueberpruefung_misslungen; }
//********************************************************************************************* // Funktion feld_ueberpruefung3 //********************************************************************************************* // Vergleich ob Seriennummer im Feld 2 der Angabe in der Header Datei entspricht // => SCHREINERX
LONG feld_ueberpruefung3(LPSTR sn_feld3) // deklaration der Funktion und Übergabe { // Im dritten Feld muss der String 'SCHREINERX' vorhanden sein if (0 == _tcsicmp(sn_feld3, seriennummer_feld3)) // Vergleich auf Übereinstimmung return ueberpruefung_erfolg; else return ueberpruefung_misslungen;
} |