0
我做自由帕斯卡过滤程序(一个很简单的一个)和我在读从一个巨大的文本文件的源文本。如果我使用的字符串,一切工作正常,但它仅限于255。如果我尝试使用AnsiString类型,它给了我错误201AnsiString类型错误201免费帕斯卡
代码:
program TextFilter;
uses Crt;
Var
_input, filter,
tilStar, afterStar,
output : string;
input : ansistring;
i, j : longint;
have : boolean;
fileIn, fileOut : text;
Function cutDownText(orig:ansistring; til:integer) : string;
var
new : ansistring;
i : integer;
begin
new:='';
for i:=1 to length(orig) do
if i>til then
new:=new+orig[i];
cutDownText:=new;
end;
Begin
ClrScr;
writeln('K‚rem a szűr‹t:');
readln(filter);
Assign(fileIn, 'C:\DEVELOPMENT\Pascal\source.txt');
Assign(fileOut, 'C:\DEVELOPMENT\Pascal\output.txt');
reset(fileIn);
rewrite(fileOut);
tilStar:='';
afterStar:='';
output:='';
have:=true;
input:='';
while not(eof(fileIn)) do begin
readln(fileIn, _input);
input:=input+_input;
end;
close(fileIn);
for i:=1 to length(filter) do
if filter[i]='*' then
break
else
tilStar:=tilStar+filter[i];
for i:=i to length(filter) do
if not(filter[i]='*') then
afterStar:=afterStar+filter[i];
while(have=true) do begin
if (Pos(tilStar, input)>0) then begin
if (Pos(tilStar, input) > Pos(afterStar, input)) then begin
for j:=(Pos(tilStar, input)+length(tilStar)) to length(input) do begin
output:=output+input[j];
end;
writeln(fileOut, output);
output:='';
input:=cutDownText(input, (j + length(afterStar)));
end else begin
for j:=(Pos(tilStar, input)+length(tilStar)) to (Pos(afterStar, input)-1) do begin
output:=output+input[j];
end;
writeln(fileOut,output);
output:='';
input:=cutDownText(input, (j + length(afterStar)));
end;
end else
have:=false;
end;
close(fileOut);
readkey;
End.
哦,我没想到的唯一的事情就是cutDownText功能。谢谢! – LPeter1997
不客气。 –