File: INCLUDE\PROTOCOL\TProtocol.h

    1 //******************************************************************************
    2 //Datei     : TProtocol.h
    3 //Projekt   : XCTL
    4 //Subsystem : Protokollbuch
    5 //Autor     : Jens Klier <klier@informatik.hu-berlin.de>
    6 //            Institut fuer Informatik,
    7 //            Humboldt-Universitaet Berlin
    8 //Inhalt    : Interface der Klasse TProtocol
    9 //******************************************************************************
   10 //!neu klier Protokollbuch
   11 #ifndef _TPROTOCOL_H
   12 #define _TPROTOCOL_H
   13 
   14 #define MaxLine 1024
   15 #define MaxLfdNr 15
   16 #define MaxDate  15
   17 #define MaxParameterString 161
   18 
   19 class TProtocol
   20 {
   21 public:
   22         TProtocol( int );
   23         ~TProtocol( void );
   24 
   25         // Initialisiert das Protokollbuch
   26         BOOL Initialize( void );
   27 
   28         // Initialisiert das Protokollbuch neu
   29         BOOL ReloadProtocol( void );
   30 
   31         // ist TRUE wenn eine Messung aufgezeichnet wird
   32         void SetProtocolOn( BOOL= TRUE );
   33 
   34         // liefert den Status ob eine Messung aufgezeichnet wird
   35         BOOL IsProtocolOn( void );
   36 
   37         // ändert den Status eine Messung die aufgezeichnet wird
   38         void ChangeProtocolOnStatus( void );
   39 
   40         // liefert den Status eine Messung die aufgezeichnet wird
   41         BOOL IsProtocolOnBegin( void );
   42 
   43         // Methoden zur Bearbeitung der Protokollparameter ----------------------------
   44 
   45         // Setzt den aktuellen Index auf NULL
   46         void ResetIndex( void );
   47 
   48         BOOL InitializeSearchProtocolString( LPCSTR );
   49 
   50         // sucht einen Protokollstring anhand der Lfd.-Nr. im Protokollindex
   51         // wird die Lfd.-Nr. gefunden liefert die Methode TRUE zurueck
   52         BOOL SearchProtocolString( LPCSTR );
   53 
   54         // loescht alle Felder des Parameterfeldes
   55         void ClearProtocolString( void );
   56 
   57         // loescht alle Felder von a bis b des Parameterfeldes
   58         void ClearProtocolString( int , int );
   59 
   60         // loescht alle Felder des Parameterfeldes und die Skizze
   61         void NewProtocolString( void );
   62 
   63         // loescht einige Felder des Parameterfeldes
   64         void CopyProtocolString( LPCSTR= NULL );
   65 
   66         // laed einen Protokollstring aus der Protokolldatei und fuelt das Parameterfeld
   67         // mit den entspraechenden Parametern
   68         BOOL LoadProtocolString( long );
   69         int LoadProtocolString( LPCSTR );
   70         int ReloadProtocolString( LPCSTR );
   71 
   72         // laed den naechsen Protokollstring aus der Protokolldatei und fuelt das
   73         // Parameterfeld mit den entspraechenden Parametern
   74         int LoadNextProtocolString( void );
   75 
   76         // laed den vorherigen Protokollstring aus der Protokolldatei und fuelt das
   77         // Parameterfeld mit den entspraechenden Parametern
   78         int LoadLastProtocolString( void );
   79 
   80         // speichert einen Protokollstring in der Protokolldatei
   81         BOOL SaveProtocolString( void );
   82 
   83         // speichert einen Protokollstring in der Protokolldatei
   84         BOOL ImportProtocolFile( void );
   85 
   86         // macht aus dem Systemdatum einen String
   87         LPSTR GetSysDate( LPSTR );
   88 
   89         // Prueft eine Zeichenkette ob sie ein gueltiges Datum enthaelt
   90         BOOL TestDate( LPCSTR );
   91 
   92         // der Wert eines Protokollparameters wird in das Protokollparameterfeld eingetragen
   93         LPSTR GetProtocolValue( int, LPSTR );
   94 
   95         // der Wert eines Protokollparameters wird aus dem Protokollparameterfeld ausgelesen
   96         BOOL SetProtocolValue( int, LPCSTR );
   97 
   98         // ist TRUE wenn die Protokolldatei leer ist
   99         BOOL IsEmptyProtocolFile( void );
  100 
  101         // ist TRUE wenn der aktuelle Protokollstring der Erste in der Protokolldatei ist
  102         BOOL IsFirstProtocolString( void );
  103 
  104         BOOL IsLastProtocolString( void );
  105 
  106         BOOL IsNewProtocolString( void );
  107 
  108         // die Variable für die aktuelle Lfd.Nr. wird gesetzt
  109         void SetLfdNr( LPCSTR );
  110 
  111         // die Variable für die aktuelle Lfd.Nr. wird ausgelesen
  112         LPSTR GetLfdNr( LPSTR );
  113 
  114         // speichert den aktuellen ProtokollDialog in einer Variable
  115         void SetCurrentDlg( int );
  116 
  117         // gibt den aktuellen Protokolldialog aus einer Variable zurück
  118         int GetCurrentDlg( void );
  119 
  120         // liefert den Namen eines Protokollparamerters zurück
  121         LPSTR GetParameterNamen( int, LPSTR );
  122 
  123         // liefert die maximale Länge eines Protokollparamerters zurück
  124         int GetParameterMaxLen( int );
  125 
  126         // liefert den Status eines Protokollparamerters
  127         BOOL IsParameterReadOnly( int );
  128 
  129         // setzt den Status eines Protokollparamerters
  130         void SetParameterReadOnly( int );
  131 
  132         // setzt den Status eines Protokollparamerters
  133         void SetParameterReadWrite( int );
  134 
  135         // liefert den Status des aktuellen Protokollstrings
  136         BOOL IsProtocolReadOnly( void );
  137 
  138         // setzt den Status des aktuellen Protokollstrings readonly
  139         void SetProtocolReadOnly( void );
  140 
  141         // liefert den Status des aktuellen Protokollstrings
  142         BOOL IsProtocolDelete( void );
  143 
  144         // setzt den Status des aktuellen Protokollstrings delete
  145         void SetProtocolDelete( void );
  146 
  147         void SetAllParameterReadWrite( void );
  148 
  149         void SetAllParameterReadOnly( void );
  150 
  151         LPCSTR GetProtocolSection( void );
  152         BOOL IsProtocolSortDate( void );
  153         void SetProtocolSortDate( BOOL );
  154         BOOL IsProtocolNoSortNew( void );
  155         void SetProtocolNoSortNew( BOOL );
  156 
  157         // virtuelle Methode die erst in der Abgeleiteten Klasse definiert wird -------
  158 
  159         virtual BOOL IsMaxLfdNr( void )= 0;
  160         virtual BOOL TestLfdNr( LPCSTR )= 0;
  161         virtual void SaveLfdNr( LPCSTR )= 0;
  162         virtual LPSTR GetParameterLfdNr( LPSTR )= 0;
  163         virtual LPSTR GetParameterDate( LPSTR )= 0;
  164         virtual void SetParameterDate( LPCSTR )= 0;
  165         virtual LPSTR GetNewLfdNr( LPSTR )= 0;
  166         virtual void SetOnDefaultParameterReadOnly( void )= 0;
  167         virtual void SetDefaultParameterReadOnly( void )= 0;
  168         virtual void InitializeDefaultParameter( void )= 0;
  169         virtual void SetDefaultParameter( void )= 0;
  170         virtual void ClearOldParameter( void )= 0;
  171 
  172         virtual LPCSTR GetPBackupDirectory( void )= 0;
  173         virtual BOOL SetPBackupDirectory( LPCSTR )= 0;
  174         virtual LPCSTR GetPFile( void )= 0;
  175         virtual BOOL SetPFile( LPCSTR )= 0;
  176         virtual LPCSTR GetPName( void )= 0;
  177         virtual LPCSTR GetPDirectory( void )= 0;
  178 
  179         //Methoden zur Bearbeitung der Bilddateidaten ---------------------------------
  180 
  181         // der dynamische Speicher für die Bildpunkte einer Skizze wird freigegeben
  182         void freePic();
  183 
  184         // die Variable für den aktuellen Bildpunkt einer Skizze wird auf den ersten Bildpunkt gesetzt
  185         void ResetXY();
  186 
  187         // liefert einen Bildpunkt einer Skizze zurück
  188         // ist der letzte Bildpunkt erreicht wird der Rückgabewert der Funktion FALSE
  189         BOOL GetXY( char &c, int &x, int &y, LPSTR t );
  190 
  191         // belegt neuen dynamischen Speicher für einen Bildpunkt einer Skizze und
  192         // initialisiert ihn mit den Wert eines Bildpunktes
  193         void SetXY( char, int, int, LPCSTR= "" );
  194 
  195         // loescht die letzten Bildpunkt einer Skizze
  196         BOOL UndoXY( void );
  197 
  198         // liest alle Bildpunkte einer Skizze aus einer Datei in den dynamischen Speicher
  199         // die Bildpunkte werden in einer verketteten Liste gespeichert
  200         BOOL LoadPicFile( LPCSTR );
  201 
  202         // speichert alle Bildpunkte einer Skizze in einer Datei ab
  203         BOOL SavePicFile( void );
  204 
  205         // löscht eine Bilddatei und gibt den Speicher für die Bildpunkte frei
  206         void DeletePicFile( LPCSTR );
  207 
  208 protected:
  209         // Methoden zur Bearbeitung der Protokollparameter ----------------------------
  210 
  211         // Zerlegt den eingelesenen Protokollstring und traegt die Parameter in das
  212         // Parameterfeld ein (Hochkomma am Anfang und am Ende eines Wertes werden entfernt)
  213         BOOL StrSplit( LPCSTR );
  214 
  215         // Erzeugt aus dem Parameterfeld einen Protokollstring
  216         // Enthaelt ein Parameter das Trennzeichen wird er in Hochkomma eingeschlossen
  217         LPSTR StrMerge( LPSTR );
  218 
  219         // Erzeugt aus einem Datum einen speziellen String fuer die Suche in der Protokolldatei
  220         // 20.4.1999 -->  19990420
  221         LPSTR MakeDateString( LPCSTR, LPSTR );
  222 
  223         // Erzeugt eine Backupkopie einer Datei
  224         BOOL BackupFile( LPCSTR, LPCSTR );
  225 
  226         // Sortiert die Protokolldatei, wenn sie nicht sortiert ist (bIsSort),
  227         // liefert TRUE wenn die Datei sortiert ist oder werden konnte
  228         // bIsSort wird von LoadProtocolFileIndex() oder AppendProtocolFileIndex() gesetzt
  229         BOOL SortProtocolFile( void );
  230 
  231         // Erzeugt aus der Protokolldatei einen Index im Speicher
  232         // Die Lfd.-Nr. und die Position des Datensatzes innerhalb der Datei werden
  233         // als Index im Speicher abgelegt.
  234         // setzt die Variable bIsSort auf FALSE, wenn die Datei nicht sortiert ist
  235         BOOL LoadProtocolFileIndex( LPCSTR= "" );
  236         BOOL AppendProtocolFileIndex( void );
  237 
  238         // Erzeugt aus einer Lfd.Nr. einen Namen für eine Bilddatei (PATH + Dateiname)
  239         LPSTR GetSkizzeFile( LPCSTR );
  240 
  241         // Erzeugt aus einer Lfd.Nr. einen Namen für eine Bildbackupdatei (PATH + Dateiname)
  242         LPSTR GetSkizzeBackupFile( LPCSTR );
  243 
  244         // Erzeugt einen Protokolldateinamen (PATH + Dateiname) aus mehreren Namensbestandteilen
  245         LPSTR GetProtocolFile( LPCSTR, LPCSTR= "", LPCSTR= "" );
  246 
  247         // Erzeugt einen Protokollbackupdateinamen (PATH + Dateiname) aus mehreren Namensbestandteilen
  248         LPSTR GetProtocolBackupFile( LPCSTR, LPCSTR= "", LPCSTR= "" );
  249 
  250         // Loescht den Index und gibt den Speicher frei
  251         void freeINDEX( LPCSTR= "" );
  252 
  253         // Variablen und Typen --------------------------------------------------------
  254 
  255         struct TParameter
  256         {
  257                 char Wert[MaxParameterString];   // Wert des Parameters
  258                 char Name[30];                   // Name des Parameters
  259                 int MaxLen;                     // Maximale Länge des Parameters
  260                 int Status;                     // Status des Parameters (ReadWrite oder ReadOnly)
  261         }
  262         *Parameter;
  263 
  264         int Felder;                         //Felder entspricht der Anzahl der Parameter eines Protokollbucheintrages
  265         char CurrentLfdNr[MaxLfdNr];         // aktuelle Lfd.-Nr.
  266         char CopyLfdNr[MaxLfdNr];            // letzte kopierte Lfd.-Nr.
  267         int CurrentDlg;                     // aktueller Dialog
  268         char szProtocolFile[_MAX_PATH];        // Protokolldateiname
  269         char szProtocolSection[MaxString];   // Sektionsname in der INI-Datei
  270 
  271         struct TFileIndex
  272         {
  273                 int Nr;                  // Nummer des Protokollbucheintrages
  274                 long Pos;                 // Absolute Position innerhalb der Protokolldatei
  275                 char LfdNr[MaxLfdNr];     // Lfd.-Nr. des Protokollbucheintrages
  276                 char Date[MaxDate];       // Datum des Protokollbucheintrages
  277                 int Status;              // Status des Protokollbucheintrages (ReadWrite oder ReadOnly)
  278                 struct TFileIndex *last;  // Zeiger auf den vorherigen Protokollbucheintrag
  279                 struct TFileIndex *next;  // Zeiger auf den nächsten Protokollbucheintrag
  280         }
  281         *firstINDEX, *lastINDEX, *currentINDEX;
  282 
  283         struct TMFPoint
  284         {
  285                 char c;                   // Symbol für eine Zeichenfunktion (M, L oder T)
  286                 int x, y;                 // Koordinate für eine Zeichenfunktion
  287                 char t[MaxString / 4];      // Text der ausgegeben werden soll
  288                 struct TMFPoint *last;    // Zeiger auf die vorherige Zeichenfunktion
  289                 struct TMFPoint *next;    // Zeiger auf die nächste Zeichenfunktion
  290         }
  291         *firstPOINT, *lastPOINT, *currentPOINT;
  292 
  293         BOOL bActiv, bIsSortLfdNr, bIsSortDate, bNoSortNew, bSortDate, bDebug;
  294         int iSearch, iProtocolOnStatus;
  295 
  296         // Sortiert den Protokolldateiindex
  297         void QuickSortFileIndex( TFileIndex *, TFileIndex *, int );
  298 
  299         enum TStatus {ReadWrite= 0, ReadOnly, Deleted};
  300         enum TOnStatus {Off= 0, On, Begin= 1};
  301 };
  302 
  303 #endif //ndef _TPROTOCOL_H
  304 
  305 // LastLine
  306 
  307