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
不客氣。 –