AGB  ·  Datenschutz  ·  Impressum  







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

Prüfsummen erstellen (DEC)

Ein Thema von ringli · begonnen am 10. Mai 2011 · letzter Beitrag vom 10. Mai 2011
Antwort Antwort
ringli

Registriert seit: 7. Okt 2004
509 Beiträge
 
Delphi 11 Alexandria
 
#1

Prüfsummen erstellen (DEC)

  Alt 10. Mai 2011, 15:57
Hallo,

ich möchte mir mithilfe des DEC ein Programm zum Berechnen von Prüfsummen (MD5, SHA1, etc.) erstellen. Natürlich möchte ich dabei verschiedene Formate zur Verfügung haben. Leider habe ich grade keine Idee wie ich das mit mehreren Formaten elegant lösen kann.
Delphi-Quellcode:
var
  Hash : THash_MD5;
  Hash : THash_SHA1; // funktioniert so natürlich nicht!
  s : String;
begin
  case Combobox1.Itemindex of
    0 : Hash := THash_MD5.Create;
    1 : Hash := THash_SHA1.Create;
  end;
  s := Hash.CalcFile('Dateiname', TFormat_HEX);
  showmessage(String(s));
end;
Natürlich funktioniert der Code in dieser Art nicht, aber ich hoffe es ist einigermaßen verständlich worauf ich hinaus will. Ich möchte über eine Combobox o.ä. eine der verfügbaren Verschlüsselungen auswählen und diese dann zur Berechnung der Prüfsumme verwenden.

Hat einer von euch eine zündende Idee?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#2

AW: Prüfsummen erstellen (DEC)

  Alt 10. Mai 2011, 16:02
Haben die Hash-Klassen keinen gemeinsamen Vorfahren (THash oder so?). Dann könntest Du die Variable als Vorfahrklasse deklarieren und später die Instanz der benötigten Kindklasse erzeugen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: Prüfsummen erstellen (DEC)

  Alt 10. Mai 2011, 16:02
Hallo,

Wie wärs damit?

Delphi-Quellcode:
var S : String;
begin
  case Combobox1.ItemIndex of
    0 : S := THash_MD5.CalcFile('Dateiname', TFormat_HEX);
    1 : S := THash_SHA1.CalcFile('Dateiname', TFormat_HEX);
  end;
  ShowMessage(S);
end;
Alternativ:

Delphi-Quellcode:
var S : String;
    Hash: THash;
begin
  case Combobox1.ItemIndex of
    0 : Hash := THash_MD5.Create;
    1 : Hash := THash_SHA1.Create;
  end;
  S := Hash.CalcFile('Dateiname', TFormat_HEX);
  ShowMessage(S);
end;
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."

Geändert von Neutral General (10. Mai 2011 um 16:05 Uhr)
  Mit Zitat antworten Zitat
ringli

Registriert seit: 7. Okt 2004
509 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Prüfsummen erstellen (DEC)

  Alt 10. Mai 2011, 16:10
@DeddyH:
Zumindest habe ich keine solche Vorfahrklasse gefunden. Das war nämlich auch mein erster Ansatz.

@Neutral General:
Deine Alternative Methode würde mir ja am besten gefallen, nur leider scheint es keine Vorfahrklasse THash zu geben.

[EDIT]
Ah, ok mir ist es grad wie Schuppen von den Augen gefallen. Die Lösung sieht so aus:
Delphi-Quellcode:
var S : String;
    Hash: TDecHash; // <--
begin
  case Combobox1.ItemIndex of
    0 : Hash := THash_MD5.Create;
    1 : Hash := THash_SHA1.Create;
  end;
  S := Hash.CalcFile('Dateiname', TFormat_HEX);
  ShowMessage(S);
end;

Geändert von ringli (10. Mai 2011 um 16:14 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: Prüfsummen erstellen (DEC)

  Alt 10. Mai 2011, 16:13
Hallo,

Also in meiner Hash.pas die ich mir eben runtergeladen hab bei torry.net (http://www.torry.net/authorsmore.php?id=1881) existiert eine Klasse THash.

Wobei es im Prinzip ja eh unnötig ist eine Instanz zu erstellen. Von daher kannst du auch meine 1. Lösung benutzen. Ist auch ein bisschen Resourcen sparender
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#6

AW: Prüfsummen erstellen (DEC)

  Alt 10. Mai 2011, 16:16
Wenn das Klassenmethoden sind kann man sich die Instanzen in der Tat sparen. Einfach aufrufen und glücklich sein .

Und wenn nicht, dann aber eher so:
Delphi-Quellcode:
var S : String;
    Hash: TDecHash; // <--
begin
  Hash := nil;
  case Combobox1.ItemIndex of
    0 : Hash := THash_MD5.Create;
    1 : Hash := THash_SHA1.Create;
  end;
  if Assigned(Hash) then
    try
      S := Hash.CalcFile('Dateiname', TFormat_HEX);
      ShowMessage(S);
    finally
      Hash.Free;
    end;
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH (10. Mai 2011 um 16:21 Uhr) Grund: Assigned-Abfrage eingefügt
  Mit Zitat antworten Zitat
ringli

Registriert seit: 7. Okt 2004
509 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Prüfsummen erstellen (DEC)

  Alt 10. Mai 2011, 16:19
Müsste ich die Klassenmethoden nicht trotzdem freigeben? Und wieso spare ich bei Neutral General's 1. Variante Resourcen?

@DeddyH:
Grade dein Edit gesehen. Das Freigeben hatte ich mir in meinem Beispielcode gespart. Wollte nur mein Problem verdeutlichen.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#8

AW: Prüfsummen erstellen (DEC)

  Alt 10. Mai 2011, 16:20
Klassenmethoden kannst Du ohne Instanz aufrufen, musst also auch keine Instanz freigeben.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

AW: Prüfsummen erstellen (DEC)

  Alt 10. Mai 2011, 16:26
@DeddyH: Huch da hab ich glatt das Freigeben vergessen

@ringli: Bei deiner, bzw. meiner 2. Variante werden 2 Hash-Objekte erzeugt.
Einmal erzeugt man selbst eins und in CalcFile wird dann intern nochmal ein Hash-Objekt erzeugt (und wieder freigegeben).

Das selbst erzeugte ist somit nicht nötig.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  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:46 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