Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.03.2011, 03:52   #11
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а зачем искать неиспользуемый символ?
просто заменить все #13#10 на один из них.(на #10 например)
(и можно обратно вернуть)

проблема в том что виндоуз перевод строки состоит из двух символов которые реверсировать нельзя!(тогда в 99% они будут трактоваться как два перевода строки, Unix-#10 и Win-дополненный-#13#10(или Mac-#13))
еще можно сделать ничего предварительно не заменяя.
Код:
function ReverseText(Text:string):string;
var i,j:integer;
begin
 SetLength(Result,Length(Text));
 i:=1;
 j:=Length(Result);
 while j>=1 do
  begin
   Result[j]:=Text[i];
   dec(j);
   inc(i);
  end;
 Result:=StringReplace(Result,#10#13,#13#10,[rfReplaceAll]);
end;
примерно так(я не тестил)

Цитата:
Метод AnsiReverseString компилятору неизвестен.
а среда какая?
если юникодная(2009+) то просто ReverseString используйте.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 29.03.2011 в 03:57.
Пепел Феникса вне форума Ответить с цитированием
Старый 29.03.2011, 04:03   #12
Sparkman
220400
Форумчанин
 
Аватар для Sparkman
 
Регистрация: 21.05.2010
Сообщений: 726
По умолчанию

Цитата:
Сообщение от Valera Посмотреть сообщение
Добрый день.

У меня есть текст в Memo (любой, с абзацами). Нужно вывести здесь же все в обратном направлении. Метод AnsiReverseString компилятору неизвестен.
Код:
procedure ReversMemo(var memo : TMemo);
var i,j:integer;
    s:string;
begin
     for i:=0 to memo.Lines.Count-1 do
     begin
          s:='';
          for j:=Length(memo.Lines.Strings[i]) downto 1 do
          s:=s+memo.Lines.Strings[i][j];
          memo.Lines.Strings[i]:=s;
     end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
     ReversMemo(Memo1);
end;
и никаких переходов на следующую строку искать не требуется
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам.
Не учите человека, если вы не его учитель.

Последний раз редактировалось Sparkman; 29.03.2011 в 05:02.
Sparkman вне форума Ответить с цитированием
Старый 29.03.2011, 04:42   #13
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

var в вашей процедуре не нужен.
да и помоему ведь это инверсия каждой строки в мемо, но не их порядка..
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 29.03.2011, 05:02   #14
Sparkman
220400
Форумчанин
 
Аватар для Sparkman
 
Регистрация: 21.05.2010
Сообщений: 726
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
var в вашей процедуре не нужен.
да и помоему ведь это инверсия каждой строки в мемо, но не их порядка..
Код:
procedure ReversMemo(memo : TMemo);
var i,j:integer;
    s:string;
begin
     for i:=0 to memo.Lines.Count-1 do
     begin
          s:='';
          for j:=Length(memo.Lines.Strings[i]) downto 1 do
          s:=s+memo.Lines.Strings[i][j];
          memo.Lines.Strings[i]:=s;
     end;
     for i:=0 to (memo.Lines.Count-1)div 2 do
     begin
          s:=memo.Lines.Strings[i];
          memo.Lines.Strings[i]:=memo.Lines.Strings[memo.Lines.Count-i-1];
          memo.Lines.Strings[memo.Lines.Count-i-1]:=s;
     end;
end;
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам.
Не учите человека, если вы не его учитель.
Sparkman вне форума Ответить с цитированием
Старый 29.03.2011, 08:58   #15
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,528
По умолчанию

Цитата:
а зачем искать неиспользуемый символ?
просто заменить все #13#10 на один из них.(на #10 например)
а зачем вообще заменять.
1. переворачивем.
2. находим комбинацию #A#D (перевернутую #D#A) и переворачиваем обратно (эти два символа.
Код:
k:=pos(#A#D, s);
while k>0 do begin
  s[k]:=#D; s[k+1]:=#A; 
  k:=posEx(#A#D, s, k);
end;
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 29.03.2011, 09:39   #16
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
а зачем вообще заменять.
1. переворачивем.
2. находим комбинацию #A#D (перевернутую #D#A) и переворачиваем обратно (эти два символа.
Код:
Цитата:
еще можно сделать ничего предварительно не заменяя.
просто писалось то по ходу мысли в 5 утра.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
код ассемблер который имеет фунцию команды "dir"(MS-DOS) anonim90 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 14.12.2010 19:27
Создание собственного класса. Который считает время(нужен секундамер) и имеет массив данных int ciberlex404 Общие вопросы C/C++ 0 04.06.2010 20:12
Найти студента который имеет среднее количество пропусков. LUKICH Фриланс 1 01.06.2010 09:15
Вывести числа в обратном порядке asmcc Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 14 20.02.2010 11:46
Народ как загрузить текст в Memo из готового фала, который указан в ListBox?) OPF_Nik Общие вопросы Delphi 7 09.11.2009 23:13