home *** CD-ROM | disk | FTP | other *** search
/ Intermedia 1998 January / inter1_98.iso / www / rozi / PROTECT.ZIP / STARTER.PAS < prev    next >
Pascal/Delphi Source File  |  1997-06-08  |  2KB  |  94 lines

  1. uses instu,dos;
  2. const pop=0;
  3. zamek=1;
  4. niepop=2;
  5. function openfileandtest(filename:pathstr; reclen:longint; var f:file):byte;
  6. begin
  7. assign(f,filename);
  8. {$I-}
  9. reset(f,1);
  10. {$I+}
  11. if ioresult<>0 then
  12. begin
  13. openfileandtest:=zamek;
  14. exit;
  15. end;
  16. if (filesize(f) mod reclen)<>0 then
  17. begin
  18. openfileandtest:=niepop;
  19. close(f);
  20. exit;
  21. end;
  22. close(f);
  23. assign(f,filename);
  24. {$I-}
  25. reset(f,reclen);
  26. {$I+}
  27. if ioresult<>0 then
  28. begin
  29. openfileandtest:=zamek;
  30. exit;
  31. end;
  32. openfileandtest:=pop;
  33. end;
  34.  
  35. var dane:tdaneinst;
  36. f:file of tdaneinst;
  37. f1:file;
  38. s:string;
  39. i:byte;
  40.  
  41. begin
  42. if openfileandtest(instfile,sizeof(tdaneinst),file(f))<>pop then
  43. begin
  44. writeln('Uszkodzony plik: ',instfile,' !');
  45. halt;
  46. end;
  47. read(f,dane);
  48. close(f);
  49. rev(dane.biosdate);
  50. if (dane.machinetype<>machinetype) or (dane.biosdate<>databios) then
  51. begin
  52. writeln('Nielegalna kopia programu: ',dane.nazwa,' !');
  53. halt;
  54. end;
  55. assign(f1,dane.nazwa);
  56. {$I-}
  57. reset(f1,1);
  58. {$I+}
  59. if ioresult<>0 then
  60. begin
  61. writeln('Nie moge otworzyc pliku: ',dane.nazwa,' !');
  62. halt;
  63. end;
  64. if filesize(f1)<200 then i:=filesize(f1)
  65. else i:=200;
  66. seek(f1,0);
  67. blockread(f1,s,i);
  68. rev(s);
  69. seek(f1,0);
  70. blockwrite(f1,s,i);
  71. close(f1);
  72. swapvectors;
  73. exec(dane.nazwa,'');
  74. swapvectors;
  75. if doserror<>0 then
  76. writeln('Blad DOS nr: ',doserror);
  77. assign(f1,dane.nazwa);
  78. {$I-}
  79. reset(f1,1);
  80. {$I+}
  81. if ioresult<>0 then
  82. begin
  83. writeln('Nie moge otworzyc pliku: ',dane.nazwa,' !');
  84. halt;
  85. end;
  86. if filesize(f1)<200 then i:=filesize(f1)
  87. else i:=200;
  88. seek(f1,0);
  89. blockread(f1,s,i);
  90. rev(s);
  91. seek(f1,0);
  92. blockwrite(f1,s,i);
  93. close(f1);
  94. end.