AGB  ·  Datenschutz  ·  Impressum  







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

Ini-Verschlüsselung mit Class Helper

Ein Thema von CodeX · begonnen am 24. Sep 2009 · letzter Beitrag vom 24. Sep 2009
Antwort Antwort
Seite 1 von 3  1 23      
CodeX

Registriert seit: 30. Okt 2004
475 Beiträge
 
Delphi 12 Athens
 
#1

Ini-Verschlüsselung mit Class Helper

  Alt 24. Sep 2009, 00:47
Vorab: Ich habe vor diesem Posting viel gesucht und nachgelesen. Und nein, ich habe keine passende Antwort gefunden.

Ich möchte ein gegebenes, größeres Projekt so erweitern, dass die geschriebenen Werte in eine Ini verschlüsselt abgelegt und gelesen werden können.
TIniFile ableiten und entsprechende Zusatzfunktionen einbauen würde Unmengen an Änderungen am bestehenden Code mit sich bringen. Das ist nicht gewünscht.

Das bedeutet, dass weiterhin ganz normal z.B. per
Delphi-Quellcode:
var ini: TIniFile;
begin
  ini := TIniFile.Create(IniName);
  try
    myString := ini.ReadString('Section','Ident','');
  finally
    ini.Free;
  end;
ein String ausgelesen werden können soll. Nur eben beim Lesen entschlüsselt.

Wie lässt sich das nun umsetzen?
Meinde Idee war einen Klassenhelfer zu verwenden. Da ich bislang noch nicht damit gearbeitet habe, stolpere ich damit durch die Gegend.

Ich dachte, das ginge jetzt so in der Art:

Delphi-Quellcode:
type
  TIniFileHelper = class helper for TIniFile
    function ReadString(const Section, Ident, Default: string): string;
  end;

implementation

function TIniFileHelper.ReadString(const Section, Ident, Default: string): string;
begin
  //hier später die Entschlüsselung

  inherited;
end;
Überschrieben wird das damit schonmal, aber das Erben der normalen Funktionalität klappt nicht. Ginge das, könnte ich an Stelle des Kommentars die Funktion erweitern.

Wie also statt des "inherited" Versuchs richtig?
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Ini-Verschlüsselung mit Class Helper

  Alt 24. Sep 2009, 00:54
Delphi-Quellcode:
type
  TIniFileHelper = class(TIniFile)
    function ReadString(const Section, Ident, Default: string): string; override;
  end;
:
:
:
function TIniFileHelper.ReadString(const Section, Ident, Default: string): string;
begin
  Result:=inherited ReadString(Section, Ident, Default);
end;
  Mit Zitat antworten Zitat
CodeX

Registriert seit: 30. Okt 2004
475 Beiträge
 
Delphi 12 Athens
 
#3

Re: Ini-Verschlüsselung mit Class Helper

  Alt 24. Sep 2009, 01:06
Wow, das ging ja schnell!

Also das override wollte er nicht:
Code:
E2137 Methode 'ReadString' nicht in Basisklasse gefunden
Nicht schlimm, wenn ich das weglasse, oder?

Aber die Result-Zuweisung war scheinbar genau richtig. Klappt wie es soll. Danke!
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#4

Re: Ini-Verschlüsselung mit Class Helper

  Alt 24. Sep 2009, 06:01
Hallo zusammen,

mal vielleicht eine ganz dumme Frage, warum über eine Helper Klasse ? Ich kann das ganze doch auch so machen :
Delphi-Quellcode:
ini := TINIFile(NSFile);
try
  Passwort := Entschluesseln(ReadString('Section', 'Ident', 'Default'));

{ ... Hier passiert noch etwas mit dem Passwort ...}

finally
  ini.free;
end;
Warum sollte ich den Umständlichen Weg über eine extra Klasse gehen ? Welche Vorteile und Nachteile hat die Klasse gegenüber meiner Variante ?
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
CodeX

Registriert seit: 30. Okt 2004
475 Beiträge
 
Delphi 12 Athens
 
#5

Re: Ini-Verschlüsselung mit Class Helper

  Alt 24. Sep 2009, 06:11
Wenn man den ver/entschlüsselten Wert nur ein Mal auslesen möchte, dann geht Deine Variante natürlich auch.
Brauchst Du das an hundert Stellen, musst Du alle hundert Stellen anpassen.
Mache ich das über die Helper-Klasse, brauche ich es nur ein Mal machen und mir in Zukunft keine Gedanken drüber zu machen.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Ini-Verschlüsselung mit Class Helper

  Alt 24. Sep 2009, 06:39
Ein Class Helper ersetzt kein Veerbung. Man kann eine Klasse erweitern aber keine vorhandenen Funktionen verdecken
Markus Kinzler
  Mit Zitat antworten Zitat
CodeX

Registriert seit: 30. Okt 2004
475 Beiträge
 
Delphi 12 Athens
 
#7

Re: Ini-Verschlüsselung mit Class Helper

  Alt 24. Sep 2009, 06:49
Formel gesehen werden wohl tatsächlich keine Funktionen überschrieben. Aber praktisch gesehen schon.
Ich gebe zu, eine Vererbung oder Änderung des Originalquellcodes wären sauberer, aber auf diese Weise kann die Änderung "aufgesetzt" werden, ohne die Original-Funktionen oder den bereits gegebenen Quellcode anzurühren.

Genau das war ja meine Frage und omata hat ja die Lösung bereits gepostet. Ich habe im Anschluss ein wenig weitergebastelt und bin mit der Lösung zufrieden.
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#8

Re: Ini-Verschlüsselung mit Class Helper

  Alt 24. Sep 2009, 07:30
Zitat von CodeX:
Wenn man den ver/entschlüsselten Wert nur ein Mal auslesen möchte, dann geht Deine Variante natürlich auch.
Brauchst Du das an hundert Stellen, musst Du alle hundert Stellen anpassen.
Wieso denn das ? Wenn ich die Funktion Entschluesseln an hundert Stellen aufrufen und die Ausgabe und die Entschlüsselung ändern. Dann habe ich auch nur dort eine einzige Stelle wo ich es ändern muss. Ein weiterer Vorteil wäre noch, ich brauch jetzt nicht überlegen, wo habe ich die Helper Klasse verwendet und wo nicht.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Ini-Verschlüsselung mit Class Helper

  Alt 24. Sep 2009, 07:34
Er meint wenn er hundert Werte hat, also 100 mal ini.ReadString() aufruft, muss er alle 100 Aufrufe entsprechend erweitern. Nimmt er einen Class Helper oder leitet eine eigene Klasse ab, welche das Entschlüsseln in ReadString() implementiert ist es einfacher.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: Ini-Verschlüsselung mit Class Helper

  Alt 24. Sep 2009, 08:06
Mir war aber so, als wenn man mit den ClassHelpern nur erweitern kann, ABER nichts überschreiben,
also müßte er vermutlich seine Funktion ReadString anders nennen und überall die "neue" Funktion direkt aufrufen

Schließlich geht Overload NUR (egal wo), wenn sich die Funktions-Signatur (Parameter) unterscheidet.
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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:20 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