Archived
1
0
This repository has been archived on 2025-03-31. You can view files and clone it, but cannot push or open issues or pull requests.
pascal/Terranet/STRIPHTM.PAS
2001-11-30 12:14:44 +01:00

178 lines
4.4 KiB
Plaintext
Raw Permalink Blame History

program StripHTML;
uses ColWrite,LinStat,Crt;
const StripBegin='<';
StripEnd='>';
var OutF, InF: text;
OutFN, InFN: string;
choice: char;
OutFM: byte;
tmp: string;
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),' <Dateiname>');
TextColor(7);
WriteLn;
WriteLn('<Dateiname> ist der Dateiname OHNE ENDUNG. Die Eingabedatei muá auf .HTM');
WriteLn('enden und die Ausgabedatei wird auf .TXT enden.');
WriteLn;
CWrite('Beispiel: %%15#');
Write(ParamStr(0));
CWriteLn(' CHATLOG%%7#');
WriteLn;
WriteLn(' Entfernt alle HTML-Tags aus CHATLOG.HTM und speichert das Ergebnis');
WriteLn(' in der Datei CHATLOG.TXT.');
Halt;
end;
procedure FileIError(EC: integer);
begin
Wcheck('%%140#fail');
WriteLn;
TextColor(12);
WriteLn('Der Fehler ',EC,' trat w„hrend des Versuches, die Datei ''',InFN,''' 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 dr<64>cken Sie eine Taste +=-');
TextColor(8);
ReadKey;
Halt;
end;
procedure Init;
begin
ClrScr;
CWriteLn('%%14,1# -=+ StripHTML +=- %%7,0#');
WriteLn;
WStat('Parameter testen');
if ParamCount=0 then Abort('HELP');
if ((ParamStr(1)='/?') OR (ParamStr(1)='-?')) then Abort('HELP');
if ParamCount>1 then Abort('Zu viele Parameter angegeben - nur 1 ben”tigt!');
Wcheck('%%10# OK ');
WStat('Vervollst„ndige Dateinamen');
OutFN := ParamStr(1)+'.txt';
InFN := ParamStr(1)+'.htm';
Wcheck('%%10# OK ');
WStat('Dateivariablen zuweisen');
Assign(InF,InFN);
Assign(OutF,OutFN);
Wcheck('%%10# OK ');
WStat('Pr<50>fe Eingabedatei');
{$I-} Reset(InF); {$I+}
if IOResult<>0 then FileIError(IOResult);
Close(InF);
Wcheck('%%10# OK ');
WStat('Pr<50>fe Ausgabedatei');
{$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 den Vorgang a[b]brechen (U/A/b) ? ');
choice := ReadKey;
Window(1,8,80,11);
ClrScr;
Window(1,1,80,25);
GotoXY(1,8);
case choice of
'a','A': OutFM := 1;
'u','U': OutFM := 2;
'b','B': begin
WriteLn;
WriteLn('Bitte geben Sie eine andere Datei an, oder bennen die momentane um.');
Halt;
end;
end;
end else begin
Wcheck('%%10# OK ');
end;
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#DELE');
end;
0: begin
Rewrite(OutF);
Wcheck('%%10# OK ');
end;
end;
end;
procedure CloseIO;
begin
WStat('Eingabedatei schlieáen');
Close(InF);
Wcheck('%%10# OK ');
WStat('Ausgabedatei schlieáen');
Close(OutF);
Wcheck('%%10# OK ');
end;
procedure Strip(var tmp: string);
var i,j: integer;
last: integer;
temp: string;
begin
temp := '';
last := 1;
for i:=1 to Length(tmp) do begin
if Copy(tmp,i,1)=StripBegin then begin
temp:=temp+Copy(tmp,last,i-last);
for j:=i to Length(tmp) do begin
if Copy(tmp,j,1)=StripEnd then begin
last := j+1;
break;
end;
end;
end;
end;
temp := temp+Copy(tmp,last,Length(tmp)-last+1);
tmp := temp;
end;
begin
Init;
OpenIO;
WStat('Entferne Daten zwischen '''+StripBegin+''' und '''+StripEnd+'''');
while NOT Eof(InF) do begin
ReadLn(InF,tmp);
Strip(tmp);
WriteLn(OutF,tmp);
end;
Wcheck('%%10# OK ');
CloseIO;
end.