Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Variablen während Laufzeit erzeugen? (https://www.delphipraxis.net/101398-variablen-waehrend-laufzeit-erzeugen.html)

mo_greene 13. Okt 2007 10:34

Re: Variablen während Laufzeit erzeugen?
 
Delphi-Quellcode:
procedure TKryptobox.Verschluesseln;
(* -------------------------------------------------------------------- *)
var
  i, //Zählvariable für for-Schleife
  z, //Variable, die bis zum Ende des Klartextes zählt (repeat...until)
  KTWert,
  GTWert,
  Schluessellaenge, Zeichen : integer;
  List : TStringlist;
begin
  List := TStringlist.Create; //Stringlist wird erstellt
  Geheimtext := '' ;
  Vorbehandeln(Klartext);
  Zeichen := 1;
  z := 1;
(*--------------------------------------------------------------------------*)
  try
    repeat
    for i := 0 to length (Schluessel) do // x = Länge des Schlüssels
    begin                               // x = Anzahl der Elemente in List
      List.Add('');                    
      List.Strings[i]:= List.Strings[i] + Klartext[zeichen];
      //List.Insert(i, Klartext[Zeichen]);
      inc (Zeichen);
      inc (z);
    end;
    i := 0;
    until z = length(Klartext);
  except
    ShowMessage('Fehler');
  end;
List.SaveToFile('C:\Krypto.txt'); //Zum Testen des Inhalts in List :)
(*--------------------------------------------------------------------------*)
end;

inherited 13. Okt 2007 10:47

Re: Variablen während Laufzeit erzeugen?
 
kurze frage: Was genau möchtest du erreichen. Willst du das bei jedem Durchlauf an die Zeilen etwas angehängt wird oder das bei jedem Durchlauf die liste geleert wird und neu beschrieben?

mo_greene 13. Okt 2007 10:49

Re: Variablen während Laufzeit erzeugen?
 
Zitat:

Zitat von inherited
kurze frage: Was genau möchtest du erreichen. Willst du das bei jedem Durchlauf an die Zeilen etwas angehängt wird oder das bei jedem Durchlauf die liste geleert wird und neu beschrieben?


das etwas angehängt wird ... :stupid:

List := alter Inhalt + neuer Inhalt

inherited 13. Okt 2007 10:55

Re: Variablen während Laufzeit erzeugen?
 
Und ist Schluessel vorher und nachher gleichgroß, also beim ersten und beim 2. durchlauf, bei dem etwas angehängt werden soll?

OldGrumpy 13. Okt 2007 10:57

Re: Variablen während Laufzeit erzeugen?
 
Der Knackpunkt ist die Abbruchbedingung für die repeat..until-Schleife (und die fehlende Abbruchbedingung für die innere Schleife). So wie Du das implementiert hast, muss die Länge des Klartextes ein Vielfaches der Schlüssellänge sein, sonst rumst es beim letzten Schleifendurchlauf. Denn die innere Schleife läuft immer so oft durch wie der Schlüssel lang ist.

mo_greene 13. Okt 2007 10:58

Re: Variablen während Laufzeit erzeugen?
 
Die Länge des Schlüssels ist immer gleich und es soll jeweils 1 zeichen angefügt werden...


Zitat:

Zitat von OldGrumpy
Der Knackpunkt ist die Abbruchbedingung für die repeat..until-Schleife. So wie Du das implementiert hast, muss die Länge des Klartextes ein Vielfaches der Schlüssellänge sein, sonst rumst es beim letzten Schleifendurchlauf. Denn die innere Schleife läuft immer so oft durch wie der Schlüssel lang ist.

Das heißt ich müsste innerhalb der Schleife noch überprüfen lassen, ob der Klartext zuenede ist und dann soll die Schleife beendet werden?

mo_greene 13. Okt 2007 11:09

Re: Variablen während Laufzeit erzeugen?
 
Es funktioniert :mrgreen: :mrgreen: Vielen Dank!!!

Habe nur noch ein kleines Anliegen:

Es fehlt das letzte Zeichen des Textes...habe ich einen Denkfehler gemacht?

Delphi-Quellcode:
    repeat
    for i := 0 to length (Schluessel) do // x = Länge des Schlüssels
    begin
      List.Add('');                               // x = Anzahl der Elemente in List
      List.Strings[i]:= List.Strings[i] + Klartext[zeichen];
      //List.Insert(i, Klartext[Zeichen]);
      inc (Zeichen);
      inc (z);
      if z = length (Klartext) then
        break;
    end;
    i := 0;
    until z = length(Klartext);

DeddyH 13. Okt 2007 11:33

Re: Variablen während Laufzeit erzeugen?
 
So besser (habe mir das Ganze aber nicht genauer angesehen)?:
Delphi-Quellcode:
repeat
    for i := 0 to length (Schluessel) do // x = Länge des Schlüssels
    begin
      List.Add('');                               // x = Anzahl der Elemente in List
      List.Strings[i]:= List.Strings[i] + Klartext[zeichen];
      //List.Insert(i, Klartext[Zeichen]);
      inc (Zeichen);
      inc (z);
      if z > length (Klartext) then
        break;
    end;
    i := 0;
    until z > length(Klartext);

thkerkmann 13. Okt 2007 12:03

Re: Variablen während Laufzeit erzeugen?
 
Zitat:

Zitat von mo_greene
Es funktioniert :mrgreen: :mrgreen: Vielen Dank!!!

Habe nur noch ein kleines Anliegen:

Es fehlt das letzte Zeichen des Textes...habe ich einen Denkfehler gemacht?

Delphi-Quellcode:
    repeat
    for i := 0 to length (Schluessel) do // x = Länge des Schlüssels
    begin
      List.Add('');                               // x = Anzahl der Elemente in List
      List.Strings[i]:= List.Strings[i] + Klartext[zeichen];
      //List.Insert(i, Klartext[Zeichen]);
      inc (Zeichen);
      inc (z);
      if z = length (Klartext) then
        break;
    end;
    i := 0;
    until z = length(Klartext);

Du hast jetzt aber eine Liste, die viel länger ist als gewollt.
Da du ja nicht nur in der ersten Runde in deine Liste Zeilen einhängst, sondern in jeder, bleiben jede Menge leere Listenzeilen übrig. Ich würde die Liste vor der repeat Schleife mal mit leeren Strings füllen, und dann weitermachen.

also
Delphi-Quellcode:
for i:=0 to length(Schluessel) do
  List.Add('');
repeat
  for i:=0 to length(Schluessel) do
  begin
    List.Strings[i] ...
    ...
  end
  i := 0; // kannste dir schenken ist unnötig
until z > length(Klartext);
Gruss

OldGrumpy 13. Okt 2007 12:08

Re: Variablen während Laufzeit erzeugen?
 
Aber wieso in den Schleifen von null bis Length(Schlüssel)? Das passt doch nicht zusammen :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:17 Uhr.
Seite 3 von 4     123 4      

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