Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.144.1.230] |
|
Сообщ.
#1
,
|
|
|
Допустим файл 8.txt имеет размер 5мб.
Нужно скопировать из него ~700кб текста и сохранить в файл new.txt При этом, 700кб должны удалится из файла 8.txt кароче говря нужно вырезать ~700кб из 8.txt и вставить в new.txt Подскажите плз как сделать что бы удалялись строчки ,катоыре были скопированы. можно как-нибудь ускорить программку,а то 700кб текста копируется секунд 5-10. procedure TForm1.Button1Click(Sender: TObject); var f:TextFile; st:String; qwe:TStringList; count:integer; begin qwe:=TStringList.create; AssignFile(f,'c:\8.txt'); {$I-} Reset(f); {$I+} While not EOF(f) do begin ReadLn(f,st); qwe.Text:= qwe.Text+st ; count:=count+length(st); if ((count div 1024) > 700) then break; end; CloseFile(f); // çàêðûòü ôàéë showmessage('готово'); qwe.SaveToFile('c:\neww.txt'); end; PS не важно если потеряется часть текста... Нужны файлы примеорно 700кб с текстом из книжек |
Сообщ.
#2
,
|
|
|
Вот такая процедура копирует первые 700 КБ из in.txt в файл out.txt.
procedure Copy700KB; var fin, fout: File; buf: array [1..4096] of byte; count, bytesread: dword; begin Assign(fin, 'in.txt'); {$I-} Reset(fin, 1); {$I+} if IOresult <> 0 then begin writeln('Can''t open file in.txt'); halt end; Assign(fout, 'out.txt'); Rewrite(fout, 1); count := 0; bytesread := 0; While Not EOF(fin) And ((count div 1024) < 700) do begin BlockRead(fin, buf, SizeOf(buf), bytesread); inc(count, bytesread); BlockWrite(fout, buf, bytesread) end; Close(fout); Close(fin); writeln('Done.') end; Если требуется, можешь добавить копирование остатка входящего файла в третий (временный) файл, по окончании работы переименовать по названию входящего. |
Сообщ.
#3
,
|
|
|
спс ,работает
|