Текущий архив: 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