| 
| 
 | Вопрос # 2 229/ вопрос открыт / | 
 |  Здравствуйте, уважаемые эксперты!Подскожите что не так  борланд не принимает  delete(fn,6,1);
 Необходимо в строке удалить часть строки от символа '['  до символа  ']' к примеру. или подскажите как сделать без delete
 Text:=Memo1.Lines.Text;
 for i := 1 to Length(Text) do
 t:=Pos('[',Text[i]);
 if t > 0 then
 fn:='Text[i]';
 delete(fn,6,1); // не принимает delete хоть убейся
 
|  |   Вопрос задал: Rinat (статус: Посетитель)Вопрос отправлен: 23 декабря 2008, 22:26
 Состояние вопроса: открыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: Anderson N.N Здравствуйте, Rinat!Вот вариант  с едитом не забывай
 procedure TForm1.Button1Click(Sender: TObject);
 var s:string;
 i,j,y:integer;
 begin
 s:=edit1.Text;
 i:= Pos('[',s);
 j:= Pos(']',s)-i;
 if (i<>0)and (j<>0)
 then Delete(s,i+1,j);
 edit2.Text:=s;
 end;
 
 Теперь вариант с memo1 Кстати ты не учел что при присваивании содержимого мемо переменной туда попадают и переводы строк ...  Тут это учтено Единственное ограничение программа думает что пара символов встречается только один раз  ...
 Приложение:Переключить в обычный режим procedure TForm1.Button1Click(Sender: TObject);       i,j,y:integer;begin   for y:=0 to memo1.Lines.Count-1 do       s:=s+memo1.Lines[y];   i:= Pos('[',s);   j:= Pos(']',s)-i;   if (i<>0)and (j<>0)   then Delete(s,i+1,j);   memo1.Lines.Text:=s;end;
|  | Ответ отправил: Anderson N.N (статус: 2-ой класс)Время отправки: 23 декабря 2008, 23:35
 Оценка за ответ: 5
 |  
 Мини-форум вопросаВсего сообщений: 9; последнее сообщение — 24 декабря 2008, 17:58; участников в обсуждении: 4. 
|   | DNK (статус: Студент), 23 декабря 2008, 22:43 [#1]:Что значит не принимает? Подробней, что написал компилятор? Также теряюсь в догадках, почему в предпоследней строке Text[i] в ковычках. "Digital Networked Knight" |  
|   | Anderson N.N (статус: 2-ой класс), 23 декабря 2008, 23:41 [#2]:Прошу прощения в приведенном мною выше  коде опечатка в строке Delete(s,i+1,j);
 Нужно Дописать j-1 т.е в итоге
 Delete(s,i+1,j-1);
 |  
|   | Rinat (статус: Посетитель), 24 декабря 2008, 01:33 [#3]:Delete ну ни как не принял не знаю почему помучился и вроде сделал без Delete спасибо
 begin
 // a:=Edit1.Text;
 //  b:=Edit1.Text;
 for i:=0 to Memo1.Lines.Count-1 do
 begin
 if checkbox1.Checked then begin
 a:=Edit1.Text;  showmessage(a+b);
 pp:=pos('[',Memo1.Lines[i]);
 if pp>0
 then begin
 Text:=Memo1.Lines[i];
 
 repeat
 t:=t+1;    b:=Edit1.Text;
 rr:=Pos(']',copy(Text,pp,t));
 until rr>0
 end ;
 Str1:=Memo1.Lines[i];
 
 Str4:=AnsiReplaceText(Str1, copy(Text,pp,rr), '');
 
 Memo1.Lines[i]:=Str4;
 end;
 end ;
 end;
 |  
|   | Rinat (статус: Посетитель), 24 декабря 2008, 01:36 [#4]:делфи 2005 строка где присутствует delete окрашивается в красный цвет при попытке run |  
|   | Anderson N.N (статус: 2-ой класс), 24 декабря 2008, 01:55 [#5]:я бы рад помочь но сам использую только делфи 7 |  
|   | Вадим К (статус: Академик), 24 декабря 2008, 11:18 [#6]:Надобно посмотреть, какую ошибку выдаёт делфи. Но скорее всего, Вы подключили какой то юнит, который тоже определяет функцию/процедуру delete. Для этого попробуйте написать System.delete(....) (в скобках Ваши параметры). Если это не заработает, подумайте, не используете ли вы .NET приложение - Делфи 2005 это позволяет.
 Если и это не так, тогда зажмите Ctrl и кликните по названию функции (то есть по delete, название станет как гиперссылка). и смотрите, в какой юнит закинет. Копируйте его название сюда, а также то, что написано у Вас в строке uses в вашем юните, где ошибка (а не открытом).
 Галочка "подтверждения прочтения" - вселенское зло. |  
|   | Вадим К (статус: Академик), 24 декабря 2008, 11:57 [#7]:to Anderson N.N 
 Цитата: var s:AnsiString; // такой тип потому что в мемо может оказаться текст длина
 //  которого значительно превышает 255 символов
 
 Обычный string тоже нормально работает. И даже б сказал правильнее. Потому что в 2009 делфи с такими фокусами можно долго плакать и думать (там всё юникодное). Я думаю, мало кто тут добавляет директиву компилятора {H-}/{H+} или лезит в настройки компилятора.
 Галочка "подтверждения прочтения" - вселенское зло. |  
|   | Rinat (статус: Посетитель), 24 декабря 2008, 17:54 [#8]:unit delete;//вот где проблема была  Вадим К прав!!!!!!!!!!!!!!!!!!!!!!!!!!! с меня оценка
 
 interface
 
 uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls,StrUtils;
 |  
|   | Вадим К (статус: Академик), 24 декабря 2008, 17:58 [#9]:красиво   Галочка "подтверждения прочтения" - вселенское зло. |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |