AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Eigene kleine Verschlüsslung
Thema durchsuchen
Ansicht
Themen-Optionen

Eigene kleine Verschlüsslung

Ein Thema von Premaider · begonnen am 24. Jun 2012 · letzter Beitrag vom 24. Jun 2012
Antwort Antwort
Premaider

Registriert seit: 31. Mär 2012
160 Beiträge
 
#1

Eigene kleine Verschlüsslung

  Alt 24. Jun 2012, 12:20
Hey Leute ich wollte mir eine eigene, kleine Verschlüsslung von Datein schreiben.
Ich habe bis jetzt das:
Delphi-Quellcode:
for i := 0 to Memo1.Lines.Count -1 do
    begin
      Edit2.text:=Memo1.lines[i];
      j:=length(Edit2.text);
      For h := 1 to j do
        If Edit2.text[h]='AThen Edit2.text[h]:='BElse
        If Edit2.text[h]='BThen Edit2.text[h]:='CElse
        If Edit2.text[h]='CThen Edit2.text[h]:='DElse
        If Edit2.text[h]='DThen Edit2.text[h]:='EElse
        If Edit2.text[h]='EThen Edit2.text[h]:='FElse
        If Edit2.text[h]='FThen Edit2.text[h]:='GElse
        If Edit2.text[h]='GThen Edit2.text[h]:='HElse
        If Edit2.text[h]='HThen Edit2.text[h]:='IElse
        If Edit2.text[h]='IThen Edit2.text[h]:='JElse
        If Edit2.text[h]='JThen Edit2.text[h]:='KElse
        If Edit2.text[h]='KThen Edit2.text[h]:='LElse
        If Edit2.text[h]='LThen Edit2.text[h]:='MElse
        If Edit2.text[h]='MThen Edit2.text[h]:='NElse
        If Edit2.text[h]='NThen Edit2.text[h]:='OElse
        If Edit2.text[h]='OThen Edit2.text[h]:='PElse
        If Edit2.text[h]='PThen Edit2.text[h]:='QElse
        If Edit2.text[h]='QThen Edit2.text[h]:='RElse
        If Edit2.text[h]='RThen Edit2.text[h]:='SElse
        If Edit2.text[h]='SThen Edit2.text[h]:='TElse
        If Edit2.text[h]='TThen Edit2.text[h]:='UElse
        If Edit2.text[h]='UThen Edit2.text[h]:='VElse
        If Edit2.text[h]='VThen Edit2.text[h]:='WElse
        If Edit2.text[h]='WThen Edit2.text[h]:='XElse
        If Edit2.text[h]='XThen Edit2.text[h]:='YElse
        If Edit2.text[h]='YThen Edit2.text[h]:='ZElse
        If Edit2.text[h]='ZThen Edit2.text[h]:='AElse
        If Edit2.text[h]='aThen Edit2.text[h]:='bElse
        If Edit2.text[h]='bThen Edit2.text[h]:='cElse
        If Edit2.text[h]='cThen Edit2.text[h]:='dElse
        If Edit2.text[h]='dThen Edit2.text[h]:='eElse
        If Edit2.text[h]='eThen Edit2.text[h]:='fElse
        If Edit2.text[h]='fThen Edit2.text[h]:='gElse
        If Edit2.text[h]='gThen Edit2.text[h]:='hElse
        If Edit2.text[h]='hThen Edit2.text[h]:='iElse
        If Edit2.text[h]='iThen Edit2.text[h]:='jElse
        If Edit2.text[h]='jThen Edit2.text[h]:='kElse
        If Edit2.text[h]='kThen Edit2.text[h]:='lElse
        If Edit2.text[h]='lThen Edit2.text[h]:='mElse
        If Edit2.text[h]='mThen Edit2.text[h]:='nElse
        If Edit2.text[h]='nThen Edit2.text[h]:='oElse
        If Edit2.text[h]='oThen Edit2.text[h]:='pElse
        If Edit2.text[h]='pThen Edit2.text[h]:='qElse
        If Edit2.text[h]='qThen Edit2.text[h]:='rElse
        If Edit2.text[h]='rThen Edit2.text[h]:='sElse
        If Edit2.text[h]='sThen Edit2.text[h]:='tElse
        If Edit2.text[h]='tThen Edit2.text[h]:='uElse
        If Edit2.text[h]='uThen Edit2.text[h]:='vElse
        If Edit2.text[h]='vThen Edit2.text[h]:='wElse
        If Edit2.text[h]='wThen Edit2.text[h]:='xElse
        If Edit2.text[h]='xThen Edit2.text[h]:='yElse
        If Edit2.text[h]='yThen Edit2.text[h]:='zElse
        If Edit2.text[h]='zThen Edit2.text[h]:='a';
Mir sagt Delphi "[Fehler] Unit1.pas(73): Der linken Seite kann nichts zugewiesen werden" aber wieso ?
  Mit Zitat antworten Zitat
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.028 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Eigene kleine Verschlüsslung

  Alt 24. Jun 2012, 12:31
