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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.12.2014, 20:45   #31
Alexander_
Пользователь
 
Регистрация: 30.11.2014
Сообщений: 19
По умолчанию

Я так понимаю что проблема в том что в Мемо записывает весь текст подряд, а не выборочно. А что если вместо полей Мемо создать две переменные с которыми и организовать подпрограмму "Fine and Replace"?
Alexander_ вне форума Ответить с цитированием
Старый 09.12.2014, 06:31   #32
Iron Monk
Форумчанин
 
Аватар для Iron Monk
 
Регистрация: 05.10.2007
Сообщений: 478
По умолчанию

Цитата:
Сообщение от Alexander_ Посмотреть сообщение
Я так понимаю что проблема в том что в Мемо записывает весь текст подряд, а не выборочно. А что если вместо полей Мемо создать две переменные с которыми и организовать подпрограмму "Fine and Replace"?
Всё не так. В Мемо, действительно, записывается весь текст подряд, но обрезается кусок строки с символом "]" и программа не выходит из цикла, пока не забьет память. Не влезают такие огромные строки.
Iron Monk вне форума Ответить с цитированием
Старый 09.12.2014, 08:08   #33
Alexander_
Пользователь
 
Регистрация: 30.11.2014
Сообщений: 19
По умолчанию

Цитата:
Сообщение от Iron Monk Посмотреть сообщение
Всё не так. В Мемо, действительно, записывается весь текст подряд, но обрезается кусок строки с символом "]" и программа не выходит из цикла, пока не забьет память. Не влезают такие огромные строки.
Возможно ли редактировать программу под такие документы?
Alexander_ вне форума Ответить с цитированием
Старый 09.12.2014, 08:11   #34
Iron Monk
Форумчанин
 
Аватар для Iron Monk
 
Регистрация: 05.10.2007
Сообщений: 478
По умолчанию

Нужно подумать)))
Iron Monk вне форума Ответить с цитированием
Старый 11.12.2014, 01:48   #35
Alexander_
Пользователь
 
Регистрация: 30.11.2014
Сообщений: 19
По умолчанию

Цитата:
Сообщение от Iron Monk Посмотреть сообщение
Нужно подумать)))
Возможно бред, но где-то слишал что в Мемо есть ограничение по символам, что если его заменить на ЛистБокс или уьрать вовсе?
Alexander_ вне форума Ответить с цитированием
Старый 11.12.2014, 13:22   #36
Iron Monk
Форумчанин
 
Аватар для Iron Monk
 
Регистрация: 05.10.2007
Сообщений: 478
По умолчанию

Цитата:
Сообщение от Alexander_ Посмотреть сообщение
Возможно бред, но где-то слишал что в Мемо есть ограничение по символам, что если его заменить на ЛистБокс или уьрать вовсе?
Ок.
Код:
   //****************************//
   tmpString := TStringList.Create;
   ListBox1.Clear;
   ListBox2.Clear;
   ListBox1.Items.Append(WordApp.ActiveDocument.Range.Text);
   for i:=0 to  ListBox1.Count - 1 do
   begin
       tmp:= ListBox1.Items[i];
       while Pos('[', tmp) > 0 do
           begin
           delete(tmp, 1, Pos('[', tmp)-1);
           tmpString.Add(Copy(tmp, Pos('[', tmp),Pos(']', tmp)));
           delete(tmp, 1, Pos(']', tmp));
           end;
       end;
       ListBox1.Items.Assign(tmpString);
       for i:= 0 to ListBox1.Count - 1 do
       _pOpros(i);
   //****************************//
Код:
procedure TForm1._pOpros(var num: integer);
var
 s: AnsiString;
 s1, v: string;
 i, i1, M, N: integer;
 flg, fgl: boolean;
begin
 s:= ListBox1.Items[num];
 M:= StrToInt(Edit1.Text);
 s1:= '';
 flg:= false;
 i1:= 0;
 for i := 1 to Length(s) do
  begin
   s1:= s1 + s[i];
   if (s[i] = '[') or (s[i] = ';') then flg:= true;
   if flg then
    begin
     fgl := s[i+1] = ' ';
     if s[i] in ['0'..'9'] then inc(i1);
     if (not (s[i+1] in ['0'..'9'])) and (not fgl) then
      begin
       v:= Trim(Copy(s1, (Length(s1)-i1)+1, Length(s1)));
       flg:= false;
       if v <> '' then
         begin
          N:= StrToInt(v);
          if N > M then v:= IntToStr(N+1);
          if N = M then v:= 'Ы';
          if N < M then v:= IntToStr(N-1);
          Delete(s1, (Length(s1)-i1)+1, Length(s1));
          s1:= s1 + v;
          i1:= 0;
         end;
      end;
    end;
  end;
 ListBox2.Items.Add(s1);
 FindAndReplace(ListBox1.Items[num],ListBox2.Items[num]);
end;
Код:
function FindAndReplace(const FindText, ReplaceText: String):boolean;
const
wdReplaceAll = 2;
var
i, n: integer;
FT, RT: string;
begin
  i:=  Length(FindText) div 255;
  for n:= 0 to i do
  begin
  FT:= Copy(FindText ,n*255+1, 255);
  RT:= Copy(ReplaceText ,n*255+1, 255);
  WordApp.Selection.Find.Text := FT;
  WordApp.Selection.Find.Replacement.Text :=RT;
  FindAndReplace:= WordApp.Selection.Find.Execute(Replace:=wdReplaceAll);
  end;
end;
Iron Monk вне форума Ответить с цитированием
Старый 11.12.2014, 19:21   #37
Alexander_
Пользователь
 
Регистрация: 30.11.2014
Сообщений: 19
По умолчанию

Iron Monk, да, теперь работает правильно и даже быстрее.
СПАСИБО!
Alexander_ вне форума Ответить с цитированием
Старый 11.12.2014, 19:34   #38
Iron Monk
Форумчанин
 
Аватар для Iron Monk
 
Регистрация: 05.10.2007
Сообщений: 478
По умолчанию

Пожалуйста)))
Iron Monk вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача о замене оборудования kirusha26 Помощь студентам 0 05.12.2010 17:09
Вопрос по замене строк agent007 Общие вопросы C/C++ 0 07.07.2010 17:59
Програма для нахождения НОД трех чисел Draips Помощь студентам 3 26.04.2010 22:04
Програма для нахождения НОК трех чисел Draips Помощь студентам 5 26.04.2010 20:38
Задача по замене строк motorway PHP 3 06.07.2009 23:58