Здравствуйте, Гость
Вторник, 21.11.2017, 04:51
Главная Главная страница форума Регистрация Вход
Новые сообщения Участники форума Правила форума Поиск
Страница 1 из 11
Модератор форума: stalker, Ekz 
Форум » Все о Delphi » Начинающим » Не работают процедуры. Не понятно. (...)
Не работают процедуры. Не понятно.
DublДата: Пятница, 29.10.2010, 21:02 | Сообщение # 1
Ранг 3
Группа: Проверенные
Сообщений: 73
Награды: 0
Репутация: 0
Статус: Offline
В общем-то делаю элементарную задачу, сделал замену текста, добавляю другие методы в программу.

Так вот процедуры translit и upcasetext не работают. Подскажит почему, я уже как только не пробовал("(Memo1.text, memo1.text)" даже вот в последнем варианте), все равно не пашет. Помогите)). Код кривой немного, просто я его попортил, пока пытался исправить, потом переделаю смальца. Заранее спасибо.

Код:

Code
unit Unit1;

interface

uses
   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
   Dialogs, StdCtrls, jpeg, ExtCtrls, XPMan;

type
   Tform1 = class(TForm)
     Memo1: TMemo;
     Edit1: TEdit;
     Edit2: TEdit;
     Button1: TButton;
     Button2: TButton;
     CheckBox1: TCheckBox;
     Image1: TImage;
     Label1: TLabel;
     Label2: TLabel;
     Label3: TLabel;
     Label4: TLabel;
     XPManifest1: TXPManifest;
     Label5: TLabel;
     CheckBox2: TCheckBox;
     CheckBox3: TCheckBox;
     Label6: TLabel;
     Label7: TLabel;
     Button3: TButton;
     procedure FormCreate(Sender: TObject);
     procedure Button1Click(Sender: TObject);
     procedure Button2Click(Sender: TObject);
     procedure Button3Click(Sender: TObject);
   private
     { Private declarations }
   public
     { Public declarations }
   end;

var
   form1: Tform1;

implementation

{$R *.dfm}

procedure Tform1.FormCreate(Sender: TObject);
begin
memo1.Clear;
end;

