![]() |
Re: Kryptologie Projekt in Delphi... HILFE !!!
Zitat:
Code:
Wenn du jetzt die erste Spalte runter gehst, begegnen dir die Zahlen 1,6,11 , also Zahlen der Form
1 2 3 4 5
6 7 8 9 10 11 12 13 14 15 a+x*n, wobei a die Nummer deiner Spalte ist (hier 1) x die Nummer der Zeile ist und n die Anzahl der Ziffern pro Zeile (hier 5). (Wobei hier die 1 die Koordinate (1,0) hat. Also brauchst du sowas wie eine Schleife
Delphi-Quellcode:
Ich weiss grad nicht, ob erkannt wird, dass das Produkt aus zwei Integern wieder integer ist, wenn es so ist, kannst du das Round auch weglassen.
str:='';
for a:=1 to 5 do for x:=0 to 2 do str:= str+klartext[round(a+x*n)]; Dabei muss noch beachtet werden, dass Strings eigentlich bei Null beginnen (str:='123' -> str[0]=1) dann musst du dir noch Gedanken über einen möglichen Abbruch der Schleife machen, also sowas wie (if a+x*n>high(klartext) oder so. |
Re: Kryptologie Projekt in Delphi... HILFE !!!
Wie soll eine Kommazahl rauskommen, wenn ich zwei Ganzzahlen multipliziere? :roll:
|
Re: Kryptologie Projekt in Delphi... HILFE !!!
Zitat:
So und jetzt weiss ich es genau: Delphi erkennt es, das round ist somit nicht notwendig. |
Re: Kryptologie Projekt in Delphi... HILFE !!!
Ich versuche seit gestern krampfhaft diesen Transpositionsverfahren hin zu bekommen. Aber irgendwie will es nicht funktionieren. Also meine benutzer oberfläche sieht so aus:
![]() Wenn ich jetzt einen Text eingebe soll der zeilenweise in die Listbox eingetragen werden,d.h. wenn der Benutzer bei der schluesseleingabe 5 eingibt sollen die Zeilen mit max 5 Zeichenbelegt sein. Wenn ich dann auf verschlüsseln klicke soll der Klartext spaltenweise in die Listbox des Geheimtextes eingetragen werden, so dass eine geheime Nachricht entsteht. Wie Realisiere ich das ? Wenn ihr etwas anders gestalten würdet um es nicht so umständlich zu machen, gebt mir bitte Anregungen. MFG Jacqybaby |
Re: Kryptologie Projekt in Delphi... HILFE !!!
Schlüssellänge 5
wenn Dein Klartext jetzt so ausschaut: diesisteinBeispiel d i e s i s t e i n B e i s p i e l * * wird daraus dsBiiteeeeilsis*inp* das ist Dein verschlüsselter Text o[1],o[6],o[12],o[18],o[2],o[7]....
Delphi-Quellcode:
Das ist nicht getestet, aber im Prinzip sollte es so funktionieren.
for i:=1 to length(klartext) DIV schluessellaenge DO
for j:=i-1 to schluessellaenge begin VText:=VText+klartext[(j*schluessellaenge)+1] end; Grüße Klaus |
Re: Kryptologie Projekt in Delphi... HILFE !!!
Aha so weit so gut, jetzt hab ich nur das Problem, dass ich nciht weiss wie ich die Eingabe in ein Edit-Feld so zerteile, dass ich sie als einzelne Buchstaben in die Listbox eingetragen werden damit ich sie dann in dem oben gennanten Algorithmus verabeiten kann.
MFG Jacqybaby |
Re: Kryptologie Projekt in Delphi... HILFE !!!
mit der Listbox stelle ich mir das auch etwas schwieriger vor.
Einfacher geht es denke ich mit einem TMemo. In dem Klartextfenster nach dem die Anzahl der Zeichen eingetragen wurden die der Schüsselänge entspricht eine neue Zeile hinzufügen und dort dann wieder die gewünschte Anzahl an Zeichen eintragen.... Zum Umwandeln kannst Du dir dann entweder den Klartext als ein String lassen, quasi so wie er eingeben wurde oder Du machst die Umwandlung über die Zeilen und Spalten des Memos Vtext:=Vtext+memo(zeile1,zeichen1) vtext:=Vtext+memo(zeile2,zeichen1) ... vtext:=vtext+memo(zeilex,zeicheny) Das natürlich in einer Schleife. memo beinhaltet die Anzahl der Zeilen als propertie Der Rest ist dann noch ein wenig basteln. Grüße Klaus |
Re: Kryptologie Projekt in Delphi... HILFE !!!
wofür steht
"Vtext" ? was ist "propertie" ? so weit bin ich jetzt was die Eingabe in das Memo-Feld betrifft:
Delphi-Quellcode:
Mein Problem ist nach wie vor das Zerteilen des Editfeldes in einzelne Buchstaben, die dann nacheinander in eine Zeile geschrieben werden, die der Länge des Schlüssels entspricht.
procedure TForm1.klartexteingabeClick(Sender: TObject);
begin s:=strtoint(schluessel.text); for i:=1 to s do begin memo3.Lines[1]:= end; So ich hab noch nen bisschen weiter gesucht aber hier bin ich ratlos:
Delphi-Quellcode:
Es wird nichts in das Memo-Feld geschrieben, warum nicht ?
procedure TForm1.klartexteingabeClick(Sender: TObject);
var i,j:integer; begin s:=strtoint(schluessel.text); l:=length(edit3.Text); klartext:=edit3.Text; for i:=1 to s do for j:=0 to l Do begin memo3.Lines.Add[i]:=klartext[i]; end; end; MFG Jacqybaby |
Re: Kryptologie Projekt in Delphi... HILFE !!!
Delphi-Quellcode:
so sollte das zerlegen gehen, war doch nicht so schwer - oder?
procedure TForm1.klartexteingabeClick(Sender: TObject);
var i:integer; text_dummy:string; begin // memo löschen memo3.text:=''; // Schlüssellänge s:=strtoint(schluessel.text); klartext:=edit3.Text; // fülle klartext bis die Länge von klartext ein vielfaches von s ist while length(klartext) mod s <> 0 do klartext:=klartext+' '; text_dummy:='' //zerlege klartext in zeilen mit s = Anzahl von Zeichen for i:=1 to length(klartext) do begin text_dummy:=text_dummy+klartext[i]; if i MOD s = 0 begin memo3.lines.add(text_dummy); text_dummy:=''; end; end; end; transponieren sollte dann so gehen
Delphi-Quellcode:
auch nicht so schwer, oder?
for spalte:=1 to s do
begin for zeile:=0 to memo3.Lines.Count-1 DO begin memo2.text:=memo2.text+memo3.lines.strings[zeile][spalte]; end; end; Grüße Klaus |
Re: Kryptologie Projekt in Delphi... HILFE !!!
Zitat:
Delphi-Quellcode:
aber ausgegeben wird mir das wenn ich geheimtext eingebe:
procedure TForm1.verschluesselnClick(Sender: TObject);
var vtext:string; i,j,s:integer; begin klartext:=memo3.Text; s:=strtoint(schluessel.text); vtext:=''; for i:=1 to length(klartext) DIV s{chluessellaenge} DO for j:=i-1 to length(klartext) do begin vtext:=vtext+klartext[(j*s{chluessellaenge})+1]; memo4.lines.add(vtext); end; end; ![]() Ich hab schon vieles versucht aber irgendwie klappt das nicht. Außerdem soll der Geheimtext in einer Zeile(mit max. 29 Zeichen) ausgegeben werden. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:16 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