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

Вниз

удаление пробелов из строки   Найти похожие ветки 

 
mari   (2003-10-24 10:22) [0]

procedure TForm2.ObrNol;
var s,nol:shortstring;
i,j5,dl:integer;
begin
table1.First;
while not Table1.Eof do begin
nol:=table1.fieldbyname("nol").AsString;
i:=1;
dl:=length(nol);
if nol<>"" then begin
j5:=1;
for i:=1 to dl do begin

if nol[i]=" " then begin
j5:=1;
for j5:=i to dl-1 do nol[j5]:=nol[j5+1];
dec(dl);
end;

if nol[i]="-" then nol[i]:=chr(151);
if nol[i]="+" then nol[i]:=chr(177);
end;
end;
length(nol):=dl;
table1.Edit;
table1.fieldbyname("nol").Value:=nol;
table1.Post;
table1.Next;
end;
end;

обрабатываемый файл
Значения из поля Value

"Count","ComponentName","RefDes","PatternName","Value","Reference","Name","Наименование","Группа","Примечание","CPU","64 _TQFP","Group","Group 1"

"1","ATMEGA128","DD1","TQFP64","","Atmel Прошивку осуществляет СКБ "РАДЭЛ"","ATmega 128L - 8AI","","","","CPU","64-TQFP","Микросхема",""
"1","C0603","C2","C0603","0603 - 0,01мкФ + 10% - X7R - 50B","MURATA, SINCERA","0603","","","","","","Конденсатор","Керамический чип типоразмер"
"2","C0603","C1","C0603","0603 - 0,1мкФ + 20% - X7R - 16B","MURATA, SINCERA","0603","","","","","","Конденсатор","Керамический чип типоразмер"
"","C0603","C3","C0603","0603 - 0,1мкФ + 20% - X7R - 16B","MURATA, SINCERA","0603","","","","","","Конденсатор","Керамический чип типоразмер"
"1","C0603","C4","C0603","0603 - 15пФ + 5% - NPO - 50B","MURATA, SINCERA","0603","","","","","","Конденсатор","Керамический чип типоразмер"
"1","MIC4680BM","DA1","SO8","","","MIC4680BM","MIC4680BM","Микросхемы","MICREL","","","Микросхема",""
"1","R0603","R8","R0603","0603 - 1кОм +5%","YAGERO","0603","","","","","","резистор","Типоразмер"
"2","R0603","R1","R0603","0603 - 1кОм + 5%","YAGERO","0603","","","","","","резистор","Типоразмер"
"","R0603","R2","R0603","0603 - 1кОм + 5%","YAGERO","0603","","","","","","резистор","Типоразмер"
"1","R0603","R4","R0603","0603 - 6.8кОм + 5%","YAGERO","0603","","","","","","резистор","Типоразмер"
"1","R0603","R7","R0603","0603 - 10кОм +5%","YAGERO","0603","","","","","","резистор","Типоразмер"
"2","R0603","R3","R0603","0603 - 10кОм + 5%","YAGERO","0603","","","","","","резистор","Типоразмер"
"","R0603","R6","R0603","0603 - 10кОм + 5%","YAGERO","0603","","","","","","резистор","Типоразмер"
"1","R0603","R5","R0603","0603 - 100кОм + 5%","YAGERO","0603","","","","","","резистор","Типоразмер"
"1","ROZ40P_JMDSS","XS1","ROZ40P_JMDSS","","JST","40Р - JMDSS - G - 1TF","","","","","","Розетка",""
"4","TY_B","C5","TY_B","TSC - 22мкФ + 20% - 16В B case","","TSC","","","","","","Конденсатор","Танталовый чип серииTSC"
"","TY_B","C6","TY_B","TSC - 22мкФ + 20% - 16В B case","","TSC","","","","","","Конденсатор","Танталовый чип серииTSC"
"","TY_B","C7","TY_B","TSC - 22мкФ + 20% - 16В B case","","TSC","","","","","","Конденсатор","Танталовый чип серииTSC"
"","TY_B","C8","TY_B","TSC - 22мкФ + 20% - 16В B case","","TSC","","","","","","Конденсатор","Танталовый чип серииTSC"


 
Reindeer Moss Eater   (2003-10-24 10:24) [1]

Этот код - подарок посетителям сайта?


 
Ann   (2003-10-24 10:26) [2]


> [1] Reindeer Moss Eater © (24.10.03 10:24)
> Этот код - подарок посетителям сайта?

Наверное :)
вопроса то не видно..


 
Sandman25   (2003-10-24 10:30) [3]

for i:=1 to dl do begin

