Мне интересно, как получается, что когда я делаю полезный инструмент для кого-то, кто может отчаянно нуждаться в замене строки в файле и загрузке ее на бесплатном сайте загрузки, который можно загрузить бесплатно, действительно бесплатный инструмент, опять же, как Бывает, что я стал спамером ???
Я очень уважаемый, старый программист в моей стране, никто не называл меня спамером.
Теперь я должен загрузить исходный код, чтобы сохранить свой престиж ...
Теперь я понял, что СООБЩЕСТВО - это робот, и это нормально для меня ...
Источник компилируется с FPC.
Program ReplaceString;
var
fs,fd:file of char;
rdchar:char;
cnt1:byte;
ocur:longint;
instr,outstr,tempstr:string;
function fileexists(filename:string):boolean;
var
f:file;
begin
{$I-} assign(f,FileName);reset(f);close(f); {$I+}
fileexists:=(ioresult=0) and (filename<>'');
end;
procedure chkstr;
var
tmp1:char;
numread,cnt2:byte;
begin
numread:=1;
tempstr[1]:=rdchar;
repeat
read(fs,tmp1);
inc(numread);
tempstr[numread]:=tmp1;
until (numread=length(instr)) or (instr[numread]<>tempstr[numread]);
if (numread<length(instr)) or (instr[numread]<>tempstr[numread]) then
for cnt2:=1 to numread do begin
tmp1:=tempstr[cnt2];
write(fd,tmp1);
end else begin
for cnt2:=1 to length(outstr) do begin
tmp1:=outstr[cnt2];
write(fd,tmp1);
end;
inc(ocur);
write('Occurrences: ',ocur);
for cnt2:=1 to 20 do write(chr(8));
end;
end;
begin
writeln('File string replacer v.1.0 for WIN32 by Rares Atodiresei (P)2018');
if paramcount<>3 then begin
writeln('Usage: Repstr32.exe <infile> <target string> <replacement string>');
halt(1);
end;
if not fileexists(paramstr(1)) then begin
writeln('File ',paramstr(1),' does not exist.');
halt(1);
end;
writeln;
ocur:=0;
write('Searching...');
for cnt1:=1 to 15 do write(chr(8));
instr:=paramstr(2);
outstr:=paramstr(3);
assign(fs,paramstr(1));reset(fs);
assign(fd,'_'+paramstr(1));rewrite(fd);
while not eof(fs) do begin
read(fs,rdchar);
if rdchar=instr[1] then chkstr else write(fd,rdchar);
end;
close(fd);close(fs);
if ocur=0 then begin
write('Target string not found.');
for cnt1:=1 to 25 do write(chr(8));
erase(fd);
end else begin
erase(fs);rename(fd,paramstr(1));
end;
writeln;writeln;writeln('Done.');
end.