program SumItUp; { This program will do the following: ( Uses Terranet-Chat-files in HTML or Plain Text) 1. Count the chatter, who speak and shows her names. 2. Count the chatter at all. 3. Count the statements per chatter 4. Average length of statements (in words) 5. Count used "Smileys" 6. Count used "actions" (everything between 2 *s) } (* Program copyright by Markus Birth *) uses Crt,VFx; var InF: text; OutF: text; NamF: text; OutFM: integer; choice: char; tmp: string; act,act2: byte; procedure Abort(errmsg: string); begin Wcheck('%%140#fail'); WriteLn; if errmsg<>'HELP' then begin TextColor(12+blink); Write('FEHLER: '); TextColor(12); WriteLn(errmsg); end; TextColor(15); WriteLn; WriteLn('Syntax: ',ParamStr(0),' '); TextColor(7); WriteLn; WriteLn(' ist die Datei, die das Chat-Log enth„lt. Vorzugsweise sollte'); WriteLn('diese Datei im "Plain Text"-Format sein.'); WriteLn; WriteLn(' ist die Ausgangs-Datei, in der schlieálich die Statistik-'); WriteLn('Informationen enthalten sein sollen. Das Ausgabeformat fr die Statistik ist'); WriteLn('HTML und kann somit mit jedem Browser betrachtet werden.'); WriteLn; Halt; end; procedure FileIError(EC: integer); begin Wcheck('%%140#fail'); WriteLn; TextColor(12); WriteLn('Der Fehler ',EC,' trat w„hrend des Versuches, die Datei ''',ParamStr(1),''' zu'); WriteLn('”ffnen, auf.'); WriteLn; CWriteLn('%%7#M”gliche Fehlerursachen: ùDateiname/Pfadangabe falsch geschrieben'); WriteLn(' ùDatei wird gerade von anderer Anwendung benutzt'); WriteLn(' ùkurzer Dateiname entspricht nicht den Anfangs-'); WriteLn(' buchstaben des LFNs'); WriteLn(' ùDatei befindet sich nicht im aktuellen Verzeichnis'); WriteLn; CWriteLn('%%14#-=+ Bitte drcken Sie eine Taste +=-'); TextColor(8); ReadKey; Halt; end; procedure Init; begin OutFM:=0; TextBackground(0); ClrScr; TextColor(11); TextBackground(1); Write('-=+ Chat - Auswertung +=-'); TextBackground(0); TextColor(8); WriteLn(' Copyright (c)1998 by Markus Birth '); TextColor(7); WriteLn; WStat('Parameter testen'); if ParamCount=0 then Abort('HELP'); if ((ParamStr(1)='/?') OR (ParamStr(1)='-?')) then Abort('HELP'); if ParamCount<2 then Abort('Zu wenig Parameter angegeben!'); Wcheck('%%10# OK '); WStat('Dateivariablen zuweisen'); Assign(InF,ParamStr(1)); Assign(OutF,ParamStr(2)); Wcheck('%%10# OK '); WStat('Eingabedatei prfen'); {$I-} Reset(InF); {$I+} if IOResult<>0 then FileIError(IOResult); Close(InF); Wcheck('%%10# OK '); WStat('Ausgabedatei prfen'); {$I-} Reset(OutF); {$I+} if IOResult=0 then begin Wcheck('%%14#WARN'); Close(OutF); WriteLn; CWriteLn('%%12#Die Ausgabedatei existiert schon!%%7#'); WriteLn('M”chten Sie die Ausgabedatei [U]eberschreiben, die neuen Daten'); Write('an sie [A]nh„ngen oder a[b]brechen (U/A/b) ? '); choice := ReadKey; Window(1,7,80,10); ClrScr; Window(1,1,80,25); GotoXY(1,7); case choice of 'a','A': OutFM := 1; 'u','U': OutFM := 2; 'b','B': begin WriteLn; WriteLn('Bitte geben Sie eine andere Ausgabedatei an, oder bennen die momentane um.'); Halt; end; end; end else begin Wcheck('%%10# OK '); end; WStat('Tempor„rdateien erzeugen'); Assign(NamF,'names.dat'); Rewrite(NamF); Wcheck('%%10# OK '); CursorOff; end; procedure OpenIO; begin WStat('Eingabedatei ”ffnen'); Reset(InF); Wcheck('%%10# OK '); WStat('Ausgabedatei ”ffnen'); case OutFM of 1: begin Append(OutF); Wcheck('%%14#APPD'); end; 2: begin Rewrite(OutF); Wcheck('%%12#CLRD'); end; 0: begin Rewrite(OutF); Wcheck('%%10# OK '); end; end; WStat('Header erstellen'); WriteLn(OutF,''); WriteLn(OutF,''); WriteLn(OutF,'