Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.03.18;
Скачать: CL | DM;

Вниз

преобразовывать символы в буквы   Найти похожие ветки 

 
Name   (2007-02-25 14:11) [0]

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

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;


 
Zeqfreed ©   (2007-02-25 15:03) [1]

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


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

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


 
Palladin ©   (2007-02-25 15:17) [3]

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


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

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


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

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


 
Anatoly Podgoretsky ©   (2007-02-25 16:32) [6]

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


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

Вызываю функцию таким образом, но не работает правильно
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;


 
Virgo_Style ©   (2007-02-25 19:32) [8]

Name   (25.02.07 19:22) [7]

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

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

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


 
Anatoly Podgoretsky ©   (2007-02-25 19:46) [9]

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

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

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


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


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

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


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


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

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


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

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


 
Virgo_Style ©   (2007-02-25 21:51) [13]

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

(*) t = Telepator


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

> [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;


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


> RASkov   (25.02.07 21:55) [14]

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


 
RASkov   (2007-02-25 23:23) [16]

> [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;
Все немного побыстрее будет(не всегда).... думаю поймешь почему.


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

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

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

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


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


> RASkov

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



Страницы: 1 вся ветка

Текущий архив: 2007.03.18;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.06 c
2-1172229078
vitv
2007-02-23 14:11
2007.03.18
Построение запроса


15-1172433448
RASkov
2007-02-25 22:57
2007.03.18
Behold TV


11-1150669782
AndrewHz
2006-06-19 02:29
2007.03.18
WindowsXP.Manifest


15-1172218979
_БарЛог
2007-02-23 11:22
2007.03.18
Переходник 4pin -> 6 pin


3-1166758240
NovaC
2006-12-22 06:30
2007.03.18
INSERT INTO через ADOConnection.Execute