![]() |
SIMPEL Verschlüsselungs-Array-Problem mit Matritzen
Hey Leute,
Ich habe seit kurzer Zeit ein kleines Problem. Ich habe in der Schule Informatik Diff. Kurs, und arbeite dort mit Delphi, Mein wissen ist noch sehr begrenzt, also habt bitte nachsicht mit mir. Also Mein Problem: Ich muss ein Programm schreiben bei dem der Benutzer in ein Edit Feld einen erstmal auf 10 Zeichen begrentzten Text eingibt, und dann in 4 andere Edit-Felder 4 Positive oder Negative Zahlen. Hier Hake ICH: Das Programm dürfen wir in 2 Variationen schreiben. 1. ist nicht ganz so gut, aber einfach, denn man muss keine arrays verwenden ist aber viel Schreibarbeit 2.: Die möchte ihc nun (hab 1 schon) machen. Hier muss ich aber Den im Edit feld eingegebenen Text als Ascii Wert in die Boxen eines Arrays eingeben, da aber das Programm erweiterbar sein muss möchte ich nicht alles einzeln schreiben. Ich muss hierfür also eine For-Schlife nehmen, aber wie mache ich das?? |
AW: SIMPEL Verschlüsselungs-Array-Problem mit Matritzen
Eine Frage, ich schreib mal kurz das was bei mir bis jetzt Klappt:
type TForm1 = class(TForm) EdEingabe: TEdit; EdMatrixK1: TEdit; EdMatrixK2: TEdit; EdMatrixK3: TEdit; EdMatrixK4: TEdit; EdAusgabe: TEdit; BtVersch: TButton; procedure BtVerschClick(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; MatrixV : Integer; MatrixK1, MatrixK2, MatrixK3, MatrixK4: Integer; MatrixN: Integer; implementation {$R *.dfm} procedure TForm1.BtVerschClick(Sender: TObject); const Max = 10; var i: Integer; f: Integer; Asc: Array[1..Max] of Integer; Zw : Array[1..Max] of String; begin for i := 1 to Length(EdEingabe.Text) do Asc[i] := ord(EdEingabe.text[i]); MatrixK1 := StrToInt (EdMatrixK1.text); MatrixK2 := StrToInt (EdMatrixK2.text); MatrixK3 := StrToInt (EdMatrixK3.text); MatrixK4 := StrToInt (EdMatrixK4.Text); EdAusgabe.Text := IntToStr (Asc[1]); end; Würde das Klappen? |
AW: SIMPEL Verschlüsselungs-Array-Problem mit Matritzen
Hallo Dave,
und herzlich willkommen hier. :dp: Ich hab' leider nicht gerafft, was das Programm machen soll. ![]() Oder poste mal Variante 1. Den Code so reinstellen (ohne die *): [*Delphi] [*/Delphi] |
AW: SIMPEL Verschlüsselungs-Array-Problem mit Matritzen
Bitte lies dir deinen Beitrag nochmal durch und versuche dich dabei in unsere Lage zu versetzen.
Dann ändere den Beitrag so, dass auch ein jeder hier verstehen kann, was du eigentlich möchtest. Die Qualität der Rechtschreibung meine ich dabei nicht, obwohl es dann auch noch hübscher aussehen würde. Kleiner Tipp: Nach dem Absenden sich nochmal entspannt zurücklehnen und den Beitrag lesen. Unter dem Beitrag ist dann ein Button um diesen nochmals zu bearbeiten ;) |
AW: SIMPEL Verschlüsselungs-Array-Problem mit Matritzen
Zuerst wird man sich darüber klar, was man eigentlich machen will z.B.:
![]() Dann bestimmt man welche Parameter nötig sind, welche Rückgabewerte man erwartet und trennt die Funktion von der Oberfläche:
Delphi-Quellcode:
procedure TForm1.BtVerschClick(Sender: TObject);
begin EdAusgabe.Text := FunktionsNameDerBeschreibtWasGetanWird( EdEingabe.Text, StrToInt(EdMatrixK1.Text), StrToInt(EdMatrixK2.Text), StrToInt(EdMatrixK3.Text), StrToInt(EdMatrixK4.Text)); end; function FunktionsNameDerBeschreibtWasGetanWird(AValue: string; MatrixK1, MatrixK2, MatrixK3, MatrixK4: Integer): string; var MSource: array of array[0..1] of Integer; // 2 Zeilen, beliebige Anzahl Spalten n, nMax, x, y: Integer; begin {Anzahl Spalten der Ausgangsmatrix bestimmen} nMax := Length(AValue); SetLength(MSource, (nMax + 1) div 2); {Ausgangsmatrix füllen} n := 1; for x := 0 to High(MSource) do begin for y := 0 to 1 do begin if n <= nMax then MSource[x,y] := Ord(AValue[n]) else MSource[x,y] := 30; Inc(n); end; end; {...} end; |
AW: SIMPEL Verschlüsselungs-Array-Problem mit Matritzen
@ Sir Rufo
Danke, das programm soll so in etwa das leisten. Also die Ascii werte eines Zeichens mit einer Verschlüsselungsmatrix Verschlüsseln etwa so: MatrixK1 MatrixK2 Nachricht(Asciiwerte) div2 Versch werte * = MatrixK3 MatrixK4 Nachricht(Asciiwerte) div2 Versch werte KLARTEXT: wenn mann KK eingibt und als MatrixK werte 1,2,3,4 sieht das 1 Dimensional so aus 1 * 75(K) + 2 * 75(K) = Versch1 3 * 75(K2) + 4 * 75(K2) = versch2 VerschString := IntToStr (Versch1)+(Versch2) // das ganze nur halt wenn versch ein array ist, und so mit nur einem versch // und als for-Variabel for i := Length(EdEingabe.text) do Verschwert := (Verschwert) + (Versch[i]); ; Klar? habs jetzt geschafft zum glück auch noch anders zu lösen, hier die lösung:
Delphi-Quellcode:
procedure TForm1.BtVerschClick(Sender: TObject);
const Max = 10; var i: Integer; f: Integer; ff: Integer; gg: Integer; h: Integer; Asc: Array[1..Max] of Integer; Zw : array[1..Max] of String; MatrixV : array[1..Max] of Integer; g : integer; MatrixK1, MatrixK2, MatrixK3, MatrixK4: Integer; MatrixN: Integer; Ausgabe: String; begin try Ausgabe := ''; MatrixK1 := StrToInt (EdMatrixK1.text); if MatrixK1 = 0 then showmessage ('MatrixK1 darf nicht 0 sein!'); MatrixK2 := StrToInt (EdMatrixK2.text); if MatrixK2 = 0 then showmessage ('MatrixK2 darf nicht 0 sein!'); MatrixK3 := StrToInt (EdMatrixK3.text); if MatrixK3 = 0 then showmessage ('MatrixK3 darf nicht 0 sein!'); MatrixK4 := StrToInt (EdMatrixK4.Text); if MatrixK4 = 0 then showmessage ('MatrixK4 darf nicht 0 sein!'); for i := 1 to Length(EdEingabe.Text) do Asc[i] := ord(EdEingabe.text[i]); ; for f := 1 to Length(EdEingabe.Text) div 2 do MatrixV[f] := (MatrixK1 * Asc[f]) + (MatrixK2 * Asc[f]); ; for g := 1 to length(EdEingabe.text) div 2 do Zw[g] := IntToStr(MatrixV[g]); ; for ff := Length(EdEingabe.text) div 2 to Length(EdEingabe.Text) do MatrixV[ff] := (MatrixK4 * Asc[ff]) + (MatrixK4 * Asc[ff]); ; for gg := Length(EdEingabe.text) div 2 to Length(EdEingabe.Text) do Zw[gg] := IntToStr(MatrixV[gg]) ; for h := 1 to length(EdEingabe.text) do Ausgabe := (Ausgabe) + (Zw[h]) + (' '); ; if MatrixK1 = 0 then EdVersch.Text := '' else if MatrixK2 = 0 then EdVersch.Text := '' else if MatrixK3 = 0 then EdVersch.Text := '' else if MatrixK4 = 0 then EdVersch.Text := '' else EdVersch.Text := (Ausgabe); except showmessage ('Fehler bitte nur Buchstaben eingeben'); end; end; Jetzt habe ich nurnoch das Problem, das ich nun das was herauskommt z.B. |17812 324 241242 212 | Jetzt entschlüsseln will. Dazu muss ich jetzt die Zahl bis einschließlich dem Leerzeichens in ein array zuweisen. Aber wie ich das mache weiß ich nicht. So viel hab ich schon:
Delphi-Quellcode:
procedure TForm1.BtEntClick(Sender: TObject);
const max = 10; var Zw: Array[1..max] of String; Zw2: Array[1..max] of String; Asc2: Array[1..max] of Integer; Asc: Array[1..max] of Integer; i,g,h,ii: Integer; Ausgabe: String; begin for i := 1 to length(EdVersch.Text) do Zw[i] := (EdVErsch.Text[i]); //hier der String hier muss das so reingeschrieben werden. ; EdEnt.text := (Zw[1]); //Probe end; |
AW: SIMPEL Verschlüsselungs-Array-Problem mit Matritzen
Das mit der Matrix hat euer Lehrer wohl etwas anders gemeint, du verwendest ja gar keine? :wink:
Delphi-Quellcode:
Und dann eben die Matritzenmultiplikationen durchführen:
type
TChiffreMatrix = array [1..2, 1..2] of double; // falls Array bei 1 beginnen soll TTextMatrix = array [1..2, 1..5] of double; // für max. 10 Zeichen ... var Chiffre, InversChiffre: TChiffreMatrix; Text, Decrypt, Encrypt: TTextMatrix; S1, S2: string;
Delphi-Quellcode:
S1 := 'Test';
// Chiffre setzen Chiffre := ... // Text in Matrix umwandeln Text := TextToMatrix(S1); // Verschlüsseln Encrypt := MultAB(Chiffre, Text); // Entschlüsseln InversChiffre := MatrixInversion(Chiffre); Decrypt := MultAB(InversChiffre, Encrypt); // Matrix in Text umwandeln S2 := MatrixToText(Decrypt); // Kontrolle S1 = S2 ? Text = Decrypt ? |
AW: SIMPEL Verschlüsselungs-Array-Problem mit Matritzen
WOW ähm.
Das ist ein wenig zu kompliziert, und die verschlüssekung klappt bei mir. Wass mir fehlt ist das ich halt jetzt aus der Edit komponente nur die Zahl bis einschließlich zum leerzeichen in ein arrayfeld packe, und das leerzeichen rauslösche. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz