Hi,
bis auf ein kleines Problem habe ich Fortschritte gemacht. Ich bin auf Funktionen umgestiegen. Der Text lässt sich umwandeln und auch wieder zurückwandeln.
Ein Problem tritt nur auf. Bei mir wird in der Verschlüsselung jedes Leerzeichen durch ein ß ersetzt. Jedes ß wird zum Leerzeichen.
Bei der Entschlüsselung ist es umgekehrt. Soweit alles geplant.
Leider tritt bei jeder Umwandlung von einem ß ein Fehler auf. Das ß wird nicht durch ein Leerzeichen ersetzt, sondern es bleibt ein ß, egal ob Ver- oder Entschlüsselung. Kann es sein, dass ein ß nicht mit einem ß verglichen werden kann oder dass ein bestehendes ß nicht durch ein Leerzeichen ersetzt werden kann?
Vielen Dank
Delphi-Quellcode:
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Grids,
StdCtrls;
type
{ TForm1 }
TForm1 =
class(TForm)
Button1: TButton;
Button2: TButton;
Label1: TLabel;
Label2: TLabel;
ListBox1: TListBox;
ListBox2: TListBox;
Memo1: TMemo;
Memo2: TMemo;
Memo3: TMemo;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
function Coding(x:
string):
string;
function Decoding(x:
string):
string;
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
function TForm1.Coding(x:
string):
string;
var
i: integer;
y:
string;
begin
y := x;
for i := 0
to listbox1.items.Count - 1
do
begin
if x = listbox1.items[i]
then
begin
y := listbox2.items[i];
end;
end;
Result := y;
end;
function TForm1.Decoding(x:
string):
string;
var
i: integer;
y:
string;
begin
y := x;
for i := 0
to listbox2.items.Count - 1
do
begin
if x = listbox2.items[i]
then
begin
y := listbox1.items[i];
end;
end;
Result := y;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
i2: integer;
x:
string;
begin
label2.Caption := '
';
memo2.Clear;
for i := 0
to (Memo1.Lines.Count - 1)
do
begin
label1.Caption := memo1.Lines.strings[i];
for i2 := 1
to length(label1.Caption)
do
begin
x := label1.Caption[i2];
x := coding(x);
label2.Caption := label2.Caption + x;
end;
memo2.Lines[i] := (label2.Caption);
label2.Caption := '
';
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
i: integer;
i2: integer;
x:
string;
begin
label2.Caption := '
';
memo3.Clear;
for i := 0
to (Memo2.Lines.Count - 1)
do
begin
label1.Caption := memo2.Lines.strings[i];
for i2 := 1
to length(label1.Caption)
do
begin
x := label1.Caption[i2];
x := decoding(x);
label2.Caption := label2.Caption + x;
end;
memo3.Lines[i] := (label2.Caption);
label2.Caption := '
';
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
if edit1.text='
ß'
then showmessage('
');
end;
end.