home *** CD-ROM | disk | FTP | other *** search
/ The Best of Mecomp Multimedia 1 / Mecomp-CD.iso / amiga / tools / misc / videotext5.41 / src / convert.p < prev    next >
Encoding:
Text File  |  1996-08-21  |  3.7 KB  |  128 lines

  1. PROGRAM convert;
  2. { primitives CLI-Tool, das VT.config/VT2.config in das neue System }
  3. { aus ".stations" und vielen Einzeldateien zerlegt }
  4.  
  5. TYPE str80 = String[80];
  6. VAR cfgfile,stnfile,prsfile: Text;
  7.     zeile,s: str80;
  8.     i,lauf: Integer;
  9.     is_header,copying: Boolean;
  10.  
  11. PROCEDURE civilize(s: str80; VAR s2: str80;);
  12. { String als DOS-Namen tauglich machen }
  13. VAR i,k,l: Integer;
  14.     sonder: String[8];
  15.     uebers: String[15];
  16. BEGIN
  17.   sonder := '{|}[\]~'; uebers := 'aeoeueAEOEUEss';
  18.   i := 1; k := 1;
  19.   REPEAT
  20.     CASE s[i] OF
  21.       ' ': s2[k] := '_'; { Leerzeichen }
  22.       '/',':': s2[k] := '-'; { Verzeichnis-Begrenzer }
  23.       OTHERWISE s2[k] := s[i];
  24.     END;
  25.     l := Pos(s[i],sonder);
  26.     IF l>0 THEN BEGIN
  27.       s2[k] := uebers[2*l-1]; Inc(k); s2[k] := uebers[2*l];
  28.     END;
  29.     Inc(i); Inc(k);
  30.   UNTIL s[i] = #0;
  31.   s2[k] := #0;
  32. END;
  33.  
  34. PROCEDURE name2dosname(s: str80; VAR s2: str80;);
  35. { ähnlich civilize, benutzt aber die ".stations"-Liste }
  36. VAR zeile: str80;
  37.     i,l: Integer;
  38. BEGIN
  39.   Seek(stnfile,0); s2 := '';
  40.   WHILE NOT EoF(stnfile) DO BEGIN
  41.     ReadLn(stnfile,zeile); i := Pos('=',zeile);
  42.     IF i>1 THEN IF Copy(zeile,1,i-1)=s THEN BEGIN
  43.       l := Length(zeile); WHILE l>0 DO BEGIN
  44.         IF zeile[l]=' ' THEN zeile[l] := #0 ELSE l := 1;
  45.         Dec(l);
  46.       END;
  47.       l := Length(zeile);
  48.       s2 := Copy(zeile,i+1,l-i);
  49.     END;
  50.   END;
  51. END;
  52.  
  53. BEGIN
  54.   Reset(cfgfile,'VT.config');
  55.   IF IOResult<>0 THEN BEGIN
  56.     WriteLn('"VT.config" nicht gefunden');
  57.     Exit;
  58.   END;
  59.   Reset(stnfile,'.stations');
  60.   IF IOResult<>0 THEN BEGIN
  61.     Write('Erster Durchgang: erstelle ".stations"-Datei ... ');
  62.     ReWrite(stnfile,'.stations');
  63.     is_header := True;
  64.     WHILE NOT EoF(cfgfile) DO BEGIN
  65.       ReadLn(cfgfile,zeile);
  66.       IF zeile='' THEN
  67.         is_header := True { auf eine Leerzeile folgt ein Titel }
  68.       ELSE IF is_header THEN BEGIN
  69.         civilize(zeile, s);
  70.         WriteLn(stnfile,zeile,'=',s);
  71.         is_header := False;
  72.       END;
  73.     END;
  74.     Close(cfgfile); Close(stnfile);
  75.     WriteLn('fertig.'); WriteLn;
  76.     WriteLn('Sie sollten die ".stations"-Datei jetzt manuell überarbeiten (und z. B.');
  77.     WriteLn('Eintraege wie "PRO SIEBEN=PRO_SIEBEN" in "PRO SIEBEN=Pro7" abändern, s.');
  78.     WriteLn('Anleitung) und können "convert" danach für den zweiten Durchgang starten.');
  79.   END ELSE BEGIN
  80.     WriteLn('Zweiter Durchgang: erstelle Sender-Dateien ...');
  81.     FOR lauf := 1 TO 2 DO BEGIN
  82.       IF lauf=1 THEN
  83.         WriteLn('VT.config ...')
  84.       ELSE BEGIN
  85.         Reset(cfgfile,'VT2.config');
  86.         IF IOResult<>0 THEN BEGIN
  87.           WriteLn('Hm, "VT2.config" nicht gefunden.');
  88.           Exit;
  89.         END ELSE
  90.           WriteLn('VT2.config ...');
  91.       END;
  92.       is_header := True; copying := False;
  93.       WHILE NOT EoF(cfgfile) DO BEGIN
  94.         ReadLn(cfgfile,zeile);
  95.         i := Length(zeile); WHILE i>0 DO BEGIN
  96.           IF zeile[i]=' ' THEN zeile[i] := #0 ELSE i := 1;
  97.           Dec(i);
  98.         END;
  99.         IF zeile='' THEN BEGIN
  100.           is_header := True { auf eine Leerzeile folgt ein Titel }
  101.           IF copying THEN Close(prsfile);
  102.           copying := False;
  103.         END ELSE IF is_header THEN BEGIN
  104.           name2dosname(zeile, s);
  105.           IF s='' THEN
  106.             WriteLn('Warnung: kein ".stations"-Eintrag für "',zeile,'"')
  107.           ELSE BEGIN
  108.             copying := True;
  109.             IF lauf=1 THEN
  110.               ReWrite(prsfile,s)
  111.             ELSE BEGIN
  112.               Reset(prsfile,s)
  113.               Seek(prsfile,FileSize(prsfile));
  114.               WriteLn(prsfile);
  115.             END;
  116.           END;
  117.           is_header := False;
  118.         END ELSE IF copying THEN
  119.           WriteLn(prsfile,zeile);
  120.       END;
  121.       Close(cfgfile);
  122.     END;
  123.     Close(stnfile);
  124.     WriteLn; WriteLn('Fertig. Das war''s.');
  125.   END;
  126. END.
  127.  
  128.