procedure translit(texts, texts2:string);
begin
texts2:=StringReplace(texts,'А','A',[rfReplaceAll]);
texts2:=StringReplace(texts,'а','a',[rfReplaceAll]);
texts2:=StringReplace(texts,'Б','B',[rfReplaceAll]);
texts2:=StringReplace(texts,'В','V',[rfReplaceAll]);
texts2:=StringReplace(texts,'Г','G',[rfReplaceAll]);
texts2:=StringReplace(texts,'Д','D',[rfReplaceAll]);
texts2:=StringReplace(texts,'Е','E',[rfReplaceAll]);
texts2:=StringReplace(texts,'Ё','E',[rfReplaceAll]);
texts2:=StringReplace(texts,'Ж','J',[rfReplaceAll]);
texts2:=StringReplace(texts,'З','Z',[rfReplaceAll]);
texts2:=StringReplace(texts,'И','I',[rfReplaceAll]);
texts2:=StringReplace(texts,'Й','Y',[rfReplaceAll]);
texts2:=StringReplace(texts,'К','K',[rfReplaceAll]);
texts2:=StringReplace(texts,'Л','L',[rfReplaceAll]);
texts2:=StringReplace(texts,'М','M',[rfReplaceAll]);
texts2:=StringReplace(texts,'Н','N',[rfReplaceAll]);
texts2:=StringReplace(texts,'О','O',[rfReplaceAll]);
texts2:=StringReplace(texts,'П','P',[rfReplaceAll]);
texts2:=StringReplace(texts,'Р','R',[rfReplaceAll]);
texts2:=StringReplace(texts,'С','C',[rfReplaceAll]);
texts2:=StringReplace(texts,'Т','T',[rfReplaceAll]);
texts2:=StringReplace(texts,'У','U',[rfReplaceAll]);
texts2:=StringReplace(texts,'Ф','F',[rfReplaceAll]);
texts2:=StringReplace(texts,'Х','H',[rfReplaceAll]);
texts2:=StringReplace(texts,'Ц','C',[rfReplaceAll]);
texts2:=StringReplace(texts,'Ч','Ch',[rfReplaceAll]);
texts2:=StringReplace(texts,'Ш','Sh',[rfReplaceAll]);
texts2:=StringReplace(texts,'Щ','Sh',[rfReplaceAll]);
texts2:=StringReplace(texts,'Ь',chr(39),[rfReplaceAll]);
texts2:=StringReplace(texts,'Ъ',chr(39),[rfReplaceAll]);
texts2:=StringReplace(texts,'Ы','I',[rfReplaceAll]);
texts2:=StringReplace(texts,'Э','E',[rfReplaceAll]);
texts2:=StringReplace(texts,'Ю','Yu',[rfReplaceAll]);
texts2:=StringReplace(texts,'Я','Ya',[rfReplaceAll]);
texts2:=StringReplace(texts,'а','a',[rfReplaceAll]);
texts2:=StringReplace(texts,'б','b',[rfReplaceAll]);
texts2:=StringReplace(texts,'в','v',[rfReplaceAll]);
texts2:=StringReplace(texts,'г','g',[rfReplaceAll]);
texts2:=StringReplace(texts,'д','d',[rfReplaceAll]);
texts2:=StringReplace(texts,'е','e',[rfReplaceAll]);
texts2:=StringReplace(texts,'ё','e',[rfReplaceAll]);
texts2:=StringReplace(texts,'ж','j',[rfReplaceAll]);
texts2:=StringReplace(texts,'з','z',[rfReplaceAll]);
texts2:=StringReplace(texts,'и','i',[rfReplaceAll]);
texts2:=StringReplace(texts,'й','y',[rfReplaceAll]);
texts2:=StringReplace(texts,'к','k',[rfReplaceAll]);
texts2:=StringReplace(texts,'л','l',[rfReplaceAll]);
texts2:=StringReplace(texts,'м','m',[rfReplaceAll]);
texts2:=StringReplace(texts,'н','n',[rfReplaceAll]);
texts2:=StringReplace(texts,'о','o',[rfReplaceAll]);
texts2:=StringReplace(texts,'п','p',[rfReplaceAll]);
texts2:=StringReplace(texts,'р','r',[rfReplaceAll]);
texts2:=StringReplace(texts,'с','c',[rfReplaceAll]);
texts2:=StringReplace(texts,'т','t',[rfReplaceAll]);
texts2:=StringReplace(texts,'у','u',[rfReplaceAll]);
texts2:=StringReplace(texts,'ф','f',[rfReplaceAll]);
texts2:=StringReplace(texts,'х','h',[rfReplaceAll]);
texts2:=StringReplace(texts,'ц','c',[rfReplaceAll]);
texts2:=StringReplace(texts,'ч','ch',[rfReplaceAll]);
texts2:=StringReplace(texts,'ш','sh',[rfReplaceAll]);
texts2:=StringReplace(texts,'щ','sh',[rfReplaceAll]);
texts2:=StringReplace(texts,'ы','i',[rfReplaceAll]);
texts2:=StringReplace(texts,'ъ',chr(39),[rfReplaceAll]);
texts2:=StringReplace(texts,'ь',chr(39),[rfReplaceAll]);
texts2:=StringReplace(texts,'э','e',[rfReplaceAll]);
texts2:=StringReplace(texts,'ю','yu',[rfReplaceAll]);
texts2:=StringReplace(texts,'я','ya',[rfReplaceAll]);
end;

procedure upcasetext(texts, texts2:string);
var i:integer;
begin

for i :=0 to (Length(texts) - 1) do
begin
texts2[i]:=Upcase(texts[i]);
end;

end;

procedure Tform1.Button1Click(Sender: TObject);
begin
if CheckBox1.Checked=true then
Memo1.text:=StringReplace(memo1.text,Edit1.Text,Edit2.text,[rfReplaceAll])
else Memo1.text:=StringReplace(memo1.text,Edit1.Text,Edit2.text,[rfReplaceAll,rfIgnoreCase]);
end;

procedure Tform1.Button2Click(Sender: TObject);
begin
Showmessage('Просто вводите слово или словосечетание, которое должно быть'+#13#10+'заменено в тексте в поле "Что заменить". Затем вводите то слово'+#13#10+'или словосочетание, на которое нужно изменить в поле "На что'+#13#10+'заменить". Далее нажимаете кнопку "Выполнить замену". Если'+#13#10+'вы хотите чтобы заменялись слова именно с определенным'+#13#10+'регистром ставим галочку в "Учитывать регистр", это будет'+#13#10+'означать, что, например, "Апельсин, апельсин, Апельсин" мы'+#13#10+'хотим заменить "Апельсин" на "Банан" и у нас получится'+#13#10+'"Банан, апельсин, Банан". Все просто. '+#13#10+''+#13#10+'Автор программы Шитов Артемка');
end;

procedure Tform1.Button3Click(Sender: TObject);
var flag:integer;
begin
if (CheckBox2.Checked=true) and (CheckBox3.Checked=true) then flag:=1
else if (CheckBox2.Checked=true) and (CheckBox3.Checked=false) then flag:=2
else if (CheckBox2.Checked=false) and (CheckBox3.Checked=true) then flag:=3
else if (CheckBox2.Checked=false) and (CheckBox3.Checked=false) then flag:=4;
case flag of
1: begin
translit(memo1.text, memo1.text);
upcasetext(memo1.text, memo1.text);
end;
2: translit(memo1.text, memo1.text);
3: upcasetext(memo1.text, memo1.text);
4: begin end;

end;
end;
end.
 
skycarДата: Пятница, 29.10.2010, 23:43 | Сообщение # 2
Ранг 6
Группа: Проверенные
Сообщений: 116
Награды: 5
Репутация: 31
Статус: Offline
А может всё-таки лучше пробегать строку в определённом цикле и уж тогда делать нужные действия? wink
Со строкой можно обращаться, как с дин. массивом, однако следует заметить, что именно в строке первый индекс единица, для всех остальных дин. массивов - ноль.

Code

function ChangeSymbols(const S: string; const ASource, ADest: Char): string;
var I: Cardinal;
begin
  Result:=S;
  for I:=1 to Length(Result) do
  if Result[I] = ASource then Result[I]:=ADest; //элемент-символ в строке такой же...
end; //... как и в массиве типа Char

Это я привёл пример замены символов в цикле. Для удаления части строки используется стандартная процедура Delete(), для вставки подстроки с нужной позиции - Insert(). Copy() копирует часть строки, возвращая эту часть. Функцию Pos() ты уже знаешь.

 
DublДата: Суббота, 30.10.2010, 00:45 | Сообщение # 3
Ранг 3
Группа: Проверенные
Сообщений: 73
Награды: 0
Репутация: 0
Статус: Offline
а почему не работает так, как у меня? не подскажешь? и почему не работатает upcasetext моя процедура? Она как положено через цикл)

А еще во вложениях если хочешь глянь полностью)))

Добавлено (30.10.2010, 00:45)
---------------------------------------------
Все ф-ии переписал по-новому, все теперь работает)) Что-то первые я вообще тупо написал))

Как переписал:

Транслит:

Code

function translit(s: string): string;
var
i: integer;
k: string;
begin
for i:=1 to Length(s) do
begin
case s[i] of
'а': k:=k+'a';
'б': k:=k+'b';
'в': k:=k+'v';
'г': k:=k+'g';
'д': k:=k+'d';
'е': k:=k+'e';
'ё': k:=k+'ye';
'ж': k:=k+'j';
'з': k:=k+'z';
'и': k:=k+'i';
'й': k:=k+'y';
'к': k:=k+'k';
'л': k:=k+'l';
'м': k:=k+'m';
'н': k:=k+'n';
'о': k:=k+'o';
'п': k:=k+'p';
'р': k:=k+'r';
'с': k:=k+'s';
'т': k:=k+'t';
'у': k:=k+'u';
'ф': k:=k+'f';
'х': k:=k+'ch';
'ц': k:=k+'z';
'ч': k:=k+'ch';
'ш': k:=k+'sh';
'щ': k:=k+'ch';
'ъ': k:=k+'''';
'ы': k:=k+'y';
'ь': k:=k+'''';
'э': k:=k+'e';
'ю': k:=k+'yu';
'я': k:=k+'ya';
'А': k:=k+'A';
'Б': k:=k+'B';
'В': k:=k+'V';
'Г': k:=k+'G';
'Д': k:=k+'D';
'Е': k:=k+'E';
'Ё': k:=k+'Ye';
'Ж': k:=k+'Zh';
'З': k:=k+'Z';
'И': k:=k+'I';
'Й': k:=k+'Y';
'К': k:=k+'K';
'Л': k:=k+'L';
'М': k:=k+'M';
'Н': k:=k+'N';
'О': k:=k+'O';
'П': k:=k+'P';
'Р': k:=k+'R';
'С': k:=k+'S';
'Т': k:=k+'T';
'У': k:=k+'U';
'Ф': k:=k+'F';
'Х': k:=k+'Ch';
'Ц': k:=k+'Z';
'Ч': k:=k+'Ch';
'Ш': k:=k+'Sh';
'Щ': k:=k+'Ch';
'Ъ': k:=k+'''';
'Ы': k:=k+'Y';
'Ь': k:=k+'''';
'Э': k:=k+'E';
'Ю': k:=k+'Yu';
'Я': k:=k+'Ya';
else k:=k+s[i];
end;
end;
Result:=k;
end;

Апкейз:

Code

function upcasetext(s:string): string;
var i:integer; k:string;
begin

for i :=1 to Length(s) do
begin
k:=k+Upcase(s[i]);
end;
result:=k;

end;
Прикрепления: Zamenyalka_v1.0.exe(920Kb)


Сообщение отредактировал Dubl - Суббота, 30.10.2010, 00:51
 
Форум » Все о Delphi » Начинающим » Не работают процедуры. Не понятно. (...)
Страница 1 из 11
Поиск:

Copyright DelphiDevelop.ru © 2008-2017
Хостинг от uCoz