AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Matrix Verschlüsselung

Ein Thema von Sunrise91 · begonnen am 1. Mär 2010 · letzter Beitrag vom 3. Mär 2010
Antwort Antwort
Sunrise91

Registriert seit: 1. Mär 2010
5 Beiträge
 
#1

Matrix Verschlüsselung

  Alt 1. Mär 2010, 17:04
Huhu bin neu hier

Wir programmieren zur Zeit in der Schule ein Programm mit welchem man verschiedene Chiffren auf Texte anwenden kann.
Grad bin ich dabei eine Matrix Verschlüsselung zu programmieren (Ein Text wird Zeilenweise in ein Array eingelesen und spaltenweise wieder ausgebeben).

Delphi-Quellcode:
procedure matrix_ver;
const max=100;
var s1,s2:string;
i,k,j :integer;
var Matrix : array[1..max,1..max]of char;

begin
  s1:=Chiffre.Original_Text.Text; //Initialisieung der Variablen
  s2:='';
  x:=trunc(sqrt(length(s1)))+1;
  k:=0;
for j := 1 to 100 do
  for i := 1 to 100 do Matrix[i,j]:='#';



for j := 1 to x do // Einlesen des Textes ins Array
  for i := 1 to x do
    begin
      k:=k+1;
      Matrix[i,j]:=s1[k];
      Chiffre.StringGrid1.Cells[i,j]:=s1[k]; // Test ob richtig Eingelesen
    end;


for j := 1 to x do // Umgekehrtes Auslesen des Arrays
    for i := 1 to x do
      s2:=s2 + Matrix[j,i];

Chiffre.Verschluesselt_Text.Text:=s2; // Ausgabe in ein Memo
end;
Mein Problem liegt darin, dass beim Auslesen der Text nicht vollständig "umgewandelt" wird. Selbst mein Inf. Lehrer weiss nicht weiter. Ich hab schon das Programm schrittweise ausgeführt und dabei bemerkt, dass der Text in s2 vollständig ist jedoch nicht vollständig im Memo ausgegeben wird.
Hoffe jemand kann mir helfen
Anbei ist noch Screenshot
Miniaturansicht angehängter Grafiken
inf_115.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#2

Re: Matrix Verschlüsselung

  Alt 1. Mär 2010, 17:19
Du greifst auf Buchstaben hinter dem Stringende zu. Das kann nicht gut gehen

Das erste Warnsignal sollten die Kästen in den Zellen des Stringgrids sein - das sind halt die Bytes die hinter dem String im Arbeitsspeicher stehen. Wenn du das ganze jetzt wieder ausliest, sind diese Zeichen nicht mehr am Ende sondern mittendrin. Und so wie das aussieht ist das 2. Zeichen der untersten Zeile ein Nullbyte, denn in der C++ Welt signalisieren Nullbytes das Ende eines Strings - und das Memo stellt nicht mehr Zeichen dar (da es ja denkt, der String ist zu Ende)
  Mit Zitat antworten Zitat
Sunrise91

Registriert seit: 1. Mär 2010
5 Beiträge
 
#3

Re: Matrix Verschlüsselung

  Alt 1. Mär 2010, 17:31
das ist ja noch ein Problem ich hab ja vorher das Array initialisiert. Eigendlich sollten überall Rauten stehen bzw. eigendlich möchte ich da Leerzeichen drin haben. Und Stattdessen stehen halt da diese Nullbyte
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.464 Beiträge
 
Delphi 12 Athens
 
#4

Re: Matrix Verschlüsselung

  Alt 1. Mär 2010, 17:34
Das Initialisieren kann gleich mit eingespart werden:
Delphi-Quellcode:
// Einlesen des Textes ins Array
k := 1;
kmax := Length(s1);
for j := 1 to x do
begin
  for i := 1 to x do
  begin
    if k <= kmax then
      Matrix[i, j] := s1[k]
    else
      Matrix[i, j] := ' '; // oder '#'

    Chiffre.StringGrid1.Cells[i, j] := Matrix[i, j] // Test ob richtig Eingelesen
    k := k + 1;
  end;
end;
  Mit Zitat antworten Zitat
Sunrise91

