home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2002 September
/
Chip_2002-09_cd1.bin
/
zkuste
/
delphi
/
kompon
/
d123456
/
STR_BIT.ZIP
/
16
/
PRIM
/
DESKR16.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
2000-02-24
|
4KB
|
100 lines
program Deskr16;
{************************************************************************}
{ ¡á óσ«ñ »α«úαá¼¼δ »«ñáÑΓß∩ Σá⌐½, óδσ«ñ¡«⌐ Σá⌐½ »«½πτáÑΓß∩ }
{ ñÑ߬αÑ¼í½¿α«ó᡿Ѽ ¿ßσ«ñ¡«ú« Σá⌐½á ó ß««ΓóÑΓßΓó¿¿ ß ºáñá¡¡δ¼ »«½¿¡«¼«¼ }
{ }
{ ö«α¼áΓ ºáñá¡¿∩ »áαá¼ÑΓα«ó τÑαѺ ¬«¼á¡ñ¡πε ßΓ᫬π: }
{ Deskr16 [êßσ.Σá⌐½] [öá⌐½ óδó«ñá] [æΓѻѡ∞ »«½¿¡«¼á] [ÄΓó«ñ »«½¿¡«¼á]' }
{ }
{ é ß½πτáÑ ºáñá¡¿∩ τáßΓ¿ »áαá¼ÑΓα«ó «ßΓá½∞¡δÑ íπñπΓ ºá»α«ΦÑ¡δ ó αѪ¿¼Ñ }
{ ñ¿á½«úá }
{************************************************************************}
{$F+,R+,X+,B+,V-}
uses StrBit16;
var
InName, OutName, Prom : String;
Stepen, OtvPol : integer;
LenStr,i : WORD;
Ftest : File;
procedure DeskrSS(NameIs, NameRez: String; Otv1,Otv2: byte);
const DlinaBl = 8192;
var FIn, FOut : PBitFile;
TekPoz : Longint;
begin
FIn := New(PBitFile,Init(DlinaBl+64,4096)); {éδñѽѡ¿Ñ »á¼∩Γ¿}
FOut := New(PBitFile,Init(DlinaBl,4096)); {éδñѽѡ¿Ñ »á¼∩Γ¿}
TekPoz := 0;
FIn^.OpenBitFile(NameIs, btOpenRead); {ÄΓ¬αδΓ¿Ñ Σá⌐½á}
FOut^.OpenBitFile(NameRez, btCreate);
while Fin^.ReadStr(DlinaBl+Otv2) = btOk do
begin
FOut^.Copy(FIn, Otv2, DlinaBl); { C½«ªÑ¡¿Ñ »« ¼«ñπ½ε 2 ΓαÑσ í¿Γ«óδσ }
FOut^.Mod2(Fin); { »«Γ«¬«ó, ßñó¿¡πΓδσ ñαπú «Γ¡«ß¿Γѽ∞¡« }
FIn^.Delete(0, Otv2 - Otv1); { ñαπúá ¡á óѽ¿τ¿¡π, «íαáΓ¡πε ßΓѻѡ¿ }
FOut^.Mod2(Fin); { «Γó«ñá »«½¿¡«¼á ߬αѼí½Ñαá }
FOut^.WriteStr;
inc(TekPoz, DlinaBl);
Fin^.SeekStr(TekPoz);
end;
FIn^.CloseBitFile; { çá¬αδΓ¿Ñ «íαáíáΓδóáѼδσ Σá⌐½«ó}
FOut^.CloseBitFile;
Dispose(FIn,Done); Dispose(FOut,Done); {Äßó«í«ªñÑ¡¿Ñ »á¼∩Γ¿}
Writeln('Äíαáí«Γ¬á ºáóÑαΦÑ¡á');
end;
begin
Writeln('äÑ߬αÑ¼í½¿α«óá¡¿Ñ í¿Γ«ó«ú« »«Γ«¬á');
Writeln('ÇóΓ«α : æѼѡ«ó é.ï. éÑαß¿∩ 3.3 «Γ 25.11.99 ú.');
InName := '';
if ParamCount <1
then repeat
if InName <> '' then writeln('öá⌐½ ',InName, ' ¡Ñ ¡á⌐ñÑ¡! éóÑñ¿ΓÑ ¬«ααÑ¬Γ¡«Ñ ¿¼∩ Σá⌐½á');
write('éóÑñ¿ΓÑ ¿¼∩ ¿ßσ«ñ¡«ú« Σá⌐½á: ');
readln(InName);
{$I-}
Assign(Ftest,InName);
FileMode := 0;
Reset(Ftest);
Close(Ftest);
{$I+}
until (IOResult = 0) and (InName <> '')
else InName :=ParamStr(1); { óº∩Γ∞ ¿¼∩ Σá⌐½á ¿º ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ }
if (ParamCount = 1) and ((InName='?') or (InName='/?') or (InName='-?')
or (InName='h') or (InName='/h') or (InName='-h') )
then begin
writeln;
writeln(' ö«α¼áΓ ºáñá¡¿∩ »áαá¼ÑΓα«ó τÑαѺ ¬«¼á¡ñ¡πε ßΓ᫬π:');
writeln('Deskr16 [êßσ.Σá⌐½] [öá⌐½ óδó«ñá] [æΓѻѡ∞ »«½¿¡«¼á] [ÄΓó«ñ »«½¿¡«¼á]');
writeln;
writeln('é ß½πτáÑ ºáñá¡¿∩ τáßΓ¿ »áαá¼ÑΓα«ó «ßΓá½∞¡δÑ íπñπΓ ºá»α«ΦÑ¡δ ó αѪ¿¼Ñ ñ¿á½«úá');
Exit;
end;
if ParamCount < 2 then
begin write('éóÑñ¿ΓÑ ¿¼∩ Σá⌐½á óδó«ñá αѺπ½∞ΓáΓ«ó: ');
readln(OutName);
end
else OutName :=ParamStr(2); { óº∩Γ∞ ¿¼∩ Σá⌐½á ¿º ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ }
if ParamCount < 3 then
begin write('éóÑñ¿ΓÑ ßΓѻѡ∞ »«½¿¡«¼á: ');
readln(Prom);
end
else Prom :=ParamStr(3); { óº∩Γ∞ ¿¼∩ Σá⌐½á ¿º ¬«¼á¡ñ¡«⌐ ßΓ᫬¿ }
Val(Prom, Stepen, i );
if (i <> 0) or (Stepen>64) then begin
Writeln('ÄΦ¿í¬á »α¿ ºáñá¡¿¿ æÆàÅàìê »«½¿¡«¼á!');
Exit end;
if ParamCount > 3 then Prom :=ParamStr(4)
else begin
write('éóÑñ¿ΓÑ «Γó«ñ »«½¿¡«¼á: ');
readln(Prom);
end;
Val(Prom, OtvPol, i );
if (i <> 0) or (Stepen<=OtvPol) then begin
Writeln('ÄΦ¿í¬á »α¿ ºáñá¡¿¿ æÆàÅàìê »«½¿¡«¼á!');
Exit end;
DeskrSS(InName, OutName, OtvPol, Stepen);
end.