|
Вопрос # 4 034/ вопрос открыт / |
|
Здравствуйте, эксперты!
Я беру из Мемо строку (в цикле) на обработку и переворачиваю её (abc.123/123.abc), потом возвращаю обратно в Мемо.
Мне нужно сделать так, чтобы переменная (или Memo1.Lines.Strings[i];) очищалась перед тем как обработанная строка возвращается обратно.
То есть берётся строка и удаляется ,затем переворачивается и вставляется обратно.
Мне кажется нужно вырезать её в переменную.
Буду благодарен за код всей задумки!
Заранее Спасибо за советы, и за код по возможности!
Примечание #1 (15 апреля 2010, 00:34): Delphi 7
Переспрашу :
Как вырезать строку в цикле, затем развернуть её (abc.123/123.abc) на раздлителе и вставить обратно?
 |
Вопрос задал: Ximer (статус: Посетитель)
Вопрос отправлен: 15 апреля 2010, 00:03
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: min@y™
Ну, вот типа как-то так:
function ReverseString(const S: string): string;
var
Index: Integer;
Temp: string;
begin
Index:= Pos('.', S);
if Index <> 0
then Result:= Copy(S, Index + 1, High(Integer)) + '.' + Copy(S, 1, Index - 1)
else Result:= S;
end;
procedure ReverseLines(ALines: TStrings);
var
Index: Integer;
begin
ALines.BeginUpdate();
try
for Index:= 0 to ALines.Count - 1 do
ALines[Index]:= ReverseString(ALines[Index]);
finally
ALines.EndUpdate();
end;
end;
// Разворот строк Memo1:
ReverseLines(Memo1.Lines);
 |
Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 15 апреля 2010, 08:18
Оценка за ответ: 5
Комментарий к оценке: ;)
|
Мини-форум вопроса
Всего сообщений: 22; последнее сообщение — 15 апреля 2010, 22:41; участников в обсуждении: 3.
Страницы: [1] [2] [Следующая »]
|
Вадим К (статус: Академик), 15 апреля 2010, 00:11 [#1]:
очистка строки
s := '';
или этого не достаточно?
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Ximer (статус: Посетитель), 15 апреля 2010, 17:04 [#2]:
Примечание # 1 (15 апреля 2010, 00:34): Delphi 7
Переспрашу :
Как вырезать строку в цикле, затем развернуть её (abc.123/123.abc) на раздлителе и вставить обратно?
|
|
Вадим К (статус: Академик), 15 апреля 2010, 17:50 [#3]:
Цитата (Ximer):
ПереспрОшу
зачем ее вырезать, если можно просто присвоить и старая затрется?
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Ximer (статус: Посетитель), 15 апреля 2010, 18:35 [#4]:
не , старая в том то и дело не затерается, он её берёт /переворачивает и вставляет обратно, тоесть еби была одна строка и= становится 2.
|
|
min@y™ (статус: Доктор наук), 15 апреля 2010, 18:35 [#5]:
Цитата (Вадим К):
Переспрашу :
А мой код в ответе тебя не устраивает? Почему?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
min@y™ (статус: Доктор наук), 15 апреля 2010, 18:42 [#6]:
Цитата (Ximer):
тоесть еби была одна строка и= становится 2.
Код покажь!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Вадим К (статус: Академик), 15 апреля 2010, 18:57 [#7]:
подозреваю, что вместо
lines[i] := newstring;
человек пишет
lines.insert(i, newstring);
Галочка "подтверждения прочтения" - вселенское зло.
|
|
min@y™ (статус: Доктор наук), 15 апреля 2010, 19:19 [#8]:
Цитата (Вадим К):
подозреваю, что вместо lines[i] := newstring; человек пишет lines.insert(i, newstring);
Ну вот скажи мне, чем мой код ему не подходит-то?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Ximer (статус: Посетитель), 15 апреля 2010, 20:48 [#9]:
min@y™
Твой код норм, но похоже ты не обратил внимание на то что надо переворачивать не каждый символ а до определённого разделителя.
(abc.123/123.abc)
|
|
min@y™ (статус: Доктор наук), 15 апреля 2010, 21:20 [#10]:
Аааа. Чо ж ты сразу не сказал? Я ответ написал в 9-м часу утра, ёмаё, а щас у меня тут 21:20. Больше пол-суток флеймом занимался.
Перечитай СВОИ сообщения и вопрос. Поймёшь, почему я не обратил внимание. Вопрос был сформулирован хреново. И поэтому у тебя до сих пор нет решения.
Формулировка, исключающая разночтения, должна быть примерно такая: "Есть строка символов. Где-то в строке есть символ "точка" ("."). Задача: найти точку, запомнить символы до точки, затем удалить эти символы и точку; далее к оставшимся символам исходной строки справа приписать точку, а справа от этой точки - запомненный ранее фрагмент. В случае, если точки в строке нет и/или этих точек несколько, делать то-то и то-то...".
Правильно сформулированная задача - 50% её правильного решения.
Мне ответ переделать? Если да - переформулируй вопрос по-человечески.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Ximer (статус: Посетитель), 15 апреля 2010, 21:31 [#11]:
Ok!
Смысл Да, ты его понял)
Пример:
В Мемо есть строка такого тиапа:
123(Разделитель)ABC
Ахалай махалай:
ABC(Разделитель)123
Тоесть, нужно вырезать всю строку(Всё в цикле), разбить на 3 переменные, и встоалять обратно=>переменые:
1. ABC
2. (Разделитель)
3. 123
Затем вставлять обратно, в обратном порядке:
1. 123
2. (Разделитель)
3. ABC
Даже начну:
var
i:integer;
s,L,C,P:string;
begin
for i:=0 to Memo1.Lines.Count do begin
s:=Memo1.Lines.Strings[i];
L:=''; C=''; P:='';
//L-Левоя сторона
//C-Центер(Разделитель)
//P-Правая сторона
//Далее ищем разделитель=>
//Присваиваем всё переменным(Вырезаем)=>
//Разбиваем строку=>
//Вставляем всё обратно, в обратном порядке=>|
|
|
min@y™ (статус: Доктор наук), 15 апреля 2010, 21:38 [#12]:
Про нумерацию (1.2.3.) ты не говорил. То есть из одной строки "123(Разделитель)ABC" должно получиться три разных строки с нумерацией?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
min@y™ (статус: Доктор наук), 15 апреля 2010, 21:42 [#13]:
Кстати, я код ответа подправил. Не подойдёт ли?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Ximer (статус: Посетитель), 15 апреля 2010, 21:47 [#15]:
Можно не вырезать а просто очистить обрабатываемую строку перед вставкой реверса.
|
|
Ximer (статус: Посетитель), 15 апреля 2010, 21:51 [#16]:
Я непойму зачем ты создавай ЦЕЛУЮ функцию?! =)
|
|
Ximer (статус: Посетитель), 15 апреля 2010, 21:57 [#17]:
Он не возврощает всё что после точки
MAX_INT:integer;
|
|
min@y™ (статус: Доктор наук), 15 апреля 2010, 22:02 [#18]:
Цитата (Ximer):
Можно не вырезать а просто очистить обрабатываемую строку перед вставкой реверса.
А никто и не вырезает ничего.
Цитата (Ximer):
Я непойму зачем ты создавай ЦЕЛУЮ функцию?! =)
А какая функция должна быть? Половинчатая?
Цитата (Ximer):
Он не возврощает всё что после точки
ОН - это ХТО?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
min@y™ (статус: Доктор наук), 15 апреля 2010, 22:02 [#19]:
Это мой косяк, замени MAX_INT на MAXINT или на High(Integer). А определение MAX_INT:integer из var удали.
Ответ подкорректировал.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
Ximer (статус: Посетитель), 15 апреля 2010, 22:14 [#20]:
Спасибо!
После долгих мучений, код у меня есть =)))
Пайду ещё вопросов подмамучю! =)))
|
Страницы: [1] [2] [Следующая »]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|