home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------ *)
- (* Hex-in-ASCII-Wandler für Turbo Pascal 4.0 - 5.5 *)
- (* Listing 2: prozedurale Programmierung *)
- (* (c) 1991 G. Born & TOOLBOX *)
- (* ------------------------------------------------------ *)
- PROGRAM ASC;
-
- TYPE
- LongStr = STRING[80];
-
- VAR
- j : INTEGER;
- zchn : LongStr; (* eingelesenes Zeichen *)
-
- (* ---- Hilfsroutinen ----------------------------------- *)
-
- PROCEDURE Error;
- (* Abbruch mit Fehlermeldung *)
- BEGIN
- WriteLn('Fehler: falsche Hexzahl ', ParamStr(j));
- Halt($FF);
- END; (* Error *)
-
- FUNCTION asc_hex(text : LongStr) : BYTE;
- (* Decodieren der Hexzahl *)
- VAR
- i, tmp : INTEGER;
- zchn : CHAR;
- wert : WORD;
- BEGIN
- wert := 0; (* init Wert *)
- FOR i := 1 TO Length(text) DO BEGIN (* alle Ziffern *)
- zchn := UpCase(text[i]); (* hole Ziffer *)
- tmp := Pos (zchn,'0123456789ABCDEF');
- (* decodiere *)
- IF tmp = 0 THEN (* Fehler ? *)
- Error;
- wert := wert * 16 + (tmp - 1); (* addiere Ziffer *)
- END;
- asc_hex := Lo(wert); (* Ergebnis zurück *)
- END; (* asc_hex *)
-
- (* ---- Hauptprogramm ----------------------------------- *)
-
- BEGIN
- IF ParamCount > 0 THEN (* lese Parameter *)
- FOR j := 1 TO ParamCount DO BEGIN
- zchn := ParamStr(j); (* hole Parameter *)
- IF Length (zchn) > 2 THEN (* Fehler ? *)
- error; (* Exit *)
- Write (Chr(asc_hex(zchn))); (* Ausgabe Hex *)
- END; (* FOR *)
- Halt(0); (* Exit und setze Code *)
- END.