| 
| 
 | Вопрос # 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] [Следующая »]  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |