Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.119.131.72] |
|
Сообщ.
#1
,
|
|
|
Сделал вот так (Но файлы размером в 500 мегабайт не обрабатывает - нехватка памяти):
procedure TForm1.Button1Click(Sender: TObject); var t:TStringList; s: string; k,n,i: integer; begin n:=strtoint(Edit1.Text);//удалить в начале k:=strtoint(Edit2.Text);//удалить в конце t:=TStringList.Create; t.LoadFromFile('1.txt');//файл в папке с программой for i:=0 to t.Count-1 do begin s:=t[i]; if k>=length(s) then s:='' else delete(s,length(s)-k+1,k); if n>=length(s) then s:='' else delete(s,1,n); t[i]:=s; end; t.SaveToFile('2.txt'); t.Free; ShowMessage('Файл 1.txt преобразован и записан в файл 2.txt') end; Как переделать через: AsssignFile, Reset/Rewrite, CloseFile то есть читать по строкам а не загружать в память. |
Сообщ.
#2
,
|
|
|
Так попробуй:
Var FIn,FOut:TextFile; s: string; k,n,i: integer; begin n:=strtoint(Edit1.Text);//удалить в начале k:=strtoint(Edit2.Text);//удалить в конце AssignFile(FIn,'1.txt'); AssignFile(FOut,'2.txt'); Reset(FIn); Rewrite(FOut); While not EOF(FIn) do begin ReadLn(FIn,s); if k>=length(s) then s:='' else delete(s,length(s)-k+1,k); if n>=length(s) then s:='' else delete(s,1,n); WriteLn(FOut,s); end; CloseFile(FOut); CloseFile(FIn); End; |
Сообщ.
#3
,
|
|
|
^D^imaПомог, спасибо!
|