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

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.063 c
6-41861
Юрий Краснощек
2003-09-05 12:18
2003.11.13
Как узнать включен, ли компьютер в лок. сети. Не пингуя


1-41572
Udjin
2003-10-27 14:42
2003.11.13
Сравнение экземпляров классов


4-42236
Pattern
2003-08-30 16:09
2003.11.13
SendDlgItemMessage


1-41488
Centurion
2003-10-28 15:54
2003.11.13
AccessViolation


3-41067
Евгений.крск
2003-10-23 18:57
2003.11.13
Вопрос о кэшировании