Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под Windows > Delphi
Перезагрузить страницу Можно ли реанимировать код
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Виталик 1 Виталик 1 вне форума
Member
 
Сообщений: 1,286
Сказал(а) спасибо: 1
Поблагодарили 3 раз(а) в 2 сообщениях
Регистрация: 14.06.2006
По умолчанию 20.03.2007, 20:59

У меня вопрос: мжно ли реанимировать данный код
Код:
function Translation(Str: string): string;
var
S: string;
a: integer;
begin
for a:=1 to Length(str) do
begin
case str[a] of
'A':s:=s+'Ф';
'B':s:=s+'И';
'C':s:=s+'С';
...
else s:=s+str[a];
end;
Result:=s;
end; end;
так, что бы вместо букв (всех подряд) заменялись в мемо все подряд слова?
Ответить с цитированием
  (#2 (permalink)) Старый
dmiantosha dmiantosha вне форума
Member
 
Сообщений: 69
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 13.02.2007
По умолчанию 20.03.2007, 22:09

Необходимо считывать по символьно все равно. Считываешь до пробела, получаешь слово, затем также Case S of и т.д.

Как раз воспользуежся своей функцией Translation/
Ответить с цитированием
  (#3 (permalink)) Старый
Виталик 1 Виталик 1 вне форума
Member
 
Сообщений: 1,286
Сказал(а) спасибо: 1
Поблагодарили 3 раз(а) в 2 сообщениях
Регистрация: 14.06.2006
По умолчанию 20.03.2007, 22:21

Понимаешь, дело в том, что слов может быть много, а пробелов могут ткнуть и пять и десять. Я думал, конечно о том, что бы считывать до пробела, но первое, что мне пришло в голову - это то что есть любители жать по два, а то и три пробела Среди моих друзей таких двое Поэтому это мне не подходит. Млжет есть еще какой-то способ? У меня еще есть функция замены строки в подстроке. Может ее как-то переделать?

Подажи, тока щас доперло: если даже десяток пробелов воткнуть - так все равно по идее же должно сработать, т.к. условием является: если есть хотябы один пробел между знаками - это два слова. Так же? Тогда вопрос следующий: как именно считывать до пробела, а самое ГЛАВНОЕ: как считать все подряд?
Ответить с цитированием
  (#4 (permalink)) Старый
dmiantosha dmiantosha вне форума
Member
 
Сообщений: 69
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 13.02.2007
По умолчанию 20.03.2007, 23:58

Примерно все это так.
Код:
For i:=0 to Memo.Lines.Count-1 do
begin
S:=Memo.Linse[i];
For k:=1 to length[S]-1 do;
begin

If S[i]<>' ' then 
begin
Slovo:=Slovo+S[i];
StartSlovo:=True;
end;

If (S[i]=' ') and (StartSlovo=True) then 
begin
Здесь делаешь, что там тебе надо со словом.
Slovo:=' ';
StartSlovo:=False;
end;

end;


end;
Ответить с цитированием
  (#5 (permalink)) Старый
Remach Remach вне форума
Новичок
 
Сообщений: 11
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 17.02.2007
По умолчанию 21.03.2007, 02:11

Двойные пробелы легко удаляются функцией StringReplace (или ReplaceString)
Код:
while pos('  ',str) <>0 do ReplaceString(str,'  ',' ')
Не забудь про табуляторы, я бы заменил с начала их на пробелы, а потом проверял на двойные.

ИМХО:
  1. Подобные процедуры (Транслитерации, подсчет вхождения каждого символа и т.п.) гораздо проще реализовать через массивы.
  2. Они уже давно написаны (Сообщ. 12)
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
Виталик 1 Виталик 1 вне форума
Member
 
Сообщений: 1,286
Сказал(а) спасибо: 1
Поблагодарили 3 раз(а) в 2 сообщениях
Регистрация: 14.06.2006
По умолчанию 21.03.2007, 02:32

Транслитерацию я писал, когда еще, если так можно сказать, в области программирования под стол пешком ходил. Еще и о форумах дельфи не знал и тут зарегин не был.

А сенйчас мне именно, что бы слова заменялись надо. Вот я и привел в пример свой кодик, мол его как подправить. А за ссылку все равно пасибкииииии!
Ответить с цитированием
  (#7 (permalink)) Старый
dmiantosha dmiantosha вне форума
Member
 
Сообщений: 69
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 13.02.2007
По умолчанию 21.03.2007, 02:55

Кстати с букавми. Я не уверен, но англиские и рксские буквы на клаве различаюся на некоторое число. Вроде бы S+#123=Ы. И т.д. Ну там не 123, а, скорее всего, какая постояная разница.
Ответить с цитированием
  (#8 (permalink)) Старый
imported_Санчес imported_Санчес вне форума
Member
 
Сообщений: 16
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 09.06.2004
По умолчанию 21.03.2007, 03:04

Цитата:
Кстати с букавми. Я не уверен, но англиские и рксские буквы на клаве различаюся на некоторое число. Вроде бы S+#123=Ы. И т.д. Ну там не 123, а, скорее всего, какая постояная разница.
Нет, это зависит от используемой кодовой страницы и в общем случае неверно.
Ответить с цитированием
  (#9 (permalink)) Старый
dmiantosha dmiantosha вне форума
Member
 
Сообщений: 69
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 13.02.2007
По умолчанию 21.03.2007, 03:34

Возможно, что для данной кдовой странице это и будет рабоать. А для другой, можно высчитать разницу. Ы-S=#d123. Хотя, все это желание выдать фантазию за реальность.
Ответить с цитированием
  (#10 (permalink)) Старый
Garik888 Garik888 вне форума
Участник
 
Сообщений: 112
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 22.07.2004
По умолчанию 21.03.2007, 11:58

Код:
function ReplaceSub(str, sub1, sub2: string): string;
var
  aPos: Integer;
  rslt: string;
begin
  aPos := Pos(sub1, str);
  rslt := '';
  while (aPos <> 0) do
  begin
    rslt := rslt + Copy(str, 1, aPos - 1) + sub2;
    Delete(str, 1, aPos + Length(sub1) - 1);
    aPos := Pos(sub1, str);
  end;
  Result := rslt + str;
end;
Может это поможет. Данная функция заменяет в строке "str", все слова "sub1" на "sub2".
Ответить с цитированием
  (#11 (permalink)) Старый
Виталик 1 Виталик 1 вне форума
Member
 
Сообщений: 1,286
Сказал(а) спасибо: 1
Поблагодарили 3 раз(а) в 2 сообщениях
Регистрация: 14.06.2006
По умолчанию 24.03.2007, 01:46

Всем спасибо, решение уже найдено! СПАСИБО за ваши ответы!
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Где в кеше можно найти просмотренное видео в интернете? И можно ли его сохранить? Белочка Любые вопросы от новичков 22 04.04.2012 21:41
Можно ли реанимировать съемный HDD Bol Любые вопросы от новичков 3 19.02.2012 12:03
Помогите "Реанимировать" Win Vista Rusta Любые вопросы от новичков 3 13.12.2011 09:41
колонка, монитор включать/выключать - как можно реже или как можно чаще? freekzod Любые вопросы от новичков 10 14.10.2011 03:03
Помогите чайнику реанимировать компьютер )) Fedy Любые вопросы от новичков 24 04.05.2011 18:29
Как можно сделать так, чтобы по компоненту PictureBox можно было рисовать мышкой HIMIK Visual Basic 0 31.03.2011 22:32
Как можно и можно ли вообще в С++ привязать программу к процессу lamerOk C++ Builder 1 11.03.2011 00:42
Возможно ли реанимировать материнскую плату BF6 - ABIT? Scream Техническая поддержка 7 22.10.2008 02:11
Есть ли возможность реанимировать видеокарту? FNV Техническая поддержка 10 23.05.2008 20:38
Как можно прикрепить Help , чтобы потом можно было ее перемещать sq-Weezee C++ Builder 8 01.03.2006 07:49
Как можно если можно в RicheEdit впихнуть изображение mefest C++ Builder 2 15.12.2004 00:52
Где можно достать полный пакет Visual Studio, чтобы можно было работать с базами Kelt Visual C++ 0 08.10.2004 09:22



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов