Форум: "Начинающим";
Текущий архив: 2008.06.29;
Скачать: [xml.tar.bz2];
ВнизСтроковые функции Найти похожие ветки
← →
n_sch (2008-06-04 12:01) [0]Добрый день! Уважаемые мастера, помогите разобраться со строками есть текстовый файл примерно с таким содержанием (только гораздо больше):
18000 42306810840376102057 ХОРЕВА ЗИНАИДА МИХАЙЛОВНА
1539990 42306810840376103067 Иванов ПЕТР ВАСИЛЬЕВИЧ
надо вместо пробелов вставить символ "|" , мои жалкие попытки типа:
var
z,y:integer;
stroka:string;
begin
y:=Pos((stroka),Char(" "));
for z:=y to Length(stroka) do begin
if stroka[z]=" " then begin
insert("|",stroka,z);
ни к чему хорошему не приводят.... Подскажите пожалуйста, как вообще можно в этом случае использовать Pos и Insert и если можно хоть какой нибудь кусок кода, а то в Делфевом хелпе ну уж совсем какой то простой пример про Insert.
Заранее спасибо!
← →
Ega23 © (2008-06-04 12:04) [1]StringReplace + F1
← →
Рамиль © (2008-06-04 12:08) [2]Если пробел один и надо заменить на один | то зачем какие то pos insert?
А StringReplace работает очень медленно.
for z := 1 to Length(Stroka) do
if Stroka[z] = " " then Stroka[z] := "|";
← →
Рамиль © (2008-06-04 12:10) [3]А если так хочется воспользоваться именно Insert, то еще надо сделать Delete.
> а то в Делфевом хелпе ну уж совсем какой то простой пример
> про Insert.
А как там сложный пример сделать? Там и примера никакого не надо.
← →
n_sch (2008-06-04 12:25) [4]
> Если пробел один и надо заменить на один | то зачем какие
> то pos insert?
> А StringReplace работает очень медленно.
>
> for z := 1 to Length(Stroka) do
> if Stroka[z] = " " then Stroka[z] := "|";
С этим в принципе все ястно, я примерно так и начинал, я вхожу в "ступор" когда из исходной строки с пробелами надо сохранить строку с "|" в какую нибудь переменную, если можно подскажите......
← →
Рамиль © (2008-06-04 12:29) [5]Э... А оператор присваивания ( := ) не пробовали?
← →
Рамиль © (2008-06-04 12:31) [6]Что мешает сначала сохранить в другую переменную, а потом поменять.
Не, ну если очень хочется
S_out : string;
SetLength(S_out, Length(Stroka));
for z := 1 to Length(Stroka) do
if Stroka[z] = " " then S_out[z] := "|" else S_out[z] := Stroka[z];
← →
n_sch (2008-06-04 13:17) [7]
> Что мешает сначала сохранить в другую переменную, а потом
> поменять.
> Не, ну если очень хочется
>
> S_out : string;
>
> SetLength(S_out, Length(Stroka));
> for z := 1 to Length(Stroka) do
> if Stroka[z] = " " then S_out[z] := "|" else S_out[z] :
> = Stroka[z];
Спасибо, кажеться понял....
Еще вопрос если вас не затруднит, а собственно, что за флаги прсит функция StringReplace, я ей подкладываю rfReplaceAll, а она мне в ответ:
[Error] Incompatible types: "TReplaceFlags" and "Enumeration" ??????
← →
Плохиш © (2008-06-04 13:21) [8]
> n_sch (04.06.08 13:17) [7]
> Еще вопрос если вас не затруднит, а собственно, что за флаги
> прсит функция StringReplace, я ей подкладываю rfReplaceAll,
> а она мне в ответ:
> [Error] Incompatible types: "TReplaceFlags" and "Enumeration"
> ??????
А в справке что написано?
← →
Palladin © (2008-06-04 13:23) [9]В справке неоднозначно написано, что людям, понятия не имеющим о множествах, пользоваться функцией StringReplace противопоказанно в связи с опасностью узнать, что же такое множества.
← →
Плохиш © (2008-06-04 13:25) [10]
> Palladin © (04.06.08 13:23) [9]
т.е. им всё-таки придётся прочитать брошурку "Делфи за 21 секунду для полных идиотов"? :-)
← →
Palladin © (2008-06-04 13:38) [11]Ну если про множества там написано и под рукой ничего более серьезного нет - то, как ни крути, придется. Хотя в данном случае, думаю, аффтара удовлетворит "божественное чудо" в виде заключения значения в квадратные скобки. Он это примет как данное, как закон божий, не заморачиваясь, что это может значить. :)
← →
n_sch (2008-06-04 16:36) [12]Спасибо за "божественное чудо" в виде заключения значения в квадратные скобки.
Еще вопрос, как в строкe ну например вида "1230569027" поставить "." (точку) перед двумя последними знаками и получив "12305690.27 " сохранить в строковую переменную, я пробовал так:
var
x,y:integer;
cifra,cifra1,stroka:string;
begin
SetLength(cifra,Length(stroka));
SetLength(cifra1,Length(stroka));
for x:=1 to (Length(stroka)-2) do begin
cifra[x]:=stroka[x];
end;
for y:=x to x+2 do begin
cifra1[y]:=stroka[y];
end;
Edit1.Text:=cifra+"."+cifra1;
не получилось...Зарание спасибо!
← →
Palladin © (2008-06-04 16:39) [13]Insert + F1, выбрать где procedure
← →
Тын-Дын (2008-06-04 16:40) [14]
> n_sch (04.06.08 16:36) [12]
> поставить "." (точку) перед двумя последними знаками
А вот здесь как раз воспользуйся функцией Insert().
← →
n_sch (2008-06-04 17:30) [15]Да ребята, если честно этот раздел надо было назвать не НАЧИНАЮЩИМ а ДЛЯ ЛОХОВ, Insert + F1-я и сам прочитать могу, только уже говорил ранее что там пример про INSERT ни какой, вы бы лучше строчку нормального кода дали, для таких как я...или указали где я не правильно что написал в процедурке.
← →
Palladin © (2008-06-04 17:33) [16]тебе справку перевести? чего там может быть непонятного? перевожу на русский:
procedure Insert(Source: string; var S: string; Index: Integer);
процедура Вставить(Источник:Строка;ПоСсылке С:Строка; Индекс:ЦелоеЧисло);
что именно не понятно?
← →
Плохиш © (2008-06-04 17:37) [17]
> n_sch (04.06.08 17:30) [15]
Ну вот зачем ты, лох, лезешь в программирование, тут даже конференции для тебя нет?
← →
n_sch (2008-06-04 17:38) [18]Insert(".",stroka,Length(stroka)-2);
[Error] sbrf.pas(243): Constant object cannot be passed as var parameter
Вот это.....
← →
Плохиш © (2008-06-04 17:40) [19]
> n_sch (04.06.08 17:38) [18]
И что в сообщении об ошибке не понятно?
Зделай stroka не константой...
← →
Palladin © (2008-06-04 17:41) [20]при условии что
var
sroka:String;
это невозможно
приведи полный достоверный код сюда
← →
n_sch (2008-06-04 17:42) [21]Insert(".",Edit5.Text,Length(Edit5.Text)-2);
← →
Palladin © (2008-06-04 17:43) [22]
> n_sch (04.06.08 17:42) [21]
и чего же ты хотел, так и будет ругаться, заведи временную переменную s, сначала присвой ей Edit1.Text, потом вставь в нее Insert, а потом обратно присвой Edit1.Text переменную s
← →
Ultimate © (2008-06-04 17:46) [23]Сначала изучи паскаль) Потом за делфи берись... Я паскаль уже изучил... терь делфи изучаю... Наааамного проще... например посети http://паскал.гути.ру/
← →
n_sch (2008-06-04 17:46) [24]Спасибо !!!
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.06.29;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.04 c