AGB  ·  Datenschutz  ·  Impressum  







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

Variablentypen bei ord() erzeugen Fehler

Offene Frage von "KodeZwerg"
Ein Thema von Nox · begonnen am 12. Jul 2018 · letzter Beitrag vom 13. Jul 2018
Antwort Antwort
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#1

AW: Variablentypen bei ord() erzeugen Fehler

  Alt 12. Jul 2018, 23:24
Nochmal in aller Deutlichkeit
Du verschlüsselst Daten, keine Zeichen! Wenn Du mit Char oder Strings und Texfiles hantierst kannst Du Dir jede Menge ungewollte Fehler einhandeln.
Das mag ein- zweimal gut gehen aber auf Dauer geht das schief.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Nox

Registriert seit: 12. Jul 2018
22 Beiträge
 
#2

AW: Variablentypen bei ord() erzeugen Fehler

  Alt 12. Jul 2018, 23:29
Nochmal in aller Deutlichkeit
Du verschlüsselst Daten, keine Zeichen! Wenn Du mit Char oder Strings und Texfiles hantierst kannst Du Dir jede Menge ungewollte Fehler einhandeln.
Das mag ein- zweimal gut gehen aber auf Dauer geht das schief.

Gruß
K-H
Soll ich jetzt alles ins Binärsystem umwandeln?
Wenn ja wie? Tut mir leid aber ich zwinge auch niemandem mir zu helfen.

LG Noah
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Variablentypen bei ord() erzeugen Fehler

  Alt 12. Jul 2018, 23:38
Hier meine Variante entheddert so das Du theoretisch damit gleich loslegen kannst, wenn niemand einwände hat.
Nur für Text, wohlgemerkt(!)
Delphi-Quellcode:
procedure CryptStringToFile(const InputString: string; const Modifier: Byte; const Filename: String);
var
  s: string;
  i: Integer;
  b: Byte;
  f: file of Byte;
begin
  AssignFile(F, Filename);
  Rewrite(f);
  for i := 1 to Length(InputString) do
  begin
    b := Ord(InputString[i]) + Modifier;
    write(f, b);
  end;
  CloseFile(F);
end;

function CryptFileToString(const Filename: string; const Modifier: Byte): String;
var
  b: Byte;
  f: file of Byte;
begin
  AssignFile(F, Filename);
  Reset(F);
  Result := '';
  while not Eof(F) do
  begin
    Read(f, b);
    Result := Result + Char(b - Modifier);
  end;
  CloseFile(F);
end;
So hier Aufrufen:
Delphi-Quellcode:
var
  s : String;
begin
  s := 'Das ist ein DP Test.';
  // in dieser Zeile speichern wir einen String S verschluesselt in eine Datei
  CryptStringToFile(S, 5, Application.ExeName+'.txt');

  s := ''; // <- hier wird String gekillt, wir wollen ja nicht cheaten :-)
  // in dieser Zeile holen wir den verschluesselten String zurück
  s := CryptFileToString(Application.ExeName+'.txt', 5);

  // mach was mit "s"
end;
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Nox

Registriert seit: 12. Jul 2018
22 Beiträge
 
#4

AW: Variablentypen bei ord() erzeugen Fehler

  Alt 12. Jul 2018, 23:49
Hier meine Variante entheddert so das Du theoretisch damit gleich loslegen kannst, wenn niemand einwände hat.
Nur für Text, wohlgemerkt(!)
Delphi-Quellcode:
procedure CryptStringToFile(const InputString: string; const Modifier: Byte; const Filename: String);
var
  s: string;
  i: Integer;
  b: Byte;
  f: file of Byte;
begin
  AssignFile(F, Filename);
  Rewrite(f);
  for i := 1 to Length(InputString) do
  begin
    b := Ord(InputString[i]) + Modifier;
    write(f, b);
  end;
  CloseFile(F);
end;

function CryptFileToString(const Filename: string; const Modifier: Byte): String;
var
  b: Byte;
  f: file of Byte;
begin
  AssignFile(F, Filename);
  Reset(F);
  Result := '';
  while not Eof(F) do
  begin
    Read(f, b);
    Result := Result + Char(b - Modifier);
  end;
  CloseFile(F);
end;
So hier Aufrufen:
Delphi-Quellcode:
var
  s : String;
begin
  s := 'Das ist ein DP Test.';
  // in dieser Zeile speichern wir einen String S verschluesselt in eine Datei
  CryptStringToFile(S, 5, Application.ExeName+'.txt');

  s := ''; // <- hier wird String gekillt, wir wollen ja nicht cheaten :-)
  // in dieser Zeile holen wir den verschluesselten String zurück
  s := CryptFileToString(Application.ExeName+'.txt', 5);

  // mach was mit "s"
end;
So funktioniert es perfekt ich baue jetzt nur noch eine Speicherfunktion hintendran und versuche daraus zu lernen Vielen Vielen Dank!

LG Noah
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Variablentypen bei ord() erzeugen Fehler

  Alt 13. Jul 2018, 00:07
Delphi-Quellcode:
procedure CryptStringToFile(const InputString: string; const Modifier: Byte; const Filename: String);
var
  s: string; // <<-- diese Zeile löschen, überbleibsel von all-in-one version
Als Lernprojekt würde ich Dir empfehlen meine Methode in einen Filestream umzuwandeln, das ist nicht all zu schwer und hat eine Steile Lernkurve.
Mein example ist nur QuickAndDirty, bei längeren Texten auch arg langsam da alles byteweise passiert und nicht als ein block.
Später kannst Du Dich dann mit XOR befassen, das wäre am einfachsten umzusetzen, ein sample Stand bereits hier im Thread.

Bei meiner Variante ist es halt wichtig das nach Möglichkeit nur Text als Input reinkommt, kann ruhig multiline sein.
Es gibt noch null Fehler kontrolle, ob zum Beispiel der Modifier Part die 255 überschreitet, deshalb keine zu großen wählen.
Für normalen ASCII (0..127) als Input ist 128 der maximale Modifier Faktor.
Weitere Kontrollen:
Ob eine Datei geöffnet/geschrieben/gelesen werden konnte etc....
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Nox

Registriert seit: 12. Jul 2018
22 Beiträge
 
#6

AW: Variablentypen bei ord() erzeugen Fehler

  Alt 13. Jul 2018, 00:26
Eine letzte frage warum funktioniert das bitte jetzt nicht mehr?

LG Noah
Angehängte Grafiken
Dateityp: png Unbenannt.PNG (41,9 KB, 7x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Variablentypen bei ord() erzeugen Fehler

  Alt 13. Jul 2018, 00:30
writeln(f,.....
Gruß vom KodeZwerg

Geändert von KodeZwerg (13. Jul 2018 um 00:32 Uhr)
  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 23:45 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