Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Buchstaben codieren...


drsnoop - Do 11.12.03 19:02
Titel: Buchstaben codieren...
hi... habe folgendes problem:

ich bin an einem prog dran, dass, nachdem man eine eingabe gemacht hat, alle buchstaben um jeweils 2 zeichen verschieb... aus "a" wird also "c" aus "b" wird "d" usw... nun meckert der aber mir folgender fehlermeldeung:

[Fehler] Unit1.pas(50): Anweisung erforderlich, aber Ausdruck vom Typ 'Char' gefunden

was soll ich tun?
habe mal so angefangen aber wie gesagt bei der zeie unter der case anweisung meckert der...


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
procedure TForm1.b_codierenClick(Sender: TObject);
  var
   satz1, satz2 : string;
   i : integer;
   zeichen : char;
begin
 if (m_eingabe.text = '')
   then showmessage('Bitte einen Text in das Feld eingeben.')
   else
    satz1 := m_eingabe.Text;
     for i := 1 to length(satz1) do
      begin
        case satz2[i] of
         'a' : 'c';
         'b' : 'd';
         'c' : 'e';
         //...
         // usw...
        end;   //of case
       satz2 := satz2 + zeichen;
      end//of for_Schleife

end;


Anonymous - Do 11.12.03 19:23

wie wärs mit


Delphi-Quelltext
1:
'a': zeichen := '...';                    


DeCodeGuru - Do 11.12.03 19:27

Guck dir auch mal folgenden Code an, den ich mal testweise geschrieben habe. :)


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
begin
  Edit2.Text := '';
  for i := 1 to Length(Edit1.Text) do
    if ((Ord(Edit1.Text[i]) >= 65and (Ord(Edit1.Text[i]) <= 90)) or ((Ord(Edit1.Text[i]) >= 97and (Ord(Edit1.Text[i]) <= 122)) then
      Edit2.Text := Edit2.Text + Chr(Ord(Edit1.Text[i]) + 2)
    else
      Edit2.Text := Edit2.Text + Edit1.Text[i];
end;


drsnoop - Do 11.12.03 19:43

obbschtkuche hat folgendes geschrieben:
wie wärs mit


Delphi-Quelltext
1:
'a': zeichen := '...';                    



hoppla... flüchtigkeitsfehler... :D


@ CodeGuru:

funktioniert der? was ist, wenn der buchstabe "y" oder "z" codiert werden muss? weil dann müsste der dann wieder "a" oder "b" ausspucken...

aber danke für eure hilfe!!!!! :D


DeCodeGuru - Do 11.12.03 19:54

Hui, @drsnoop: Den Sprung von y und z habe ich nicht gemacht. Ist aber kein Problem. Bis zu diesen Buchstaben funtzt er aber.

Habe schnell den Code etwas erweitert, ist aber - wie gesagt - sehr simpel.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
begin
  Edit2.Text := '';
  for i := 1 to Length(Edit1.Text) do
    if ((Ord(Edit1.Text[i]) >= 65and (Ord(Edit1.Text[i]) <= 88)) or ((Ord(Edit1.Text[i]) >= 97and (Ord(Edit1.Text[i]) <= 120)) then
      Edit2.Text := Edit2.Text + Chr(Ord(Edit1.Text[i]) + 2)
    else
      case Ord(Edit1.Text[i]) of
        89: Edit2.Text := Edit2.Text + 'A';
        90: Edit2.Text := Edit2.Text + 'B';
        121: Edit2.Text := Edit2.Text + 'a';
        122: Edit2.Text := Edit2.Text + 'b';
      else
        Edit2.Text := Edit2.Text + Edit1.Text[i];
      end;
end;


drsnoop - Do 11.12.03 20:39

funktioniert prima danke!!!

aber warum zeigt der mir ne fehlermeldung, wenn ich meine methode nehme...

also:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
for i := 1 to length(satz1) do
      begin
        case satz2[i] of
         'a' : zeichen := 'c';
         'b' : zeichen := 'd';
         'c' : zeichen := 'e';
        end;   //of case
       satz2 := satz2 + zeichen;


der spuckt dann das hier aus:

user defined image

warum???


tommie-lie - Do 11.12.03 21:16

drsnoop hat folgendes geschrieben:
aber warum zeigt der mir ne fehlermeldung, wenn ich meine methode nehme...


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
for i := 1 to length(satz1) do
      begin
        case satz2[i] of
         'a' : zeichen := 'c';
         'b' : zeichen := 'd';
         'c' : zeichen := 'e';
        end;   //of case
       satz2 := satz2 + zeichen;

Na, guck mal in die dritte Zeile. Die falsche Zahl erwischt ;-)