![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Текстовый файл грузится в stringList. В загруженном тексте есть где-то символы $40, нужно найти эти символы, а затем сдвинуться влево на 5 символов от найденных $40 и переписать сверху старые символы на новые два (на число 15)
Например:аааааааааа$40аааааааа, результат: ааааа15ааа$40аааааааа. Спасибо большое за работающие ответы!!! |
|
#2
|
||||
|
||||
|
Цитата:
1. находишь длину строки. 2. находишь позицию символа $40. 3. склеиваешь заново строку. с учетом -5 символов. |
|
#3
|
|||
|
|||
|
логику я понял, а какие функции использовать чтобы это реализовать?
|
|
#4
|
||||
|
||||
|
Цитата:
2. pos 3. copy 1. length Последний раз редактировалось Konrad, 30.01.2011 в 01:47. |
|
#5
|
|||
|
|||
|
а зачем мне длину строки определять, мне типа такого надо:
Код:
i := Pos('$40',s);
i := i -5;
s[i] := '1';
s[i+1] := '5';правильно?? Или что-то лучше есть? |
|
#6
|
|||
|
|||
|
Ну, в общем правильно. Только эф-нее будет как-то так
Код:
var
S : String;
I, J : Intger;
begin
For I := 0 To StringList.Count-1 Do
Begin
S := StringList[i];
For J := 1 To Length(S) Do
If (S[J] = #40) And (J > 4) Then // Если поз-я <= 4 то -5 не получится
Begin
S[J-5] := '1';
S[J-4] := '5';
End;
StringList[i] := S;
End;
end; |
|
#7
|
|||
|
|||
|
Уважаемый lmikle, использую Ваш код, но он ничего не делает, сохраняется первоначальный вариант текста без замены:
Код:
var
S : String;
I, J : Integer;
str:tstringlist;
begin
str:=tstringlist.Create;
str.LoadFromFile('1.txt');
For I := 0 To Str.Count-1 Do
Begin
S := Str[i];
For J := 1 To Length(S) Do
If (S[J] = #30) And (J > 4) Then // Если поз-я <= 4 то -5 не получится
Begin
S[J-5] := 'Z';
S[J-4] := 'Z';
End;
Str[i] := S;
End;
str.SaveToFile('2.txt');
str.Free;
end; |
|
#8
|
|||
|
|||
|
хм...интересно, а что вы подразумеваете под поиском литеры (#30)???
если вы хотите чтобы данный пример работал по принципу как из заголовка темы, то и поиск делайте соответствующий... Код:
var
S : String;
I, J : Integer;
str:tstringlist;
begin
str:=tstringlist.Create;
str.LoadFromFile('1.txt');
For I := 0 To Str.Count-1 Do
Begin
S := Str[i];
For J := 1 To Length(S) Do
If (S[J] ='$' ) and ((S[J+1] ='4' )) and ((S[J+2] ='0' )) And (J > 4) Then // Если поз-я <= 4 то -5 не получится
Begin
S[J-5] := '1';
S[J-4] := '5';
End;
Str[i] := S;
End;
str.SaveToFile('2.txt');
str.Free;
end; |
|
#9
|
|||
|
|||
|
exactly!!!
|