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

Вниз

Как одиночные Enter удалить, а в двойных оставить только один?   Найти похожие ветки 

 
Vovkin 3   (2005-07-05 20:54) [0]

Как Enter убирать из текста сделал.
Но есть текст с двойными и одиночными Enter.
Как мне сделать так:
Одиночные Enter удалить, а в двойных оставить только один?

procedure Clean(Sender: TObject);
var
tempstr:WideString;
i:byte;
bool:boolean;
begin
if CheckBoxE.Checked=true then begin

if RadioButtonDE.Checked=true then begin
while pos(#13#10,tempstr)<>0 do
delete(tempstr,pos(#13#10,tempstr),2);
end;

if RadioButtonDME.Checked=true then begin
while pos(#13#10#13#10,tempstr)<>0 do
delete(tempstr,pos(#13#10#13#10,tempstr),2);
end;

if RadioButtonROE.Checked=true then begin
????????????????????????????????????????7
end;

end;
end;


 
Fay ©   (2005-07-05 20:55) [1]

s := StringReplace(s, ""#13#10#13#10, ""#13#10, [rfReplaceAll]);


 
Юрий Зотов ©   (2005-07-05 23:32) [2]

S := StringReplace(StringReplace(StringReplace(S, #13#10#13#10, #13#10#1, [rfReplaceAll]), #13#10, "", [rfReplaceAll]), #1, #13#10, [rfReplaceAll]);


 
Fay ©   (2005-07-06 09:19) [3]

Юрий Зотов ©   (05.07.05 23:32) [2]
Предполагается, что #1 не встречается в тексте, но есть #13#10 по N > 2 штук к ряду?


 
Alexander Panov ©   (2005-07-06 11:49) [4]

Простой автомат.


 
Alexander Panov ©   (2005-07-06 12:05) [5]

function DelCR(const s: String): String;
type
 TState=(stNone,stFirst,stNext);
var
 State: TState;
 i: Integer;
 Ch: Char;
begin
 Result := "";
 State := stNone;
 i := 1;
 while i<=Length(s) do
 begin
   Ch := s[i];
   case State of
     stNone:
       case Ch of
         #13: State := stFirst;
         else
         begin
           Result := Result+Ch;
           Inc(i);
         end;
       end;
     stFirst:
       case Ch of
         #13:
           begin
             Result := Result+Ch;
             Inc(i);
           end;
         #10:
           begin
             Result := Result+Ch;
             Inc(i);
             State := stNext;
           end;
         else State := stNone;
       end;
     stNext:
       case Ch of
         #13,#10:
           begin
             Inc(i);
           end;
         else State := stNone;
       end;
   end;
 end;
end;


 
Vovkin 3   (2005-07-07 01:37) [6]

Вообщем я сделал. Но прога не зависает если мало символов.
Если 250 000 то всё нормально.
А мне надо было 3 000 000.\(так висло)
По 250 000 делал.
Где то видел инфу как работать с большими размерами
Сейчас не нашёл.
Подскажити если кто занет?


 
Думкин ©   (2005-07-07 07:24) [7]

> Вообщем я сделал. Но прога не зависает если мало символов

В общем - что именно и главное - как?
Не зависает - или таки? Как узнали?
Пробовали код [5] Alexander Panov ©   (06.07.05 12:05) ?! Вставьте счетчик. А то Виснет много чего. :(


 
MBo ©   (2005-07-07 08:22) [8]

В каком виде дан исходный текст - текстовый файл или просто одна строка, содержащая весь текст?
WideString использовано просто так или по делу?


 
Slym ©   (2005-07-07 09:02) [9]

А че если в TStringList загрузить...
Удалить все пустые строки и сохранить
var
 StringList:TStringList;
 i:integer;
 str:string;
begin
 StringList:=TStringList.Create;
 try
   StringList.Text:=Str;
   for i:=0 to StringList.Count-1 do
     if length(StringList[i])=0 then
       StringList.Delete(i);
   Str:=StringList.Text;
 finally
   StringList.Free;
 end;
end;


 
Anatoly Podgoretsky ©   (2005-07-07 09:06) [10]

MBo ©   (07.07.05 08:22) [8]
И еще, нечему там виснуть у него, поскольку Len(tempstr)=0
Все должно работать мгновенно и процедуру можно переписать следующим образом.
procedure Clean(Sender: TObject);
begin
  //
end;


 
Vovkin 3   (2005-07-08 03:08) [11]

MBo ©   (07.07.05 08:22) [8]
И еще, нечему там виснуть у него, поскольку Len(tempstr)=0
Все должно работать мгновенно и процедуру можно переписать следующим образом.
procedure Clean(Sender: TObject);
begin
 //
end;
Конечно нечему



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

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

Наверх




Память: 0.5 MB
Время: 0.027 c
14-1119959643
koderman
2005-06-28 15:54
2005.07.25
Тянем потянем, вытащили!


4-1113913379
Max_005
2005-04-19 16:22
2005.07.25
Как программно закрыть PopupMenu и отлавливать указатель мыши


11-1103710852
Fanny
2004-12-22 13:20
2005.07.25
Горячие клавиши WM_HOTKEY в KOL


1-1120649855
maxim______m
2005-07-06 15:37
2005.07.25
string to string


1-1120544719
lexus3d
2005-07-05 10:25
2005.07.25
добавление строчки в начало текстового файла