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

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

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

Delphi.int.ru Expert

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

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

#   

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


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

Подробнее »



Вопрос # 4 034

Раздел: Delphi » Прочее
/ вопрос открыт /

Здравствуйте, эксперты!
Я беру из Мемо строку (в цикле) на обработку и переворачиваю её (abc.123/123.abc), потом возвращаю обратно в Мемо.
Мне нужно сделать так, чтобы переменная (или Memo1.Lines.Strings[i];) очищалась перед тем как обработанная строка возвращается обратно.
То есть берётся строка и удаляется ,затем переворачивается и вставляется обратно.
Мне кажется нужно вырезать её в переменную.
Буду благодарен за код всей задумки!
Заранее Спасибо за советы, и за код по возможности!

Приложение:
  1. Delphi 7


Примечание #1 (15 апреля 2010, 00:34):
Delphi 7

Переспрашу :
Как вырезать строку в цикле, затем развернуть её (abc.123/123.abc) на раздлителе и вставить обратно?

Ximer Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: 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

Ximer (статус: Посетитель), 15 апреля 2010, 17:04 [#2]:

Примечание # 1 (15 апреля 2010, 00:34): Delphi 7

Переспрашу :
Как вырезать строку в цикле, затем развернуть её (abc.123/123.abc) на раздлителе и вставить обратно?
Вадим К

Вадим К (статус: Академик), 15 апреля 2010, 17:50 [#3]:

Цитата (Ximer):

ПереспрОшу

зачем ее вырезать, если можно просто присвоить и старая затрется?
Галочка "подтверждения прочтения" - вселенское зло.
Ximer

Ximer (статус: Посетитель), 15 апреля 2010, 18:35 [#4]:

не , старая в том то и дело не затерается, он её берёт /переворачивает и вставляет обратно, тоесть еби была одна строка и= становится 2.
min@y™

min@y™ (статус: Доктор наук), 15 апреля 2010, 18:35 [#5]:

Цитата (Вадим К):

Переспрашу :

А мой код в ответе тебя не устраивает? Почему?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
min@y™

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™

min@y™ (статус: Доктор наук), 15 апреля 2010, 19:19 [#8]:

Цитата (Вадим К):

подозреваю, что вместо lines[i] := newstring; человек пишет lines.insert(i, newstring);

Ну вот скажи мне, чем мой код ему не подходит-то?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Ximer

Ximer (статус: Посетитель), 15 апреля 2010, 20:48 [#9]:

min@y™

Твой код норм, но похоже ты не обратил внимание на то что надо переворачивать не каждый символ а до определённого разделителя.
(abc.123/123.abc)
min@y™

min@y™ (статус: Доктор наук), 15 апреля 2010, 21:20 [#10]:

Аааа. Чо ж ты сразу не сказал? Я ответ написал в 9-м часу утра, ёмаё, а щас у меня тут 21:20. Больше пол-суток флеймом занимался.
Перечитай СВОИ сообщения и вопрос. Поймёшь, почему я не обратил внимание. Вопрос был сформулирован хреново. И поэтому у тебя до сих пор нет решения.
Формулировка, исключающая разночтения, должна быть примерно такая: "Есть строка символов. Где-то в строке есть символ "точка" ("."). Задача: найти точку, запомнить символы до точки, затем удалить эти символы и точку; далее к оставшимся символам исходной строки справа приписать точку, а справа от этой точки - запомненный ранее фрагмент. В случае, если точки в строке нет и/или этих точек несколько, делать то-то и то-то...".
Правильно сформулированная задача - 50% её правильного решения.
Мне ответ переделать? Если да - переформулируй вопрос по-человечески.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Ximer

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™

min@y™ (статус: Доктор наук), 15 апреля 2010, 21:38 [#12]:

Про нумерацию (1.2.3.) ты не говорил. То есть из одной строки "123(Разделитель)ABC" должно получиться три разных строки с нумерацией?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
min@y™

min@y™ (статус: Доктор наук), 15 апреля 2010, 21:42 [#13]:

Кстати, я код ответа подправил. Не подойдёт ли?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Ximer

Ximer (статус: Посетитель), 15 апреля 2010, 21:45 [#14]:

Без слов вот видео: =)
http://slil.ru/28964940
Ximer

Ximer (статус: Посетитель), 15 апреля 2010, 21:47 [#15]:

Можно не вырезать а просто очистить обрабатываемую строку перед вставкой реверса.
Ximer

Ximer (статус: Посетитель), 15 апреля 2010, 21:51 [#16]:

Я непойму зачем ты создавай ЦЕЛУЮ функцию?! =)
Ximer

Ximer (статус: Посетитель), 15 апреля 2010, 21:57 [#17]:

Он не возврощает всё что после точки

MAX_INT:integer;
min@y™

min@y™ (статус: Доктор наук), 15 апреля 2010, 22:02 [#18]:

Цитата (Ximer):

Можно не вырезать а просто очистить обрабатываемую строку перед вставкой реверса.

А никто и не вырезает ничего.

Цитата (Ximer):

Я непойму зачем ты создавай ЦЕЛУЮ функцию?! =)

А какая функция должна быть? Половинчатая?

Цитата (Ximer):

Он не возврощает всё что после точки

ОН - это ХТО?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
min@y™

min@y™ (статус: Доктор наук), 15 апреля 2010, 22:02 [#19]:

Это мой косяк, замени MAX_INT на MAXINT или на High(Integer). А определение MAX_INT:integer из var удали.
Ответ подкорректировал.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Ximer

Ximer (статус: Посетитель), 15 апреля 2010, 22:14 [#20]:

Спасибо!
После долгих мучений, код у меня есть =)))

Пайду ещё вопросов подмамучю! =)))

Страницы: [1] [2] [Следующая »]

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

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:47
Выполнено за 0.05 сек.