Caesar Chiffre entschlüsseln nur wie?(delphi) |
13.05.2007, 14:44 | Auf diesen Beitrag antworten » |
power | Caesar Chiffre entschlüsseln nur wie?(delphi) hallo erstma liebes Forum ... also ich habe folgendes problem wir haben zur zeit ver-/entschlüsselungsprogramme in Delphi und naja skytala haben wir schon is mir immernoch teilweise unverständlich..naja wie dem auch sei wir haben jetzt cäsar chiffre und haben dabei schon soweit alles gemacht nur sollen wir jetzt zu hause allein die entschlüsselung machen..was ich aber nicht hinkriege habs schon versucht aber mir wird da sofort ein fehler angezeit hier der quelltext soweit erstma: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Menus; type TForm1 = class(TForm) Label1: TLabel; Edit1: TEdit; Label2: TLabel; Edit2: TEdit; Label3: TLabel; Edit3: TEdit; Button1: TButton; MainMenu1: TMainMenu; Schlieen1: TMenuItem; Edit4: TEdit; Button2: TButton; procedure eingabe; procedure eingabe1; procedure verschluesseln; procedure ausgabe; procedure ausgabe1; procedure entschluesseln; procedure Schlieen1Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; klartext,codestr,geheimtext :string; codechr,zeichenchr :char; codeint,zeichenint :integer; implementation {$R *.dfm} procedure Tform1.eingabe; begin klartext:=edit1.text; //eingegebener text codestr:=edit2.text; //eingabe des codebuchstaben (ist ein string) codechr:=codestr[1]; //vom code wird immer nur das erste zeichen genommen end; procedure Tform1.eingabe1; begin geheimtext:=edit3.text; codestr:=edit2.text; codestr[1]:=codechr; end; procedure Tform1.ausgabe; begin edit3.Text:=geheimtext; //ausgabe des geheimtextes edit4.Text:=inttostr(codeint); end; procedure Tform1.ausgabe1; begin edit1.text:=klartext; end; procedure Tform1.verschluesseln; var i :integer; begin codechr:=upcase(codechr); //ich wandle alle buchstabe in Großbuchstaben um for i:=1 to length(klartext)do //wichtig...length best. die länge eines strings und somit werden alle zeichen des klartext in Gorßbuchtaben umgewandelt klartext:=upcase(klartext); geheimtext:=klartext; codeint:=ord(codechr)-65; //codeint->zahlenwert des codebuchstaben for i:=1 to length(geheimtext) do if klartext in ['A'..'Z'] then //ich überprüfe ob mein kalrtext auch wirklich aus zeichen besteht begin zeichenchr:=geheimtext; //aktuelles zeichen zeichenint:=ord(zeichenchr); //zeichen in zahl umgewandelt zeichenint:=zeichenint+codeint; //verschluesseltes zeichen if zeichenint>90 then zeichenint:=zeichenint-26; //alphabet zuende zeichenchr:=chr(zeichenint); //zeichen bestimmen geheimtext:=zeichenchr; //verschlüsselter text end; end; procedure Tform1.entschluesseln; // ab hier weis ich nicht weiter das ist ein versuch aber es wird mr immer wieder ein fehler angezeigt var i :integer; begin lowercase(codechr):=codechr; for i:=1 to length(geheimtext)do geheimtext:=lowercase(geheimtext); klartext:=geheimtext; codeint:=ord(lowercase)+65; for i:=1 to length(klartext) do if geheimtext in ['A'..'Z'] then begin geheimtext:=zeichenchr ord(zeichenchr):=zeichenint zeichenint-codeintzeichenint if zeichenint>90 then zeichenint:=zeichenint+26; chr(zeichenint):=zeichenchr zeichenchr:=geheimtext; end; end; procedure TForm1.Schlieen1Click(Sender: TObject); begin close; end; procedure TForm1.Button1Click(Sender: TObject); begin eingabe; verschluesseln; ausgabe; end; procedure TForm1.Button2Click(Sender: TObject); begin eingabe1; entschluesseln; ausgabe1; end; end. wie ihr seht habe ich mich bei der entschlüsselungsporzedur schon selbst ohne erfolge probiert nun gut ich hoffe ihr könnt mir helfen..ich schreibe am di einen test bei dem wir ein halbfertiges porgram bekommen das wir vervollständigen sollen ich hoffe hr könnt mir helfen..zu verstehen wo mein fehler liegt danke im vorraus mfg Power |
|
|