Die ganzen IF-Dinger kannst Du Dir sparen, wenn Du dir mal Delphi-Referenz durchsuchenchr() und Delphi-Referenz durchsuchenord() anschaust. Dann brauchst Du Dir nur noch den "Sonderfall Z" vorzunehmen und hier "z" bzw. "Z" durch "a" bzw. "A" ersetzen. Dann hast Du einen übersichtlichen Quellcode und maximal 10 Zeilen zu programmieren

Delphi-Quellcode:
 i : integer;
 ascii : integer;
 Text1 : String;
 Text2 : String;
 [...]
 Text2 := '':
 for i := 1 to Length(Text1) do
  Text2 := Text2 + Chr(Ord(Text1[i])+1); // Sonderfall "z" nicht berücksichtigt, nur ein Denkanstoß...
 [...]
Michael Kübler
  Mit Zitat antworten Zitat
Premaider

Registriert seit: 31. Mär 2012
160 Beiträge
 
#3

AW: Eigene kleine Verschlüsslung

  Alt 24. Jun 2012, 12:32
Das ist das aber wieder etwas das ich nicht ganz verstehe. Ich möchte es gerne so schaffen
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Eigene kleine Verschlüsslung

  Alt 24. Jun 2012, 12:35
Meinetwegen.

"Text" ist eine String-Property vom Edit-Feld und auf diese kannst Du nicht per Zeichen-Index schreibend zugreifen. Um eine String-Variable wirst Du nicht umhinkommen, auch wenn es Dir nicht sonderlich gefallen sollte.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Premaider

Registriert seit: 31. Mär 2012
160 Beiträge
 
#5

AW: Eigene kleine Verschlüsslung

  Alt 24. Jun 2012, 12:54
Ich hab mir Chr() und Ord() mal angeguckt. Habe es glaube ich schon zu ca. 50% verstanden ;D

Sieht bei mir jetzt so aus
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
i,h,j,k:integer;
Text1: String;
Text2: String;
begin
If Edit1.text<>'Keine Datei ausgewähltThen DateiKopieren(PChar(OpenDialog1.FileName),GetTempDir + 'Premaider.txt',true);
Memo1.lines.loadfromfile(GetTempDir + 'Premaider.txt');
for i := 0 to Memo1.Lines.Count -1 do
    begin
      Text2:='';
      j:=length(Memo1.lines[i]);
      Text1:=Memo1.lines[i];
      For h := 1 to j do
      If (Text2<>'Z') and (Text2[h]<>'z') Then Text2:=Text2 + Chr(Ord(Text1[i])+1) Else
      If Text2[h]='ZThen Text2[h]:='A';
      If Text2[h]='zThen Text2[h]:='a';
end;
end;
aber man bekommt beim Durchführen einen Zugriffsfehler bei "If (Text2<>'Z') and (Text2[h]<>'z') Then Text2:=Text2 + Chr(Ord(Text1[i])+1) Else"

Geändert von Premaider (24. Jun 2012 um 13:07 Uhr)
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Eigene kleine Verschlüsslung

  Alt 24. Jun 2012, 13:16
Schaue Dir an, wann Du auf die wievielte Stelle eines Strings zugreifen möchtest und ob der String dann diese Länge auch schon hat. Wenn Dein String z.B. die Zeichenfolge "Hallo" enthält, darfst Du nur auf die Positionen 1 bis 5 zugreifen. Alles andere provoziert den von Dir beobachteten Fehler.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Horst0815

Registriert seit: 23. Mai 2011
Ort: Görlitz
150 Beiträge
 
Delphi XE Starter
 
#7

AW: Eigene kleine Verschlüsslung

  Alt 24. Jun 2012, 13:16
Fehler
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#8

AW: Eigene kleine Verschlüsslung

  Alt 24. Jun 2012, 13:37
Delphi-Quellcode:
      For h := 1 to j do
      If (Text2<>'Z') and (Text2[h]<>'z') Then Text2:=Text2 + Chr(Ord(Text1[i])+1) Else
      If Text2[h]='ZThen Text2[h]:='A';
      If Text2[h]='zThen Text2[h]:='a';
Fehlerhafte Stelle! Hättest du richtig eingerück, wärs dir sofort aufgefallen...
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Eigene kleine Verschlüsslung

  Alt 24. Jun 2012, 12:32
Von andern Fragen, die mir bei diesem Code in den Sinn kommen, einmal abgesehen:

Was hat Dich motiviert, ein Edit-Feld als Zwischenspeicher zu verwenden? Eine lokale Variable vom Typ "String" wäre vermutlich besser geeignet und würde den von Dir beschriebenen Fehler vermutich gar nicht erst entstehen lassen.

Noch ein Hinweis. Schaue Dir mal die Funktionen "Delphi-Referenz durchsuchenOrd" und "Delphi-Referenz durchsuchenChr" an. Jeder Buchstabe hat auch eine numerische Repräsentation als Zahl. So hat das "A" etwa den Zahlenwert "65". Und das "B" die "66". Mit diesem Wissen könntest Du einiges an Code sparen.

//Edit: Mist, zu langsam.
Daniel R. Wolf
mit Grüßen aus Hamburg
  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 22:59 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