home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------ *)
- (* ARRAY.PAS *)
- (* Konvertiert die Listen der Buchstabenkombinationen *)
- (* und Wortfragmente für die Trennhilfe in typisierte *)
- (* ARRAYs OF CHAR und schreibt sie als FRAGMENT.INC *)
- (* auf Datenträger *)
- (* *)
- (* (C) 1989 Matthias Uphoff & TOOLBOX *)
- (* *)
- (* ------------------------------------------------------ *)
-
- USES Crt,Turbo3; (* Für Turbo 3.0 auskommentieren *)
-
- Type Str127 = String[127];
-
- Var Temp: Array[0..999] of Char;
- i,
- count: Integer;
- ArrayName,
- QuellName,
- Zeile: Str127;
- Quelle,
- Ziel: Text;
-
-
- (* ------------------------------------------------------ *)
- (* Erzeugt die Deklaration eines ARRAYs, ergänzt die *)
- (* Zeichen aus Temp durch Hochkommata und Kommas und *)
- (* schreibt das Ganze als Text in die Ausgabedatei *)
- (* ------------------------------------------------------ *)
-
- Procedure ArrayText;
- var s: Str127;
- i: Integer;
-
- begin
- if (count > 0) and (ArrayName <> '') then begin
- str(count,s); (* Zahl -> String *)
- Writeln(Ziel,ArrayName+': ARRAY[0..'+s+'] OF CHAR =');
- s := ' (';
- for i := 0 to count-1 do begin
- if Length(s) > 75 then begin
- Writeln(Ziel,s); (* Zeile wegschreiben *)
- s := ' '; (* Blanks für Einrücken vorgeben *)
- end;
- s := s+#39+Temp[i]+#39+','; (* #39 = Hochkomma *)
- end;
- s := s + '#255);'; (* #255 als Endmarkierung *)
- Writeln(Ziel,s); (* letzte Zeile wegschreiben *)
- Writeln(Ziel); (* und noch eine Leerzeile *)
- end;
- end;
-
-
- (* ------------------------ Main ------------------------ *)
-
- begin
- ClrScr;
- Write('Name der Fragmentdatei: ');
- ReadLn(QuellName);
- Assign(Quelle, QuellName); Assign(Ziel,'FRAGMENT.INC');
- Reset(Quelle); Rewrite(Ziel);
- count := 0; ArrayName := '';
- Writeln(Ziel,'CONST');
-
- While not Eof(Quelle) do begin
- Readln(Quelle,Zeile);
- if Zeile[1] = ';' then
- Zeile := ''; (* Kommentarzeile löschen *)
- if Length(Zeile) > 0 then
- if Zeile[1] = '$' then begin (* Neues Array *)
- ArrayText; (* Altes Array wegschreiben *)
- count := 0; (* Zeichenzähler zurücksetzen *)
- ArrayName := Zeile; (* Neuen Namen merken *)
- Delete(ArrayName,1,1); (* $ löschen *)
- end
- else begin
- for i := 1 to Length(Zeile) do begin
- Temp[count] := Zeile[i]; (* Zeichen in *)
- count := count + 1; (* Temp ablegen *)
- end;
- Temp[count] := ' '; (* Extrablank am Zeilen- *)
- count := count + 1; (* ende als Separator *)
- end;
- end;
- ArrayText; (* letztes Array wegschreiben *)
-
- Close(Quelle); Close(Ziel);
- Writeln;
- Writeln('FRAGMENT.INC wurde erzeugt');
- end.
-
- (* ------------------------------------------------------ *)