Registriert seit: 1. Mär 2010
5 Beiträge
 
#5

Re: Matrix Verschlüsselung

  Alt 1. Mär 2010, 17:51
danke für den Tip Aber iwie hilft mir das noch nicht bei meinem Problem weiter

€: Hab den Code von Blub grob übernommen. Jedoch entstehen bei mir immer noch Nullbytes ...(siehe Anhang)
Miniaturansicht angehängter Grafiken
inf_112.jpg  
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.464 Beiträge
 
Delphi 12 Athens
 
#6

Re: Matrix Verschlüsselung

  Alt 2. Mär 2010, 13:34
Mit "grob übernommen" kann zumindest ich nichts anfangen.

Bitte häng doch mal dein ganzes Projekt als Zip-Archiv an, den Teil zum Entschlüsseln haben wir noch gar nicht gesehen.
Sollte eigentlich symmetrisch sein.

Edit:
Die Größe des Arrays wird falsch berechnet, wenn die Wurzel aus der Länge des Strings eine Ganzzahl ist.
Delphi-Quellcode:
// falsch
// x:=trunc(sqrt(length(s1)))+1;

// richtig
if Length(s1) > 0 then
  x := Trunc(Sqrt(Length(s1) - 1)) + 1
else
  x := 0;
Ein anderes Problem betrifft nicht das Verschlüsseln selbst, sonders das Speichern des Strings in einem Memo.
Das Memo liefert als Text einen String mit Zeilenvorschüben die aus zwei nicht darstellbaren Zeichen CR + LF bestehen.
Durch das Verschlüsseln werden diese Zeichen auseinander gerissen.
Wird dieser Text dem Memo zugewiesen, verändert das Memo den Text, um diesen darstellen zu können.
Also nicht den Text des Memos abfragen, um diesen zu dekodieren, sondern den kodierten Text in einer Variable zwischenspeichern.
  Mit Zitat antworten Zitat
Sunrise91

Registriert seit: 1. Mär 2010
5 Beiträge
 
#7

Re: Matrix Verschlüsselung

  Alt 2. Mär 2010, 21:35
Sry das ich jetzt erst wieder antworte aber hatte gestern keine Zeit mehr

Hab jetzt mal das Projekt angehangen aber bitte nicht über meinen Stil meckern hab größtenteils noch nicht kommentiert außer den Part für die Matrix Verschlüsselung und n bisl von dem Rest.
Angehängte Dateien
Dateityp: rar semesterprojekt_chiffrieren_134.rar (284,3 KB, 19x aufgerufen)
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.464 Beiträge
 
Delphi 12 Athens
 
#8

Re: Matrix Verschlüsselung

  Alt 3. Mär 2010, 11:53
Zu deinem Stil sollte ich besser nichts sagen...

Trotzdem kann ich mir grundsätzliche Hinweise nicht verkneifen.

Funktionen haben Parameter und Rückgabewerte, alles darüber hinaus geht eine Funktion nichts an.
Zugriffe auf globale Variablen in anderen Units sind unschön, Zugriffe auf Steuerelemente in fremden Formularen sind extrem ...

Ich habe deshalb mal ein bischen drin rumgeändert, aber nicht gleich alle Units, die solltest du selbst überarbeiten.
Ach ja, Matrix funktioniert jetzt natürlich.
Angehängte Dateien
Dateityp: zip semesterprojekt_chiffrieren_178.zip (10,0 KB, 20x aufgerufen)
  Mit Zitat antworten Zitat
Sunrise91

Registriert seit: 1. Mär 2010
5 Beiträge
 
#9

Re: Matrix Verschlüsselung

  Alt 3. Mär 2010, 13:45
Danke für die Hinweise^^ Das Problem ist nur wir sind in der schule "nur" ein Grundkurs und haben es daher bisher nicht anders gelehrt bekommen. Deshalb versteh ich recht wenig davon, was du gecodet hast ^^
Aber werd es mir mal angucken und vll bleibt ja was hängen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#10

Re: Matrix Verschlüsselung

  Alt 3. Mär 2010, 13:59
Dann schick uns mal deinen Leerer vorbei, denn selbst in 'nem Grundgurs sollte man sowas gleich "richtig" lernen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:32 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz