Delphi-PRAXiS
Seite 2 von 5     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Variablentypen bei ord() erzeugen Fehler (https://www.delphipraxis.net/197036-variablentypen-bei-ord-erzeugen-fehler.html)

Nox 12. Jul 2018 21:52

AW: Variablentypen bei ord() erzeugen Fehler
 
Zitat:

Zitat von KodeZwerg (Beitrag 1407077)
So wie ich das sehe wird nur ein einziger Char in ein Integer umgewandelt weswegen ich ein Array Vorschlug.
(da der Code keine Formatierung besitzt kann ich auch was überlesen haben, sorry falls das so ist)
So in etwa könnte man das wieder lesbar machen mit der Array Methode von oben.
Delphi-Quellcode:
var
  s: String;
begin
  s := '';
  for i := 0 to Size(MyRec)-1 do
    s := s + Char(MyRec[i]);
end;

Ich muss zugeben das ich aufgrund mangelnder Erfahrung keinen Array einbauen kann.
Ich verstehe soweit das man in einen Array verschiedene Werte speichern kann und die Größe dynamisch festlegbar ist.
ich hoffe ich habe das soweit richtig verstanden.
Es tut mir sehr leid wenn das nervig für Sie ist und ich würde es auch nicht schlimm finden wenn Sie mir bei weiteren Hilfestellungen nicht mehr alles erklären möchten.

Trotzdem ein großes danke und ich werde versuchen ihren Code zu verstehen und irgendwie umzusetzen!

LG Noah

gammatester 12. Jul 2018 22:08

AW: Variablentypen bei ord() erzeugen Fehler
 
Ja das ist besser verständlich. Da bieten sich Strings an, jeweils einer für's Original und die verschlüsselte Ausgabe. Ein einfaches Beispiel:
Delphi-Quellcode:
var
  s,t: string;
  i: integer;
  c1,c2: char;
begin
  readln(s);
  t := '';
  for i:=1 to length(s) do begin
    c1 := s[i];
    //berechne c2 aus c1
    //Beispiel:
    //die nächste Zeile invertiert das unterste Bit des Zeichens
    c2 := char(ord(c1) xor 1);
    t := t + c2;
  end;
  writeln(t);
end.
Wenn man 'Test' eingibt, ist die Ausgabe 'Udru'.

Das ganze dann in eine Schleife einbauen, Lesen und Schreiben in Datei.

Achtung, beim Verschlüsseln können Zeichen generiert werden, die nicht lesbar sind oder Pascal-Readln durcheinander bringen (zB wenn ein Zeilenende generiert wird).

Nox 12. Jul 2018 22:25

AW: Variablentypen bei ord() erzeugen Fehler
 
Delphi-Quellcode:
var
  s,t: string;
  i: integer;
  c1,c2: char;
begin
  readln(s);  //s ist also das Textdokument in Form eines Strings?
  t := '';
  for i:=1 to length(s) do begin
    c1 := s[i];  // s[1] steht dabei für welche Operations? (bin nur Anfänger)
    //berechne c2 aus c1    //Ist c1 dabei der unverschlüsselte Buchstabe und c2 der verschlüsselte?
    //Beispiel:
    //die nächste Zeile invertiert das unterste Bit des Zeichens
    c2 := char(ord(c1) xor 1);  //wofür ist dieser Schritt? ist das eine anderer Vorschlag für eine "Verschlüsselung"? 
    t := t + c2;    //ist t der String der im Ausgabedokument abgespeichert werden soll?
  end;
end.
Tut mir leid wenn das nervt...

LG Noah

gammatester 12. Jul 2018 22:39

AW: Variablentypen bei ord() erzeugen Fehler
 
Zitat:

c1 := s[i]; // s[1] steht dabei für welche Operations? (bin nur Anfänger)
Das ist s[i] nicht s[1], das i-Zeichen im Eingabestring
Zitat:

//berechne c2 aus c1 //Ist c1 dabei der unverschlüsselte Buchstabe und c2 der verschlüsselte?
Ja, da setzt Du dann Deine spezielle Verschlüsselung ein.
Zitat:

t := t + c2; //ist t der String der im Ausgabedokument abgespeichert werden soll?
Ja, man start mit einem leeren String und hängt jeweil das gerade verschlüsselte Zeichen an.

Zitat:

Um Die Verschlüsselung zu erreichen soll eine einzugebene Zahl als Multiplikator dienen um jegliche Ascii Zahlen (umgewandelte Buchstaben) zu "verschlüsseln".
das Ergebnis dieser Multiplikation soll im gleichen Textdokument gespeichert werden und den Originaltext ersetzen.
Das ist nicht so einfach, weil

1) eine Textdatei nicht gleichzeitig gelesen und geschrieben werden kann

2) nicht jeder Faktor geignet ist (für 8-Bit-Zeichen muss der Faktor teilfremd zu 256 sein).

KodeZwerg 12. Jul 2018 22:44

AW: Variablentypen bei ord() erzeugen Fehler
 
Delphi-Quellcode:
procedure DateiDingens(const InputString: string; const Modifier: Byte; var Output: String);
var
  s: string;
  i: Integer;
  b: Byte;
  f: file of Byte;
begin
  // Datei mit verschluesseltem Inhalt sichern
  AssignFile(F, Application.ExeName+'.txt');
  Rewrite(f);
  for i := 1 to Length(InputString) do
  begin
    b := Ord(InputString[i]) + Modifier;
    write(f, b);
  end;
  CloseFile(F);

  // Datei mit verschluesseltem Inhalt laden
  AssignFile(F, Application.ExeName+'.txt');
  Reset(F);
  s := '';
  while not Eof(F) do
  begin
    Read(f, b);
    s := s + Char(b - Modifier);
  end;
  CloseFile(F);
  Output := S;
end;
Das sollte das machen was Du möchtest, Dateinamen ersetzen und ab gehts :-D
Ps: Das ist ein all-in-one Beispiel damit Du gleich siehst wie man speichert und lädt.
Pps: InputString sollte Text sein, bei Binär läuft das mit dem Modifier schnell über 255 hinaus und alles ist futsch.

p80286 12. Jul 2018 22:45

AW: Variablentypen bei ord() erzeugen Fehler
 
kribbelige Finger

p80286 12. Jul 2018 22:48

AW: Variablentypen bei ord() erzeugen Fehler
 
Beim Ver- und Entschlüsseln würde ich maximalen Abstand von Strings nehmen, binär wäre besser aber sei's drum

Delphi-Quellcode:
var
  Infile : Textfile;
   s,t: string;
   i: integer;
   c1,c2: char;
begin
   assignfile(infile,'c:\irgendwo\Meinzuverschluesselnder.txt');
   reset(infile);
   assignfile(outfile,'c:\rgendwoanders\verschluesselter.txt');
   rewrite(outfile);
   //------------------------
   // Hier sollte nun eine Repeat until oder
   // while - Schleife beginnen
   //----------------
   readln(infile,s); //s ist der erste String einer Textdatei
   t := '';
   for i:=1 to length(s) do begin
     c1 := s[i]; // s[1] ist der ite Buchstabe des Strings
     //berechne c2 aus c1 //Ist c1 dabei der unverschlüsselte Buchstabe und c2 der verschlüsselte?
     //Beispiel:
     //die nächste Zeile invertiert das unterste Bit des Zeichens
     c2 := char(ord(c1) xor 1); //Eine Art Versclüsselung
     t := t + c2; //ist t der String der im Ausgabedokument abgespeichert werden soll? - Ja
   end;
   writeln(Outfile,t);
   //--------
   closefile(outfile);
   closefile(Infile);
end;
Gruß
K-H

Nox 12. Jul 2018 22:50

AW: Variablentypen bei ord() erzeugen Fehler
 
Zitat:

Zitat von gammatester (Beitrag 1407086)
Zitat:

c1 := s[i]; // s[1] steht dabei für welche Operations? (bin nur Anfänger)
Das ist s[i] nicht s[1], das i-Zeichen im Eingabestring
Zitat:

//berechne c2 aus c1 //Ist c1 dabei der unverschlüsselte Buchstabe und c2 der verschlüsselte?
Ja, da setzt Du dann Deine spezielle Verschlüsselung ein.
Zitat:

t := t + c2; //ist t der String der im Ausgabedokument abgespeichert werden soll?
Ja, man start mit einem leeren String und hängt jeweil das gerade verschlüsselte Zeichen an.

Zitat:

Um Die Verschlüsselung zu erreichen soll eine einzugebene Zahl als Multiplikator dienen um jegliche Ascii Zahlen (umgewandelte Buchstaben) zu "verschlüsseln".
das Ergebnis dieser Multiplikation soll im gleichen Textdokument gespeichert werden und den Originaltext ersetzen.
Das ist nicht so einfach, weil

1) eine Textdatei nicht gleichzeitig gelesen und geschrieben werden kann

2) nicht jeder Faktor geignet ist (für 8-Bit-Zeichen muss der Faktor teilfremd zu 256 sein).


Der 1. Punkt macht auf jeden Fall Sinn Super!
Bei dem 2. versteh ich es jedoch nicht ganz...ist es nicht egal welche Zahlen benutzt werden da die Verschlüsselung ja mit der Multiplikation und erst die Entschlüsselung mit der Division des bereits benutzten Multiplikators abläuft?

Nox 12. Jul 2018 22:52

AW: Variablentypen bei ord() erzeugen Fehler
 
Zitat:

Zitat von p80286 (Beitrag 1407089)
Beim Ver- und Entschlüsseln würde ich maximalen Abstand von Strings nehmen, binär wäre besser aber sei's drum

Delphi-Quellcode:
var
  Infile : Textfile;
   s,t: string;
   i: integer;
   c1,c2: char;
begin
   assignfile(infile,'c:\irgendwo\Meinzuverschluesselnder.txt');
   reset(infile);
   assignfile(outfile,'c:\rgendwoanders\verschluesselter.txt');
   rewrite(outfile);
   //------------------------
   // Hier sollte nun eine Repeat until oder
   // while - Schleife beginnen
   //----------------
   readln(infile,s); //s ist der erste String einer Textdatei
   t := '';
   for i:=1 to length(s) do begin
     c1 := s[i]; // s[1] ist der ite Buchstabe des Strings
     //berechne c2 aus c1 //Ist c1 dabei der unverschlüsselte Buchstabe und c2 der verschlüsselte?
     //Beispiel:
     //die nächste Zeile invertiert das unterste Bit des Zeichens
     c2 := char(ord(c1) xor 1); //Eine Art Versclüsselung
     t := t + c2; //ist t der String der im Ausgabedokument abgespeichert werden soll? - Ja
   end;
   writeln(Outfile,t);
   //--------
   closefile(outfile);
   closefile(Infile);
end;
Gruß
K-H

Das sieht ziemlich übersichtlich und auf jeden Fall leichter verständlich aus!... ich versuche alles zu verstehen und einzubauen Dankeschön!
Sollte es noch ein Problemchen geben schreibe ich wieder :)

LG Noah

KodeZwerg 12. Jul 2018 22:58

AW: Variablentypen bei ord() erzeugen Fehler
 
Bin damit raus, viel Glück.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:25 Uhr.
Seite 2 von 5     12 34     Letzte »    

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