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