[Back to FILES SWAG index] [Back to Main SWAG index] [Original]

    (*This is a short and rather unoptomized and well to be honest SLOPPY     *)
    (*representation of hex viewing (not editing) what this program WILL      *)
    (*do however is go in and suck out the readable text in an exe dat com    *)
    (*or other hex file so you can take a look see at whats in em :)          *)
    (* This is VERY basic and is just to show the basic concept..             *)

    (*This code was written by George Slaterpryce A.K.A. Illogical Error      *)
    (*you can use it freely i dont really care what you do with it            *)
    (*but if you use the concept behind it or the code itself just drop me a  *)
    (*line or two at rapter@aug.com i would appreciate it....    also         *)
    (**)
    (*The author of this code (George Slaterpryce) is not responsible for what*)
    (*it does to software/hardware on your computer you use it at your own risk*)
    (**)
    (*p.s. but it works fine on my 386, 486, and p133 *)

    program ReadFile;
    uses crt;
    var
      F: file of string;
      f2 : file of char;
      f3 : file of integer;
      f4 : text;
      strng: string;
      ch   : char;
      num, count  : integer;
      didit : boolean;

    (*Do all my error notices*)
    (****************************************************************************)
    procedure notice (var didit : boolean);
       begin
       clrscr;
       writeln;
       writeln;
       writeln('P.G.T.F.R.U. ReadFile.exe');
       Writeln('Pascal Genorated Typed File Reader Utility by George Slaterpryce');
       writeln('(C) 1996 George Slaterpryce A.K.A. Illogical Error');
       Writeln('This utility is Freeware.');
       Writeln;
       writeln('Usage ReadFile /[S,C,#,T,?] <filename.dat>');
       textcolor(blue);write('               option');textcolor(green);write('      file name');
       writeln('');
       textcolor(7);
       writeln;
       writeln('Command line Parameters');
       writeln('/S   Reads file of strings');
       writeln('/C   Reads file of chars');
       writeln('/#   Reads file of Integers');
       writeln('/T   Reads Text Files');
       writeln('/?   This Help Screen');
       didit := true;
       end;

    procedure notice1(var didit : boolean);
       begin
       clrscr;
       writeln;
       writeln;
       writeln('P.G.T.F.R.U. ReadFile.exe');
       Writeln('Pascal Genorated Typed File Reader Utility by George Slaterpryce');
       writeln('(C) 1996 George Slaterpryce A.K.A. Illogical Error');
       Writeln('This utility is Freeware.');
       Writeln;
       writeln('Usage ReadFile /[S,C,#,T,?] <filename.dat>');
       textcolor(17);write('               option');textcolor(green);write('      file name');
       writeln('');
       textcolor(7);
       writeln;
       writeln('Command line Parameters');
       writeln('/S   Reads file of strings');
       writeln('/C   Reads file of chars');
       writeln('/#   Reads file of Integers');
       writeln('/T   Reads Text Files');
       writeln('/?   This help screen');
       didit := true;
       end;

    procedure notice2(var didit : boolean);
       begin
       clrscr;
       writeln;
       writeln;
       writeln('P.G.T.F.R.U. ReadFile.exe');
       Writeln('Pascal Genorated Typed File Reader Utility by George Slaterpryce');
       writeln('(C) 1996 George Slaterpryce A.K.A. Illogical Error');
       Writeln('This utility is Freeware.');
       Writeln;
       writeln('Usage ReadFile /[S,C,#,T,?] <filename.dat>');
       textcolor(blue);write('               option');textcolor(18);write('      file name');
       writeln('');
       textcolor(7);
       writeln;
       writeln('Command line Parameters');
       writeln('/S   Reads file of strings');
       writeln('/C   Reads file of chars');
       writeln('/#   Reads file of Integers');
       writeln('/T   Reads Text Files');
       writeln('/?   This Help Screen');
       didit := (true);
       end;

    procedure notice3;
       begin
       clrscr;
       writeln;
       writeln;
       writeln('P.G.T.F.R.U. ReadFile.exe');
       Writeln('Pascal Genorated Typed File Reader Utility by George Slaterpryce');
       writeln('(C) 1996 George Slaterpryce A.K.A. Illogical Error');
       Writeln('This utility is Freeware.');
       Writeln;
       writeln('Usage ReadFile /[S,C,#,T,?] <filename.dat>');
       textcolor(17);write('               option');textcolor(green);write('      file name');
       writeln('');
       textcolor(7);
       writeln;
       writeln('Command line Parameters');
       writeln('/S   Reads file of strings');
       writeln('/C   Reads file of chars');
       writeln('/#   Reads file of Integers');
       writeln('/T   Reads Text Files');
       writeln('/?   This help screen');
       end;

    (***************************************************************************)

    begin
    count := 0; (*initialize all variables*)
    clrscr;
    didit := false;
    clrscr;

    (*Start our Hex viewing or Binary viewing*)
        IF paramstr(1) = '/h' then
            begin
          if paramstr(2) = '' then notice2(didit);   (*See if the user typed*)
          if paramstr(2) <> '' then           (*a file name if and they didnt*)
          begin                               (*tell them*)
          Assign(F2, paramstr(2));            (*if they did go on with the *)
          Reset(F2);                          (*function*)
          writeln;
          writeln;
          while not Eof(F2) do
          begin
          Read(F2, ch);
          if ch > char(31) then          (*throw out all the "trash" chars*)
          begin                          (* (the higher ended ascii codes and*)
          if ch < char(127) then         (* some of the lower ones to make it*)
                                         (*into more readable code*)
          begin
          IF count = 1500 then (*this is how many characters we can show on a *)
          begin;               (*screen at one time well actually you can show*)
          writeln;             (*2000 characters at a time(on a 80x25 standard*)
          writeln;             (*screen but 1500 gives you a little play room *)
          writeln('pause');
          readkey;
          writeln;
          writeln;
          clrscr;
          end;
          count := count + 1;
          Write(Ch);
          end;
          end;
        end;
        close(F2);
        didit := true;
      end;
      end;

    (*end of hex/binary viewing*)
    (***************************************************************************)

    (*From here on down i added on some features that you could use to make*)
    (*a more specialized view simple crup really :) but hey what the hell *)

        (* this little function here is to eleminate a rather stupid bug i had
        when the user typed nothing after fileread *)
        IF paramstr(1) = '' then
        begin
        assign(F, 'Error.txt');
        rewrite(F);
        close(F);
        notice3;
        end;
        (*******************************************)

        IF paramstr(1) = '/S' then
        begin
        if paramstr(2) = '' then notice2(didit);
        if paramstr(2) <> '' then
        begin
        Assign(F, paramstr(2));
        Reset(F);
        while not Eof(F) do
        begin
          Read(F, strng);
          Write(strng);
          writeln;
        end;
        close(F);
       end;
       didit := true;
       end;

      IF paramstr(1) = '/s' then
      begin
      if paramstr(2) = '' then notice2(didit);
      if paramstr(2) <> '' then
      begin
        Assign(F, paramstr(2));
        Reset(F);
        while not Eof(F) do
        begin
          Read(F, strng);
          Write(strng);
          writeln;
        end;
        close(F);
        didit := true;
      end;
      end;

       IF paramstr(1) = '/C' then
        begin
        if paramstr(2) = '' then notice2(didit);
        if paramstr(2) <> '' then
        begin
        Assign(F2, paramstr(2));
        Reset(F2);
        while not Eof(F2) do
        begin
          Read(F2, ch);
           if ch = char(7) then ch := char(255);
          Write(Ch);
          end;
        close(F2);
        didit := true;
       end;
       end;

        IF paramstr(1) = '/c' then
         begin
         if paramstr(2) = '' then notice2(didit);
         if paramstr(2) <> '' then
        begin
        Assign(F2, paramstr(2));
        Reset(F2);
        while not Eof(F2) do
        begin
          Read(F2, ch);
          if ch = char(7) then ch := char(255);
          Write(Ch);
        end;
        close(F2);
        didit := true;
      end;
      end;

    IF paramstr(1) = '/#' then
        begin
        if paramstr(2) = '' then notice2(didit);
        if paramstr(2) <> ''  then
        begin
        Assign(F3, paramstr(2));
        Reset(F3);
        while not Eof(F3) do
        begin
          Read(F3, num);
          Write(num);
          writeln;
          end;
      close(f3);
        didit := true;
      end;
      end;

    IF paramstr(1) = '/T' then
        begin
        if paramstr(2) = '' then notice2(didit);
        if paramstr(2) <> '' then
        begin
        Assign(F4, paramstr(2));
        Reset(F4);
        while not Eof(F4) do
        begin
          Readln(F4, strng);
          Writeln(strng);
       end;
        close(F4);
      end;
      didit := true;
      end;

    IF paramstr(1) = '/t' then
        begin
        if paramstr(2) = '' then notice2(didit);
        if paramstr(2) <> '' then
        begin
        Assign(F4, paramstr(2));
        Reset(F4);
        while not Eof(F4) do
        begin
          Readln(F4, strng);
          Writeln(strng);
       end;
        close(F4);
      end;
      didit := true;
      end;

    IF didit = false then notice3;
    IF paramstr(1) = '/?' then notice3;

    Writeln;
    textcolor(red);
    writeln('operation done');
    textcolor(7);
    writeln('');

    end.

[Back to FILES SWAG index] [Back to Main SWAG index] [Original]