if nol[i]=" " then begin
j5:=1;
for j5:=i to dl-1 do nol[j5]:=nol[j5+1];
dec(dl);
end;

Тут ошибка. После изменения dl не будет пересчета границы для первого цикла. Идти лучше с конца, а удалять одной командой delete(nol, i, 1);


 
Anatoly Podgoretsky   (2003-10-24 10:32) [4]

Ничего себе подарочек, но может она просто про вопрос забыла?
Ау.


 
Reindeer Moss Eater   (2003-10-24 10:33) [5]

Это что, удаление всех неодиночных пробелов?


 
Reindeer Moss Eater   (2003-10-24 10:35) [6]

А так не проще ?

While Pos(" ",MyStr) > 0 Do Delete(MyStr,Pos(" ",MyStr),1);


 
Zacho   (2003-10-24 10:36) [7]

Imho, это очередное упражнение для развития телепатических способностей форумчан ;-)
2 mari © :
Мои телепатические способности подсказывают, что тебе может помочь функция delete


 
mari   (2003-10-24 10:36) [8]

Всем спасибо, просто этот вопрос в чате обсуждался, а сюда я его из-за большого когда поместила
Вопрос в том, что не все корректно работате


 
Romkin   (2003-10-24 10:39) [9]

Наверно. Телепатую:

table1.fieldbyname("nol").AsString :=
stringReplace(table1.fieldbyname("nol").AsString, " ", "", [rfReplaceAll]);


 
Reindeer Moss Eater   (2003-10-24 10:41) [10]

Romkin ©

А тройные пробелы, а учетверенные, а у.......


 
Romkin   (2003-10-24 10:42) [11]

А... пофиг :)


 
Reindeer Moss Eater   (2003-10-24 11:17) [12]

Без сомнения пофик,
но тройные и четверные превратятся в двойные, а упятеренные в тройные и т.д.
:)


 
Sandman25   (2003-10-24 11:20) [13]

Так автору же вроде надо убить все пробелы. Для этого StringReplace подходит, только параметры другие :)


 
default   (2003-10-24 11:37) [14]

если скорость важна - лучше, наверно, копировать символы из исходной строки, исключая что нужно, в другую строку, а при Delete постоянно будет происходить перераспределение памяти под строку в случае динамических строк...


 
jack128   (2003-10-24 11:38) [15]


> mari © (24.10.03 10:22)

Если покопаться у мя на диске, то можно найти прошлое обсуждение этого вопроса, тогда даже были организованы небольшие соревнования по скорости работы разных алгоритмов...


 
Reindeer Moss Eater   (2003-10-24 11:44) [16]

А как убить все пробелы в строке с помощь одного вызова stringreplace?


 
Sandman25   (2003-10-24 11:45) [17]

StringReplace(string1, " " {пробел}, "" {пустая строка})


 
Sandman25   (2003-10-24 11:47) [18]

Точнее
StringReplace(string1, " " {пробел}, "" {пустая строка},[rfReplaceAll])


 
Romkin   (2003-10-24 11:53) [19]

2Reindeer Moss Eater И чем двойной пробел отличается от двух стоящих рядом?


 
Reindeer Moss Eater   (2003-10-24 12:03) [20]

Я вот про это:

ShowMessage(StringReplace("My..Very...Very....Sweet.....Sweet......Home.......","..",".",[rfReplaceAll]));


 
stud   (2003-10-24 12:06) [21]

if pos(st," ")<>0 then delete(st,pos(st," "),1) должно удалить все пробелы кроме одиночных


 
Reindeer Moss Eater   (2003-10-24 12:07) [22]

А также про это
ShowMessage(StringReplace("My..Very...Very....Sweet.....Sweet......Home.......","..","",[rfReplaceAll]));


 
Reindeer Moss Eater   (2003-10-24 12:07) [23]

stud ©

Должно, но в цикле


 
stud   (2003-10-24 12:10) [24]

ну да while


 
Fay   (2003-10-24 12:19) [25]

Я балдею! Этот вопрос теперь с "Сети" и "WinAPI" надо
переместить. Пусть тоже порадуются! 8)



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

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

Наверх




Память: 0.5 MB
Время: 0.034 c
7-42145
Эдуард
2003-09-03 17:29
2003.11.13
Как корректно (!) не дать приложению закрыться


1-41238
saurin
2003-10-31 14:05
2003.11.13
поиск DLL


3-40952
P0tia
2003-10-17 13:23
2003.11.13
Есть такая проблема.


14-42026
Сатир
2003-10-16 16:06
2003.11.13
Wanted!


11-41131
Kladov
2003-02-16 09:13
2003.11.13
Версия 1.68





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский