Autor Beitrag
Shadowlucker
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Fr 12.03.10 19:44 
reset


Zuletzt bearbeitet von Shadowlucker am Mi 22.06.11 16:33, insgesamt 1-mal bearbeitet
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: Fr 12.03.10 20:05 
Hi und :welcome: im Forum!

user profile iconShadowlucker hat folgendes geschrieben Zum zitierten Posting springen:
Gibt es evtl billige Lehrbücher, wo ich etwas mehr "lernen" kann?

Jup. Schau Dir mal user profile iconChristians Crashkurs an. :zustimm:
uall@ogc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: Fr 12.03.10 20:19 
also zuerst solltest du von deinem Code die globalen Variablen entfernen:

ausblenden 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:
var
  Form1: TForm1;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  text2 : string;
  b: integer;
  text: string;
  zaehler: integer;
begin

label2.Caption:= '';

for zaehler:=1 to Length(edit1.Text) do
  begin
  text:= edit1.Text;
  text2:= text;
  text2 := text2+ char(ord(text[zaehler])+6)

  end;
Label2.Caption := text2;
end;


dann brauchst du nich immer edit1.text auszulesen sondern sollte zugriff auf die GUI entfernen (dann kannst du den code später in eine funktion auslagern)

ausblenden 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:
var
  Form1: TForm1;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  text2 : string;
  b: integer;
  text: string;
  zaehler: integer;
begin
  // aus edit auslesen
  text := edit1.Text;

  // deine Cäsar Funktion
  text2 := '';
  for zaehler:=1 to Length(text) do
  begin
    text2 := text2 + char(ord(text[zaehler])+6);
  end;

  // auf label ausgeben
  Label2.Caption := text2;
end;


so und um nur Buchstaben anzuzeigen spaltest das ganze nochmal auf (ist für dich leichter)

ausblenden 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:
procedure TForm1.Button1Click(Sender: TObject);
var
  text2 : string;
  b: integer;
  text: string;
  zaehler: integer;
  asciiwert: Byte;
begin
  // aus edit auslesen
  text := edit1.Text;

  // deine Cäsar Funktion
  text2 := '';
  for zaehler:=1 to Length(text) do
  begin
    asciiwert := ord(text[zaehler]);

    // ggf. abfragen wie: wenn asciiwert > xyz dann
    asciiwert := asciiwert + 6;
    // ggf. abfragen wie: wenn asciiwert > xyz dann
    
    text2 := text2 + char(asciiwert);
  end;

  // auf label ausgeben
  Label2.Caption := text2;
end;


hier die Tabelle:
www.torsten-horn.de/techdocs/ascii.htm

_________________
wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
Shadowlucker Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Fr 12.03.10 20:36 
reset


Zuletzt bearbeitet von Shadowlucker am Mi 22.06.11 16:33, insgesamt 2-mal bearbeitet
uall@ogc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1826
Erhaltene Danke: 11

Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
BeitragVerfasst: Fr 12.03.10 20:39 
Ja den Code dazu hab ich dir auch net gegeben. Ein wenig musst schon selbst machen :)
Die Stellen wo dein Code reinkommt (z.B. mit if-Abfragen) hab ich aber im letzten Post angegeben.

_________________
wer andern eine grube gräbt hat ein grubengrabgerät
- oder einfach zu viel zeit
Shadowlucker Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Fr 12.03.10 20:41 
reset


Zuletzt bearbeitet von Shadowlucker am Mi 22.06.11 16:33, insgesamt 1-mal bearbeitet
Jakob_Ullmann
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1747
Erhaltene Danke: 15

Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
BeitragVerfasst: Fr 12.03.10 20:59 
user profile iconShadowlucker hat folgendes geschrieben Zum zitierten Posting springen:
mhh ich habe mal den code mir mal angeschaut und getetet scheint alles zu funktionieren, soll ich jetzt einfach mit If Fragen machen?
ach ja noch etwas > asciiwert: Byte; was bedeutet dieser befehl? bringt mir nichts, wenn ich nur Copy Paste mache...

Moderiert von user profile iconChristian S.: Vollständiges Zitat des vorhergehenden Beitrags entfernt


asciiwert ist einfach der Name der Variablen. Sie ist eine Ganzzahl. Dabei heißt Byte, dass dafür 1 Byte, also 8 Bit, Arbeitsspeicher reserviert werden, es kann also die Werte 0 bis 255 annehmen.

Integer hat glaube ich seinen Bereich mehrmals geändert, und ich kann dir jetzt nicht sagen, wie viel Byte ein Integer hat. Dürfte aber herauszufinden sein. Jedenfalls ist Integer größer als Byte.

Nebenbei gibt es noch WORD (2 Bytes) und DWORD (double word, 4 Bytes). Weitere Integer-Typen (u. a. Cardinal) findest du in der Delphi-Hilfe, wenn du einfach mal "Integer" als Suchbegriff eingibst.

Auf jeden Fall ist die 1-Byte-Begrenzung von daher sinnvoll, weil ein ASCII-Code auch nur von 0 bis 255 gehen kann. Was ASCII ist, weißt du ja sicher.

user profile iconShadowlucker: Programmieren ist reine Übungssache. Nach einiger Zeit bekommt man dann ein Gefühl für die Sprache und die Programme schreiben sich fast von selbst.
Shadowlucker Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Sa 13.03.10 18:08 
reset


Zuletzt bearbeitet von Shadowlucker am Mi 22.06.11 16:34, insgesamt 1-mal bearbeitet
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Sa 13.03.10 18:13 
user profile iconShadowlucker hat folgendes geschrieben Zum zitierten Posting springen:
naja programmieren ist nicht und wird nie mein Ding sein ;D


warum tust du es dann?

lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
Shadowlucker Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Sa 13.03.10 20:21 
user profile iconelundril hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconShadowlucker hat folgendes geschrieben Zum zitierten Posting springen:
naja programmieren ist nicht und wird nie mein Ding sein ;D


warum tust du es dann?

lg elundril


ich wusste nicht, dass es so schwer sein wird....
Puck war viel einfacher. Damals wo ich einen anderen Lehrer hatte, gab er uns den Quellcode vor also in "Sätze" und nicht sowas wie erstelle ein Proogramm, dass die Verschlüsselung hat. Ich finde, dass es so viel schwerer ist. Naja als LK schon iwie eine Fehlwahl...
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Sa 13.03.10 20:23 
aso. naja, vielleicht freundest du dich noch mit Informatik an. Wenn nicht, kannst du ja schon mal ne Studienrichtung für dich persönlich ausschließen. :D

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
Shadowlucker Threadstarter
Hält's aus hier
Beiträge: 14



BeitragVerfasst: Sa 13.03.10 20:37 
reset


Zuletzt bearbeitet von Shadowlucker am Mi 22.06.11 16:34, insgesamt 1-mal bearbeitet
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Mi 17.03.10 12:37 
Ich mache mir etwas Sorgen bei diesen beiden Zeilen (ich denke der zweite Kommentar impliziert genau was ich meine):
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
    // ggf. abfragen wie: wenn asciiwert > xyz dann
    asciiwert := asciiwert + 6;
    // ggf. abfragen wie: wenn asciiwert > xyz dann
    
    text2 := text2 + char(asciiwert);

Werden Werte, die größer sind als 255 von char() korrekt behandelt? (*)

Ich gehe mal davon aus, dass die komplette ASCII-Tabelle als Alphabet für die Verschlüsselung verwendet werden soll.
Sollen es nur Buchstaben und/oder Zahlen sein, wird das Ganze etwas komplizierter.

Falls (*) mit einem "ja" zu beantworten ist, sollte man folgendes tun:
ausblenden Delphi-Quelltext
1:
asciiwert := (asciiwert + 6mod 256;					

Siehe auch: Suche in Wikipedia MODULO

Dies sorgt dafür, dass asciiwert im Bereich 0..255 bleibt. Die ersten 32 Zeichen werden vermutlich eh nicht sinnvoll dargestellt, da es sich hierbei um Suche in Wikipedia STEUERZEICHEN handelt.