Информационный сервер для программистов: Исходники со всего света. Паскальные исходники со всего света
  Powered by Поисковый сервер Яndex: Найдется ВСЁ!
На Главную Pascal Форум Информер Страны мира
   Прочие Программы    >>    fenix
   
 
 Fenix - Самовосстанавливающаяся программа   Олийнык В.Б. 18.08.1994

Один из вариантов программы, печатающей свой собственный исходник



4k 
 

From news Fri Aug 19 09:55:58 1994 From: Gorechko <gnom@lreri.lviv.ua> Subject: Кто имеет другие решения ? (см.письмо) Date: 18 Aug 1994 12:07:32 +0300 Organization: Radio Engineering Research Institute Status: RO Самовосстанавливающиеся программы. У кого есть другие решения ? г.Львов, (0322) 64-89-51, Олийнык В.Б., E-Mail: gnom@lreri.lviv.ua {> Cut here. FileName= FENIX.PAS } Program Fenix; { Самовосстанавливающаяся программа. Turbo Pascal 6.0 Version 23.06.93 (0322) 64-89-51 Олийнык В.Б. г.Львов } Const N = 63; Type SA = array[1..N] of String[80]; Const S : SA = ( 'Program Fenix;', '{', ' Самовосстанавливающаяся программа.', ' Turbo Pascal 6.0 Version 23.06.93', ' (0322) 64-89-51 Олийнык В.Б. г.Львов', '}', 'Const', ' N = 63;', 'Type', ' SA = array[1..N] of String[80];', 'Const', ' S : SA = (', '', 'Procedure WriteFenix;', 'Var', ' I : Integer;', ' F : Text;', ' Name : String;', '', 'Procedure OutLn(S: String);', 'Var', ' I : Integer;', 'Begin', ' I := Pos(#96,S);', ' While I <> 0', ' do begin', ' Delete(S,I,1);', ' Insert(#39,S,I);', ' I := Pos(#96,S);', ' end;', ' WriteLn(F,S);', 'End;', '', 'Begin', ' Name := ParamStr(0);', ' I := Pos(`.`,Name);', ' Delete(Name,I,255);', ' Name := Concat(Name,`.PAS`);', ' Assign(F,Name);', ' ReWrite(F);', ' for I := 1 to 12', ' do WriteLn(F,S[I]);', ' for I := 1 to N - 1', ' do WriteLn(F,` ```,S[I],```,`);', ' WriteLn(F,` ```,S[N],````);', ' WriteLn(F,` );`);', ' for I := 13 to N', ' do OutLn(S[I]);', ' Close(F);', ' Halt(0);', 'End;', '', 'Var', ' I : Integer;', 'Begin', ' WriteLn(`Самовосстанавливающаяся программа.`);', ' WriteLn(`Turbo Pascal 6.0 Version 23.06.93`);', ' WriteLn(`(0322) 64-89-51 Олийнык В.Б. г.Львов`);', ' WriteLn;', ' for I := 1 to ParamCount', ' do if ParamStr(I) = `fenix` then WriteFenix;', ' WriteLn(`Запуск: `,ParamStr(0),` fenix`);', 'End.' ); Procedure WriteFenix; Var I : Integer; F : Text;