Форум: "Начинающим";
Текущий архив: 2006.03.12;
Скачать: [xml.tar.bz2];
ВнизЗамена строки в Memo Найти похожие ветки
← →
Костя (2006-02-24 16:24) [0]Доброго времени суток !
У меня вопрос возник, подскажите пожалуйста.
У меня есть файл txt, я его загружаю в Memo и делаю поиск и замену строки:
вот так выглядит файл
/////////////////////////////////
// City //
// Planet //
// Money //
/////////////////////////////////
Например я ищу строку Money и хочу её заменить на строку введённую в Edit, вот такая процедурка эта делает у меня:
procedure TForm1.Button1Click(Sender: TObject);
var mm:string;
begin
mm:=StringReplace(Memo1.Text, "Money", Edit1.Text, [rfReplaceAll]);
Memo1.Text:=mm;
end;
но допустим ввели мы слово длинее чем слово Money например NoneMoney, соответственно оно заменяет его, но тогда съезжает форматирование файла (косые линии) взависимости от того если короче то съзжает влево, а если длинее то вправо.
Помогите пожалуйста, как реализовать нормальную замену без искажения форматирования документа.
Заранее всем благодарен.
← →
Desdechado © (2006-02-24 18:29) [1]1. меняем короткое на длинное: дополнить пробелами заменяемое короткое
2. меняем длинное на короткое: дополнить пробелами заменяющее короткое
а потом StringReplace
ps дополнять пробелами можно спереди, сзади, с обеих сторон
← →
API (2006-02-24 18:30) [2]Помогите пожалуйста, как реализовать нормальную замену без искажения форматирования документа.
Первое, что напрашивается:
- использовать для TMemo непропорциональный шрифт, например, Courier, Courier New, И
- замену производить на строку той же длины (количество символов), добавляя, если нужно, пробелы.
Однако, если новая строка заведомо длиннее старой строки, то такой метод применить не удастся.
В такой ситуации надо писать уже довольно серьезный "текстовый процесор", который будет задокументированно использовать символы "/" в качестве "визуального оформления", и будет уметь находить визуальную границу (как в примере), и производить корректировку (а методы уже могут быть разные).
← →
Belorus © (2006-02-24 18:43) [3]s:="// ABCDEFG //";
nw:="slovco";
cs:=s;
For x:=4 to Length(s-2) do
For x2:=1 to Length(nw) do
cs[x]:=nw[x2];
← →
API (2006-02-24 18:50) [4]Belorus © (24.02.06 18:43) [3]
А что Ваш код делает?
← →
Костя (2006-02-26 12:47) [5]Извините пожалуйста, задание немного усложняется.
Есть такой файл, но немного переработаный:
/////////////////////////////////
// City //
// //
// Planet //
// //
// Money //
// Yes //
// //
/////////////////////////////////
Надо заменить Money Yes на например NoneMoney GameOver
и чтобы оно выглядело так:
/////////////////////////////////
// City //
// //
// Planet //
// //
// NoneMoney //
// GameOver //
// //
/////////////////////////////////
причём NoneMoney GameOver вводиться только с Memo
в виде:
NoneMoney
GameOver
Как опять же сделать так что б неисказился рисунок границы в файле при вводе с Memo данных.
Очень хотелось бы кода побольше увидеть чем теории, так как только начинаю програмировать, а в коде мне легче разобраться.
Ещё раз всем большое спасибо.
П.С. У меня получается что рисунок искажается вот так:
/////////////////////////////////
// City //
// //
// Planet //
// //
// NoneMoney
GameOver //
// //
/////////////////////////////////
← →
Anatoly Podgoretsky © (2006-02-26 14:20) [6]А как ты этого достиг?
← →
Alarm © (2006-02-26 14:45) [7]Мне кажется, что зря все попытки помочь автору поста. Поскольку задача до некоторой степени очень надумана (файл, отображение в Мемо, особенно с ///).
Предложение автору: сформулируй конкретнее свои проблемы. Объясни для какой цели служат "/////...", какую они несут информацию? Можно все это понять, если это какой-либо собственный тренинг
← →
Костя (2006-02-26 16:15) [8]
> Мне кажется, что зря все попытки помочь автору поста. Поскольку
> задача до некоторой степени очень надумана (файл, отображение
> в Мемо, особенно с ///).
> Предложение автору: сформулируй конкретнее свои проблемы.
> Объясни для какой цели служат "/////...", какую они несут
> информацию? Можно все это понять, если это какой-либо собственный
> тренинг
>
Поясняю.
В Memo грузится файл тхт, // - штуки нужны просто так, вместо них можно любое подставить, важно не то какие они, а то как вставить текст так, что б рисунок не исказился. Нечто похожее есть в ASCII.
была идея что надо вставить одну строку, я её уже решил, но вот как вставить многострочное, для меня проблема.
← →
Desdechado © (2006-02-26 16:41) [9]много строк - это несколько раз по одной
неужели трудно догадаться?!
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.03.12;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.014 c