Форум: "Начинающим";
Текущий архив: 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.043 c