Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.07.14;
Скачать: [xml.tar.bz2];

Вниз

Замена символов   Найти похожие ветки 

 
NeVa   (2003-07-02 00:23) [0]

Добой ночи! Подскажите как в RichEdit найти все места между словами где больше одного пробела и заменить ето все на одиночный пробел?


 
Спрашивающий_   (2003-07-02 02:11) [1]

Ориетируйся на код ниже и напиши свою функцию
Я его быстро набрасал поэтому может где баг и притаился, вообщем я его не тестировал хотя внешне вроде работает собственно я его и проверял на самом коде обрати внимание в нем нет лтшних пробелов
procedure TForm1.Button1Click(Sender: TObject);
var
S,S1:String;
I,J:Integer;
SL:TStringList;
begin
SL:=TStringList.Create;
SL.Text:=RichEdit1.Text;
For I:=0 To SL.Count-1 Do
begin
S:=SL[I];
S1:="";
For J:=1 To Length(S)Do
begin
If (S<>"") and (Pos(" ",S)<>0) Then
begin
If not ((S[J]=" ") and (S[J+1]=" ")) Then
S1:= S1+S[J];
SL[I]:=S1;
end;
end;

end;
RichEdit1.Text:=SL.Text;

end;


 
Спрашивающий_   (2003-07-02 02:16) [2]

Да забыл естественно SL.Free и блок с try finally end добавь


 
Anatoly Podgoretsky   (2003-07-02 07:51) [3]

И главное, не забудь, что этот код будет вызывать AV или при включенной проверке диапазонов ошибку времени исполнения.


 
Sha   (2003-07-02 10:21) [4]

Anatoly Podgoretsky © (02.07.03 07:51)
Вроде там терминатор должен быть?
Может нормально будет, ноть и неверно :)


 
Anatoly Podgoretsky   (2003-07-02 10:39) [5]

Вроде бы когда J = Length и S[J]=" ", то будет обращение к S[J+1], что уже за пределами строки, включи проверку диапазаона и получишь скандал, даже если скандала не получишь, то само по себе это неверно и очень не профессионально!


 
Song   (2003-07-02 10:40) [6]

StringReplace(RichEdit1.Lines.Text,#32#32,#32,[rfReplaceAll]);


 
Sha   (2003-07-02 11:07) [7]

Anatoly Podgoretsky © (02.07.03 10:39)
И я о том же. В этом случае S[J+1]=#0 (терминатор строки). НО AV НЕ БУДЕТ - память под string выделяется с учетом 2-х байт под терминаторы.
В отношении непроессиональности полностью согласен. В коде есть еще к чему придраться:
- не удаляются первый и последний пробелы,
- проверка If (S<>"") and (Pos(" ",S)<>0) Then в цикле по символам строки, без которой можно легко обойтись, чуть изменив код,
- скорость работы.



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

Форум: "Основная";
Текущий архив: 2003.07.14;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.009 c
1-44725
denis24
2003-07-01 10:46
2003.07.14
Как создать новый файл ворда на основании шаблоннного?


3-44561
RDA
2003-06-19 19:59
2003.07.14
Использование DBLookUpCombobox


4-44953
BJValentine
2003-05-13 12:35
2003.07.14
Временная системная директория


3-44568
???
2003-06-10 15:23
2003.07.14
как с через ADO создать базу данных?? (mdb)


14-44825
nester
2003-06-25 22:08
2003.07.14
Как можно подменить встроенные ресурсы.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский