Coleta de Informações e troca

25/08/2019

0

Sou um pouco novo, e não sei exatamente como fazer, procurei mas não encontrei no fórum, se estiver em local inadequado por favor me perdoem.

Estou fazendo uma aplicação apenas para aprender.
Quero pegar o texto em um local que se possa digitar (Uma TextEdit, combobox etc...)
E trocar algumas letras desse texto).
Tudo que consegui foi trocar apenas uma letra...no caso a Letra T

Se puderem ajudar.
Segue o código:

procedure TTradutor.BTraduzirClick(Sender: TObject);

begin
******Aqui ele pega o Texto que esta digitado em TOrignal e troca*****
Ttraducao.Text := StringReplace(TOriginal.Text, 'A','B', [rfReplaceAll, rfIgnoreCase]);
Ttraducao.Text := StringReplace(TOriginal.Text, 'C','D', [rfReplaceAll, rfIgnoreCase]);
Ttraducao.Text := StringReplace(TOriginal.Text, 'E','F', [rfReplaceAll, rfIgnoreCase]);
Ttraducao.Text := StringReplace(TOriginal.Text, 'G','H', [rfReplaceAll, rfIgnoreCase]);
Ttraducao.Text := StringReplace(TOriginal.Text, 'T','R', [rfReplaceAll, rfIgnoreCase]);

end;

Porém ele só traduz a letra T para R ( eu estou tentando fazer ida e volta).
Marcio

Marcio

Responder

Posts

26/08/2019

Paulo Freire

function TForm1.Embaralhar(s:string): string;
var
Palavra:TStringList;
i,a:integer;
begin
Palavra := TStringList.Create;
Randomize;
for i:=1 to Length(s) do
Palavra.Add(s[i]);
for i:= 1 to Length(s) do
begin
a := Random(Palavra.Count);
Result := Result+Palavra.Strings[a];
Palavra.Delete(a);
end;
Palavra.Free;
end;
Responder

26/08/2019

Marcio

Olá amigo, agradeço muito a ajuda, mas talvez eu o que eu conheça de delphi ainda seja pouco para o que postou.
Abaixo segue meu código completo.
A ideia é fazer com que o texto digitado em um local seja coletado e trocado (VICE-VERSA) as letras
Z <-> P, E<->O, N<->L, I<->A, T<->R
para facilitar o entendimento:

EXEMPLO DE TRADUCAO ZENIT POLAR
OXOMZNE DO RTIDUCIE POLAR ZENIT

CÓDIGO:

unit SDIMAIN;

interface

uses Winapi.Windows
, System.Classes
, Vcl.Graphics
, Vcl.Forms
, Vcl.Controls
, Vcl.Menus
, Vcl.Dialogs
, Vcl.StdCtrls
, Vcl.Buttons
, Vcl.ExtCtrls
, Vcl.ComCtrls
, Vcl.ImgList
, Vcl.StdActns
, Vcl.ActnList
, Vcl.ToolWin
, SysUtils
, StrUtils
, System.Actions;

type
TZenitPolar = class(TForm)
ActionList1: TActionList;
FileNew1: TAction;
FileOpen1: TAction;
FileSave1: TAction;
FileSaveAs1: TAction;
FileExit1: TAction;
EditCut1: TEditCut;
EditCopy1: TEditCopy;
EditPaste1: TEditPaste;
HelpAbout1: TAction;
StatusBar: TStatusBar;
MainMenu1: TMainMenu;
Edit1: TMenuItem;
CopyItem: TMenuItem;
PasteItem: TMenuItem;
Help1: TMenuItem;
HelpAboutItem: TMenuItem;
TOriginal: TEdit;
TZenit: TEdit;
TextoOriginal: TLabel;
ZenitPolar: TLabel;
BTraduzir: TButton;
BCopiarTraducao: TButton;
BColarTextoOriginal: TButton;
BLimpar: TButton;
Sair: TButton;
procedure FileExit1Execute(Sender: TObject);
procedure HelpAbout1Execute(Sender: TObject);
procedure BLimparClick(Sender: TObject);
procedure SairClick(Sender: TObject);
procedure BCopiarTraducaoClick(Sender: TObject);
procedure BColarTextoOriginalClick(Sender: TObject);
procedure BTraduzirClick(Sender: TObject);

private
{ Private declarations }

public
{ Public declarations }
end;

var
ZenitPolar: TZenitPolar;

implementation

uses
ClipBrd
, About;

{$R *.dfm}



procedure TZenitPolar.BColarTextoOriginalClick(Sender: TObject);
begin
TOriginal.Clear;
TOriginal.PasteFromClipboard;
TZenit.Clear
end;

procedure TZenitPolar.BCopiarTraducaoClick(Sender: TObject);
begin
ClipBoard.asText := TZenit.Text;
end;

procedure TZenitPolar.BLimparClick(Sender: TObject);
begin
TZenit.Clear;
TOriginal.Clear;
TOriginal.SetFocus;
end;

procedure TZenitPolar.BTraduzirClick(Sender: TObject);
var
Ttraduzir: string;
begin
//Aqui vc pegou o texto original e jogou na variavel temporaria
Ttraduzir := TOriginal.Text;
//Daqui pra baixo trabalha apenas com a variavel temporária
Ttraduzir := StringReplace(Ttraduzir, 'Z','P', [rfReplaceAll, rfIgnoreCase]);
Ttraduzir := StringReplace(Ttraduzir, 'E','O', [rfReplaceAll, rfIgnoreCase]);
Ttraduzir := StringReplace(Ttraduzir, 'N','L', [rfReplaceAll, rfIgnoreCase]);
Ttraduzir := StringReplace(Ttraduzir, 'I','A', [rfReplaceAll, rfIgnoreCase]);
Ttraduzir := StringReplace(Ttraduzir, 'T','R', [rfReplaceAll, rfIgnoreCase]);
//Retorna o texto que ficou na variavel temporaria
TZenit.Text := Ttraduzir
end;

procedure TZenitPolar.FileExit1Execute(Sender: TObject);
begin
Close;
end;

procedure TZenitPolar.HelpAbout1Execute(Sender: TObject);
begin
AboutBox.ShowModal;
end;

procedure TZenitPolar.SairClick(Sender: TObject);
begin
Close;
end;

end.


Desta forma eu consegui, porém eu só faço a ida Z -> P não consigo fazer de P ->Z.

Agradeço a ajuda.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar