Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

преобразовывать символы в буквы [D7, XP]


Name ©   (2007-02-25 14:11:00) 

Подскажите что я делаю неправильно. Функция должна преобразовывать символы в буквы.Спасибо

function Shif(const Str: string): string;
const
 RArrayL = '#176#174#153';
 RArrayU = '#34#131#172';
 colChar = 3;
 arr: array[1..2, 1..ColChar] of string =
 (('a','b','c'),
   ('A','B','C'));
var
 i: Integer;
 LenS: Integer;
 p: integer;
 d: byte;
begin
 result := '';
 LenS := length(str);
 for i := 1 to lenS do
 begin
   d := 1;
   p := pos(str[i], RArrayL);
   if p = 0 then
   begin
     p := pos(str[i], RArrayU);
     d := 2
   end;
   if p <> 0 then
     result := result + arr[d, p]
   else
     result := result + str[i];
end;end;


Name   (2007-02-26 12:35:00) [1]


> RASkov

Еще раз спасибо!


RASkov   (2007-02-25 23:31:00) [2]

> [6] Anatoly Podgoretsky ©   (25.02.07 16:32)

> [12] Плохиш ©   (25.02.07 21:46)

В контексте вопроса автора это "разные" вещи - ™,® -символы, нужно заменить на буквы - а,b,c :)
Чел выразился не совсем верно, ну или совсем неверно :)
> Name
Может надо было ченить так:
- "Функция должна преобразовывать "символы" в "буквы"."


RASkov   (2007-02-25 23:23:00) [3]

> [15] Name   (25.02.07 22:55)

Замени...
if ORD(Result[N])=ORD(SArr1[J]) then Result[N]:=SArr2[J];
...вот на это
if ORD(Result[N])=ORD(SArr1[J]) then begin Result[N]:=SArr2[J]; Continue; end;
Все немного побыстрее будет(не всегда).... думаю поймешь почему.


Name   (2007-02-25 22:55:00) [4]


> RASkov   (25.02.07 21:55) [14]

Спасибо огромное!


RASkov   (2007-02-25 21:55:00) [5]

> [11] Name   (25.02.07 20:38)

Попробуй так: (если я конечно правильно понял вопрос)

function ReplStr(const Str: String; const SArr1, SArr2: array of Char): String;
var N, J: Integer;
begin
 Result:=Str;
 if (Length(SArr1)=0) or (Length(Sarr2)=0) or (Length(SArr1)<>Length(SArr2)) then Exit;
 for N:= 1 to Length(Result) do
  for J:= 0 to Length(SArr1)-1 do if ORD(Result[N])=ORD(SArr1[J]) then Result[N]:=SArr2[J];
end;

procedure TForm1.Button6Click(Sender: TObject);
const S1: array [0..5] of Char = #176#174#153#34#131#172;
     S2: array [0..5] of Char = 'abcABC';
var N: Integer;
begin
 Memo3.Clear;
 for N := 0 to Memo2.Lines.Count-1 do Memo3.Lines.Add(ReplStr(Memo2.Lines[N], S1, S2));
end;


Virgo_Style   (2007-02-25 21:51:00) [6]

кавычки в определениях констант imto (*) лишние.

(*) t = Telepator


Плохиш   (2007-02-25 21:46:00) [7]

Странно, я всегда считал как и в [6], что "символ" и "буква" - это синонимы...


Name   (2007-02-25 20:38:00) [8]


> Это не мешало бы расшифровать

Функция не заменяет символы(в данном случае 6 штук ) на буквы. Каким образом можно это исправить в коде?


Palladin   (2007-02-25 20:10:00) [9]


> Это не мешало бы расшифровать.

дык, "она делает не то, что я хочу" :)


Anatoly Podgoretsky   (2007-02-25 19:46:00) [10]

> Name  (25.02.2007 19:22:07)  [7]

> но не работает правильно

Это не мешало бы расшифровать.


Virgo_Style   (2007-02-25 19:32:00) [11]

Name   (25.02.07 19:22) [7]

К сожалению, неверно написанная функция не будет работать правильно, как ее не вызывай.

Замечу также, что неизвестно, какая работа функции может считаться правильной.

По исходному вопросу -
> Подскажите что я делаю неправильно
- полагаю, что используешь чужой код (предположительно неверный), не разбираясь в нем.


Name   (2007-02-25 19:22:00) [12]

Вызываю функцию таким образом, но не работает правильно
procedure TForm1.Button6Click(Sender: TObject);
var
 i: integer;
begin
 Memo3.Lines.Clear;
 for i:=0 to Memo2.Lines.Count-1 do
   Memo3.Lines.Add(Shif(Memo2.Lines.Strings[i]));
end;


Anatoly Podgoretsky   (2007-02-25 16:32:00) [13]

Символ синоним слова буква!


Name   (2007-02-25 15:36:00) [14]

Понятно. Спасибо


Zeqfreed   (2007-02-25 15:21:00) [15]

Тогда я не буду распинаться и промолчу, а Кетмар придет и пошлет за метлой :)


Palladin   (2007-02-25 15:17:00) [16]

если это делаешь не ты тогда зачем тебе это нужно?


Name   (2007-02-25 15:14:00) [17]

Это делаю не я(т.е. код писан не мною). В общем заменяю символы RArrayL,RArrayU на буквы a,b,c , A,B,C


Zeqfreed   (2007-02-25 15:03:00) [18]

Да практически все :)
Опиши, что ты делаешь в каждой строчке.


Наверх

Титульная страница Поиск, карта сайта Написать письмо