Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.06.29;
Скачать: CL | DM;

Вниз

Как удалить в текстовом файле разрыв страницы !?   Найти похожие ветки 

 
Alex77777 ©   (2005-06-05 15:33) [0]

Здравствуйте!

Как удалить в текстовом файле разрыв страницы !?
С примером желательно.

Спасибо


 
Palladin ©   (2005-06-05 17:47) [1]

Дашь четкое определение разрыва страницы в текстовом файле я награжу тебя примером.


 
Anatoly Podgoretsky ©   (2005-06-05 17:51) [2]

Palladin ©   (05.06.05 17:47) [1]
Это как раз не проблема, стандартный разделитель страницы. А вок как он работает с файлом неизвестно. Если например загоняет в единую строку то ReplaceStr


 
Alex77777 ©   (2005-06-05 19:55) [3]

Вот пример если что то он даст :))

текст
текст
текст

--разрыв страницы--

текст
текст
текст

--разрыв страницы--

и т.д.

Вот такой файл


 
Alex77777 ©   (2005-06-05 19:55) [4]

Удалено модератором


 
YurikGL ©   (2005-06-05 20:05) [5]


> Alex77777 ©   (05.06.05 19:55) [4]

Находишь pos-м подстроки "--разрыв страницы--" и с помощью delete их удаляешь...


 
ferr ©   (2005-06-05 21:32) [6]

Прям так и написано или просто пропущено место?


 
Anatoly Podgoretsky ©   (2005-06-05 21:40) [7]

ferr ©   (05.06.05 21:32) [6]
А не важно, может быть и так
текст
текст<разрыв>текст
текст


 
ferr ©   (2005-06-06 14:07) [8]

Для больших файлов string не очень пригодно. Вот, на досуге написал код побайтового сравнения + алг. Боуера и Мура. Если вы воспользуетесь этим кодом, то его надо проверять.
procedure DeleteInFile(const _FileName:string;_Str:string);
const
 Frame=65536;
var
 F1,F2: TFileStream;
 a: array[0..Frame-1] of Byte;
 b: array[0..Frame-1] of Byte;
 FSize,i,j,C,k,l,La,Pa,Pb: integer;
 Table:Array[Byte]of Byte;
 OK:LongBOOL;
begin
 l:=Length(_Str);
 for i:=0 to 255 do
   Table[i]:=l;
 for i:=1 to l-1 do
   Table[Byte(_Str[i])]:=l-i;
 F1:=TFileStream.Create(_FileName,fmOpenRead);
 F2:=TFileStream.Create(_FileName+"~",fmCreate);
 try
   FSize:=F1.Size;
   C:=0;
   if FSize>Frame then
   begin
     FSize:=FSize - Frame;
     C:=1;
     C:=C + FSize div (Frame-l+1);
     La:=FSize mod (Frame-l+1);
     FSize:=La;
     if La<>0 then C:=C+1;
   end else
   begin
     C:=1;
     La:=FSize;
   end;
   for j:=1 to C do
   begin
     if c<>1 then
     begin
       if j<>c then
       begin
         La:=Frame-l;
       end else
       La:=FSize;
     end else
     if C>1 then La:=Frame-l;
   F1.Read(a[0],La);
   Pb:=0;
   Pa:=0;
   i:=l-1;
   while i<La-1 do
   begin
     if Byte(_Str[l])<>a[i] then
       inc(i, Table[Byte(a[i])]) else
     begin
       k:=0;
       OK:=True;
       while (k<l-1)and OK do
       begin
         Inc(k);
         if a[i-k]<>Byte(_Str[l-k]) then OK:=False;
       end;
       if not OK then inc(i,Table[Byte(_Str[l-k])]) else
       begin
         System.Move(a[Pa],b[Pb],i+1-l-Pa);
         Pb:=Pb+i+1-Pa-l;
         Pa:=i+1;
         inc(i,l);
       end;
     end;
   end;
     System.Move(a[Pa],b[Pb],La-Pa);
     inc(Pb,La-Pa);
     F2.Write(b[0],Pb)
   end;
 finally
   F1.Free;
   F2.Free;
 end;
end;

P.S. Попробуйте ещё усложнить? :)



Страницы: 1 вся ветка

Текущий архив: 2005.06.29;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.026 c
3-1115988123
Andarko
2005-05-13 16:42
2005.06.29
Создать поле


14-1117171979
MBo
2005-05-27 09:32
2005.06.29
Пятничные головоломные задачки


14-1117835054
кактусбел
2005-06-04 01:44
2005.06.29
вычесление значение суммы рядов бесконечного ряда


1-1118208998
MarS
2005-06-08 09:36
2005.06.29
Прокрутить Image


3-1116426225
highlander
2005-05-18 18:23
2005.06.29
Запрос не работает!?