Entwickler-Ecke

Sonstiges (Delphi) - Codieren mit Passwort


Matze33 - Mi 01.09.10 10:52
Titel: Codieren mit Passwort

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:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
unit U_Codieren2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, StdCtrls, Buttons, ExtCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    MainMenu1: TMainMenu;
    Datei1: TMenuItem;
    Neu1: TMenuItem;
    ffnen1: TMenuItem;
    Speicherals1: TMenuItem;
    Schlieen1: TMenuItem;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    Hilfe1: TMenuItem;
    Info1: TMenuItem;
    Btn_Codieren: TBitBtn;
    E_Passwort: TLabeledEdit;
    procedure Schlieen1Click(Sender: TObject);
    procedure Neu1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure ffnen1Click(Sender: TObject);
    procedure Speicherals1Click(Sender: TObject);
    procedure Info1Click(Sender: TObject);
    procedure Btn_CodierenClick(Sender: TObject);
  private
  Speicher:Array of byte;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Schlieen1Click(Sender: TObject);
begin
 close;
end;

procedure TForm1.Neu1Click(Sender: TObject);
begin
  Memo1.Clear;
  E_Passwort.Clear;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Memo1.Clear;
  E_Passwort.Clear;
end;

procedure TForm1.ffnen1Click(Sender: TObject);
begin
  if(OpenDialog1.Execute) then Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
end;

procedure TForm1.Speicherals1Click(Sender: TObject);
begin
  if SaveDialog1.Execute then Memo1.Lines.SaveToFile(SaveDialog1.FileName);
end;

procedure TForm1.Btn_CodierenClick(Sender: TObject);
var
  V_Passwort, Ni, NZeile, NText:string;
  i, step,d,N,len:Integer;
begin
  d:=0;
  V_Passwort:=E_Passwort.Text;
  len:=length(Memo1.Text);
  getmem(speicher,len);

  FOR N:=1 TO len DO
  begin
    Speicher[N]:=ord(Memo1.Text[N])
  end;

  FOR i:=1 TO len DO
  begin
    step:=Ord(V_Passwort[d]);
    d:=d+1;
  if d>length(V_Passwort) then d:=1;
  end;

  FOR N:=1 TO len DO
  begin
    Speicher[i]:=step XOR Speicher[i];
    Ni:=char(Speicher[i]);
    NZeile:=NZeile + Ni;
    NText:=NZeile + NZeile;
    Memo1.Text:=NText;
  end;
end;

end.


Hi, ich hoffe, ihr könnt aus dem Code meine eigentliche Aufgabe ableiten. Wir sollen einen Text mit einem Passwort (de)codieren. Das ganze funktioniert aber noch nicht.
Kann mir da wer helfen?

Moderiert von user profile iconNarses: Code- durch Delphi-Tags ersetzt


Fienix - Mi 01.09.10 10:59

Was GENAU funktioniert nicht!

Keiner hat Lust deine Code abzutippen... :wink:


Matze33 - Mi 01.09.10 11:07

Hab euch mal die EXE hochgestellt: *Link entfernt*


JoelH - Mi 01.09.10 11:09

sag einfach an wo welcher Fehler auftritt.


Matze33 - Mi 01.09.10 11:14

Ich habe einen Beispielstext, den ich codieren will:
Zitat:
Unser Gymnasium am Wall, die helle Schule,
ist ein Ort, an dem
Achtung und Toleranz,
friedliches und gewaltfreies Miteinander,
Verantwortungsbewusstsein für sich selbst und andere,
demokratisches Verhalten,
Weltoffenheit,
sorgsamer Umgang mit Gesundheit und Umwelt,
Förderung und Entwicklung der Persönlichkeit jedes Einzelnen,
individuelle Kompetenzstärkung
gelebt, gelehrt und gelernt werden.

Alle Beteiligten,
die Schülerinnen und Schüler
zusammen mit ihren Lehrerinnen und Lehrern,
das nichtpädagogische Personal und die Eltern
fördern die Identifikation mit unserem „Lebensraum“ Schule.

Professionelle Bedingungen, hohe Unterrichtsqualität, Praxisnähe,
kontinuierliches Interesse, Leistungsbereitschaft und Engagement sowie
Transparenz unterstützen dabei nachhaltig die Bildungsarbeit und sichern somit lebenswichtige persönliche Kompetenzen.


Wenn ich den ganze Text mit "Schule" codieren will, dan codiert er nur den ersten Buchstaben. Als erstes erhalt ich "l", dann "" und dann "S". Danach wechseln sich die letzten beiden Zeichen immer ab, wenn ich den Button benutze.
Nehme ich nur den ersten Absatz, dann stürzt das Programm ab.

Hoffe, das reicht ;)


elundril - Mi 01.09.10 11:17

Ich schätze mal das ist deine Schulaufgabe, oder? Kannst du mal die Angabe posten?


Matze33 - Mi 01.09.10 11:21

Korrekt.
Ne Angabe haben wir aber nciht direkt. Einfach einen Text mit XOR codieren und decodieren.


Fienix - Mi 01.09.10 11:38

Versuch doch erstmal ein einzelnes Wort zu codieren!
Beim Debuggen sollte es dann auch ersichtlich sein!


Flamefire - Mi 01.09.10 11:57

Ganz ehrlich, das was du gemacht hast ist nicht durchdacht.
Kommentier mal bitte jede Zeile deines Codes, ab GetMem()
Dann fällt dir der Fehler wahrscheinlich selber auf...


Gammatester - Mi 01.09.10 13:20

@Matze33: Hast Du denn aus einer Woche Diskussion bei Delphi-Praxis http://www.delphipraxis.net/154028-codieren-mit-passwort.html nichts gelernt, daß Du hier im wesentlichen kaum veränderten fehlerhaften Code verbessert haben willst.