Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 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 Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: 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 Кстати ты не учел что при присваивании содержимого мемо переменной туда попадают и переводы строк ... Тут это учтено Единственное ограничение программа думает что пара символов встречается только один раз ...

Приложение:
  1. procedure TForm1.Button1Click(Sender: TObject);
  2.  
  3.  
  4. i,j,y:integer;
  5. begin
  6. for y:=0 to memo1.Lines.Count-1 do
  7. s:=s+memo1.Lines[y];
  8. i:= Pos('[',s);
  9. j:= Pos(']',s)-i;
  10. if (i<>0)and (j<>0)
  11. then Delete(s,i+1,j);
  12. memo1.Lines.Text:=s;
  13. end;


Ответ отправил: Anderson N.N (статус: 2-ой класс)
Время отправки: 23 декабря 2008, 23:35
Оценка за ответ: 5


Мини-форум вопроса

Всего сообщений: 9; последнее сообщение — 24 декабря 2008, 17:58; участников в обсуждении: 4.
DNK

DNK (статус: Студент), 23 декабря 2008, 22:43 [#1]:

Что значит не принимает? Подробней, что написал компилятор? Также теряюсь в догадках, почему в предпоследней строке Text[i] в ковычках.
"Digital Networked Knight"
Anderson N.N

Anderson N.N (статус: 2-ой класс), 23 декабря 2008, 23:41 [#2]:

Прошу прощения в приведенном мною выше коде опечатка в строке
Delete(s,i+1,j);
Нужно Дописать j-1 т.е в итоге
Delete(s,i+1,j-1);
Rinat

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

Rinat (статус: Посетитель), 24 декабря 2008, 01:36 [#4]:

делфи 2005 строка где присутствует delete окрашивается в красный цвет при попытке run
Anderson N.N

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

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]:

красиво:)
Галочка "подтверждения прочтения" - вселенское зло.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 31 марта 2023, 04:05
Выполнено за 0.03 сек.
Рейтинг@Mail.ru