Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.02.04;
Скачать: [xml.tar.bz2];

Вниз

AnsiReplaceText   Найти похожие ветки 

 
Генрих   (2007-01-16 12:21) [0]

Привет ! Помогите с задачей.
В общем объяснить грамотно затрудняюсь, попытаюсь объяснить примером.

var
   SL:TStringList;
Begin

 SL:= TStringList.Create;
 Sl.Add(trim(Memo1.Text));

 SL.Text:= (AnsiReplaceText(SL.Text,"П","P"));
 
 Memo2.Text:= Sl.Text;

Как вы и заметили я заменил в тексте memo1 все русские П на латинские P и поместил текст в memo2.

Теперь пытаюсь заменить таким же методом русскую "Ъ" на   "   - то есть кавычку. Как это    реализовать ?

Т.е

SL.Text:= (AnsiReplaceText(SL.Text,"Ъ",  "   ?     "));


 
stone ©   (2007-01-16 12:22) [1]


> "   ?     "

""""


 
Генрих   (2007-01-16 12:26) [2]

2 stone

То есть мне нужно поставить между кавычками еще две кавычки ?


 
Генрих   (2007-01-16 12:27) [3]

Опа, точно. Спасибо большое.


 
stone ©   (2007-01-16 12:29) [4]

это не кавычка, а апостроф
двойной апостроф заключенный в апострофы вернет строковой символ апострофа
короче, в твоем случае пиши 4 апострофа подряд


 
Генрих   (2007-01-16 12:36) [5]

2 stone

Спасибо !!!


 
Генрих   (2007-01-16 12:46) [6]

Мастера, еще вопросик если можно.

Задачка для колледжа была. Ввести русские буквы в Memo1.Text
а Memo2.Text должен отобразить тот же текст латинскими буквами.
Все идеально работает, за исключением одного.  Когда пишу текст таким образом: Привет !
Результат работы программы: privet !

то есть он весь текст приводит к нижнему регистру.

Я пытался делать так:

SL.Text:= (AnsiReplaceText(SL.Text,"п","p"));
SL.Text:= (AnsiReplaceText(SL.Text,"П","P"));

не катит. Подскажите плиз.


 
Рамиль ©   (2007-01-16 12:59) [7]

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

P. S.
Call AnsiReplaceText to scan the string specified by AText and replace all occurrences of the string specified by AFromText with the string specified by AToText. Occurrences of AFromText are identified by a case-insensitive comparison that uses the current system locale. The identification of substrings is not recursive: if the substitution of AToText results in a new match for AFromText, that match is not replaced.


 
Генрих   (2007-01-16 13:06) [8]


> Call AnsiReplaceText to scan the string specified by AText
> and replace all occurrences of the string specified by AFromText
> with the string specified by AToText. Occurrences of AFromText
> are identified by a case-insensitive comparison that uses
> the current system locale. The identification of substrings
> is not recursive: if the substitution of AToText results
> in a new match for AFromText, that match is not replaced.
>


В принципе перевод понял, вот только не догнал смысл.

Если одному русскому символу соот. один латинский

Как проверить соответствует или нет ?


 
Рамиль ©   (2007-01-16 13:22) [9]


> Как проверить соответствует или нет ?

Так это, ты же менеяшь, откуда я знаю?


 
PZ   (2007-01-16 14:07) [10]

Я когда-то экспериментировал, может польза какая будет:


unit TransLitUn;
{
  Izone\izone456\index.htm                        14.08.2004 13:05:59 PZ

}
interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, ComCtrls;

type
 TTransLitFrm = class(TForm)
   Rich1: TRichEdit;
   Rich2: TRichEdit;
   RusLatBut: TButton;
   LatRusBut: TButton;
   procedure RusLatButClick(Sender: TObject);
//    procedure LatRusButClick(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 TransLitFrm: TTransLitFrm;

implementation

{$R *.dfm}

Const
 LenAlfa =71;               // Длина алфавита

 Rus : Array[1..LenAlfa] of Char =
 (
"ж","Ж",  "ё","Ю", "Ю", "ю", "ю", "ш", "э", "я", "я", "Ш", "Ч", "ч", "Ё",  "Я", "Я", "Э",  {} "щ","Щ","й","Й",
"и","ь","ц","у","к","е","н","г","з","х","ъ","ф","ы","в","а","п","р","о", "л","д","с","м","т","б",
"Й","Ь","Ц","У","К","Е","Н","Г","З","Х","Ъ","Ф","Ы","В","А","П","Р","О","Л","Д", "С","М","И","Т","Б"
 );

 Lat : Array[1..LenAlfa] of String =
 (
"zh","Zh","yo","Yu","Ju","ju","yu","sh","yе","jа","yа","Sh","Ch","ch","Yo","Ya", "Ja","Ye", {} "sh","Sh","i","I",
"i","",   "c","u","k","e","n","g","z","h","","f","y","v","a","p","r","o","l","d","s","m"," t","b",
"I", "","C","U","K","E","N","G","Z","H", "","F","Y","V","A","P","R","O","L","D","S","M","I","T","B"
 );

 TestRus =
"Проверка программы преобразования русских букв в TransLit, чтобы можно было пощупать её";

 TestLat =
"Proverka programmy preobrazovanijа russkih bukv v TransLit, chtoby mozhno bylo poshupat eyo";

function RusLat(R : Char): String;
Var
 I, Index : Byte;
begin
 Index := 0;
 For I := 1 to LenAlfa do
   If R = Rus[I] then begin Index := I; Break end;
 If Index = 0 then Result := R else Result := Lat[Index];
end;

function LatRus(L : String): String;
Var
 I, Index : Byte;
begin
 Index := 0;
 For I := 1 to LenAlfa do
   If L = Lat[I] then begin Index := I; Break end;
 If Index = 0 then Result := L else Result := Rus[Index];
end;

procedure TTransLitFrm.RusLatButClick(Sender: TObject);
Var
 I, J : Integer;
 C : Char;
 S, S0 : String;
begin
 Rich2.Clear;
 Rich1.Clear;
 Rich1.Lines.Add("");
 Rich1.Lines.Add(TestRus);
 S := "";
 For I := 0 to Rich1.Lines.Count-1 do
   begin
     S0 := Rich1.Lines.Strings[I];
     For J := 1 to Length(S0) do
       begin
         C := S0[J];
         Try
         S := S + RusLat(C);
         Except
           On eConvertError do S := S + C;
         End;
       end;
     Rich2.Lines.Add(S);
   end;
end;      { TTransLitFrm.RusLatButClick }

(*
procedure TTransLitFrm.LatRusButClick(Sender: TObject);
Var
 I, J : Integer;
 C : Char;
 S, S0 : String;
begin
 Rich2.Clear;
 Rich1.Clear;
 Rich1.Lines.Add("");
 Rich1.Lines.Add(TestLat);
 S := "";
 For I := 0 to Rich1.Lines.Count-1 do
   begin
     S0 := Rich1.Lines.Strings[I];
     For J := 1 to Length(S0) do
       begin
         C := S0[J];
         Try
         S := S + LatRus(C);
         Except
           On eConvertError do S := S + C;
         End;
       end;
     Rich2.Lines.Add(S);
   end;
end;      { TTransLitFrm.LatRusButClick }
*)

END.




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

Форум: "Начинающим";
Текущий архив: 2007.02.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.064 c
15-1168878434
властелин колхоза
2007-01-15 19:27
2007.02.04
MessageBox() из сервиса и стили WinXP


9-1142551393
Нет
2006-03-17 02:23
2007.02.04
Как развернуть цилиндр на плоскость?


2-1169037394
vitv
2007-01-17 15:36
2007.02.04
Результат запроса


2-1168871590
SadMan
2007-01-15 17:33
2007.02.04
Как обратится к свойствам объекта зная его имя? Глупо как то..


2-1168786829
Kostafey
2007-01-14 18:00
2007.02.04
Подтверждение SaveAs для Word и Excel





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский