begin
st:=':';
with Memo1.Lines do
for i:=Count-1 downto 0 do
begin
s:=Strings;
ndx:=Pos(st,s);
if ndx>0 then
begin
Delete(s,ndx-1,1);
Insert(s,ndx,'-');
end;
end;
end;
процедуры Delete и Insert при работе со строками
Код:
в цикле с memo подчеркнутые команды не выполняются, ибо подразумевают другие параметры. Можно ли как-нибудь всё-таки осуществить задуманное?..).
Strings:=s;
Над задуманным тобой способом думай сам. Есть более простой путь:
Код:
s := StringReplace(s, st, '-', []);
нет.. . Тут дело в том, что при в данном случае процедуры Delete и Insert не проходят компиляцию в том виде, в котором представил я.. . У процедуры Delete почему то вместо трех параметров становится возможным записать только один (саму строку). Типа Delete(Index:Integer).. А у Insert остается возможным два параметра Insert(Index:Integer,S:Integer).. . Поэтому, я просто не могу сделать то что хочу в цикле Memo
2Freeman
Эта одна строчка заменяет все мои потуги и прокатывает в цикле Memo.. . Спасибо, я не знал этой процедуры.. . Единственно, я не понял последнего параметра этой процедуры, определяемого как Flags:TReplaceFlags . Но всё работает..
у тебя произошло замещение оласти видимости на TStrings в экземпляре Lines, так как ты написал with конструкцию и Insert и Delete ссылались на методы Memo1.Lines, а не на традиционные паскалёвские функции.
Код:
System.Delete( s, ndx - 1, 1 );
System.Insert( s, ndx, '-' );
System.Insert( s, ndx, '-' );
2Sagittarius
спасибо.. . А System обязательно учту на будущее.. .