AGB  ·  Datenschutz  ·  Impressum  







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

TJvVigenere Fehler / Bedienung wie??

Ein Thema von D-User · begonnen am 9. Feb 2008 · letzter Beitrag vom 10. Feb 2008
Antwort Antwort
D-User

Registriert seit: 19. Dez 2006
Ort: NRW
56 Beiträge
 
#1

TJvVigenere Fehler / Bedienung wie??

  Alt 9. Feb 2008, 12:55
Mojn mojn,
bzgl. der Vigenere-Cipher-Komponente in der JVCL bekomme ich Fehler beim
dechiffrieren, hat einer eine Idee?

Code: Button8 auf Form, JvCipher einbinden, und dann bekomme ich 'Fehler!!' angezeigt.
Wie mach ich's richtig, woran liegts?? ( D7 Enterprise mit letztem Update! )

Thnx im Vorhinein!!


Code:
*********************

procedure TForm1.Button8Click(Sender: TObject);
var
i: integer;
VigenereCipher : TJvVigenereCipher;
key,EncodedString, DecodedString: AnsiString;
AsciiStr: AnsiString;
begin
VigenereCipher := TJvVigenereCipher.Create( nil );
key := 'fwe1';
AsciiStr := '';

for i := 133 to 183 do
AsciiStr := AsciiStr + char(i);

EncodedString := VigenereCipher.EncodeString(key,AsciiStr );
DecodedString := VigenereCipher.DecodeString(key,EncodedString );

// Test:
if AsciiStr <> DecodedString then
ShowMessage('Fehler!!');

VigenereCipher.Free;
end;
  Mit Zitat antworten Zitat
D-User

Registriert seit: 19. Dez 2006
Ort: NRW
56 Beiträge
 
#2

Re: TJvVigenere Fehler / Bedienung wie??

  Alt 10. Feb 2008, 10:50
Kann mir denn jemand den Fehler bestätigen, oder tritt
der nur bei mir auf?

Kurze Antwort wäre super nett
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#3

Re: TJvVigenere Fehler / Bedienung wie??

  Alt 10. Feb 2008, 10:59
Hi D-User,

lasst Dir doch mal die beiden Strings ausgeben, anstatt nur die Anzeige "Fehler!!"

Desweiteren wäre es nett, wenn Du Delphi-Code in die [ delphi][ /delphi] Tags (ohne die Leerzeichen) einschließt, dann stellt die Forensoftware das gleich mit Syntax-Highlighting dar.

Und noch was zum Code, Du solltest einen Resourcenschutzblock verwenden:

Delphi-Quellcode:
procedure TForm1.Button8Click(Sender: TObject);
var
  i: integer;
  VigenereCipher : TJvVigenereCipher;
  key,EncodedString, DecodedString: AnsiString;
  AsciiStr: AnsiString;
begin
  key := 'fwe1';
  AsciiStr := '';

  for i := 133 to 183 do
    AsciiStr := AsciiStr + char(i);

  VigenereCipher := TJvVigenereCipher.Create( nil );
  try
    EncodedString := VigenereCipher.EncodeString(key,AsciiStr );
    DecodedString := VigenereCipher.DecodeString(key,EncodedString );
  finally
    VigenereCipher.Free;
  end;

  // Test:
  if AsciiStr <> DecodedString then
    ShowMessage('Fehler!!');
end;
  Mit Zitat antworten Zitat
D-User

Registriert seit: 19. Dez 2006
Ort: NRW
56 Beiträge
 
#4

Re: TJvVigenere Fehler / Bedienung wie??

  Alt 10. Feb 2008, 11:39
Hi Muhkuh,

Dank für die Antwort

Zitat:
lasst Dir doch mal die beiden Strings ausgeben, anstatt nur die Anzeige "Fehler!!"
schon gemacht, macht aber nicht soviel Sinn, da der decodierte String teilweise ( bei anderen
Ascii-Folgen ) nicht vernünftig, halt nur mit den Balken für nicht-darstellbare Zeichen
angezeigt wird.
Ich hab auch schon einiges reindebugged. Deshalb ja die Frage, weil der Fehler bei mir
etwas eigenartig auftritt:

Die komisch erscheinenden Grenzen ( i := 133 to 183 ) waren grob ausgetestet.
Wenn ich die Grenzen auf 1 bis 255 setze, funktioniert alles korrekt!
Deswegen finde ich das ja so obskur.
Und eh ich jetzt lange anfange wer weiss wo und wie lange herumzudebuggen, wollte ich halt mal
schnell nachfragen ob das Problem bekannt ist oder nur spezifisch für mein System / meine
Konstellation. Auch nach einigem Suchen habe ich nichts finden können.
Wenn das Problem bei jemand anderem nachvollziehbar wäre (ja/nein würde reichen)
gäbe mir das einen Anhaltspunkt in welcher Richtung ich weitersuchen müßte
und würde mir evtl. einige Arbeit sparen. Ohne dass jemand anderes da tatsächlich
viel Arbeit hätte investieren müssen.


Zitat:
Desweiteren wäre es nett, wenn Du Delphi-Code in die [ delphi][ /delphi] Tags (ohne die Leerzeichen) einschließt, dann stellt die Forensoftware das gleich mit Syntax-Highlighting dar.
sorry, war mir noch nicht so bewußt über die Funktionalität, werd ich demnächst natürlich so
machen


Zitat:
Du solltest einen Resourcenschutzblock verwenden
Hab' ich für den Testfall für unnötig erachtet, im richtigen Prg natürlich korrekt!


Zumindest Dank für die Response, man wird also gelesen
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: TJvVigenere Fehler / Bedienung wie??

  Alt 10. Feb 2008, 12:37
Hallo D-User,

wenn man das Pferd hinten aufzäumt, dann stellt man einfach einen Implementierungsfehler in den Basis-Methoden EncodeString() und DecodeString() von JvCipher.TJvCustomCipher fest. Beim Zuweisen eines C-Strings an einen Pascal-String wird beim ersten Auftreten eines Null-Chars das Ende des C-Strings gesehen.

Hier eine Blitz-Kur für die besagten Methoden:

Delphi-Quellcode:
function TJvCustomCipher.DecodeString(const Key, Value: string): string;
var
  Tmp: string;
begin
  Tmp := Value;
  Decode(Key, PChar(Tmp), Length(Value));
  Result := Tmp;
end;

function TJvCustomCipher.EncodeString(const Key, Value: string): string;
var
  Tmp: string;
begin
  Tmp := Value;
  Encode(Key, PChar(Tmp), Length(Value));
  Result := Tmp;
end;
Das Umspeichern ist eigentlich unnötig, aber der Autor der Unit hat sich gegen eine in-place Kodierung entschieden, obwohl er die Basisklasse genau dafür vorgesehen hat. Solange als Übergabekonvention const statt var verwendet wird, muss halt umkopiert werden. Es geht zwar auch ohne,

Encode(Key, PChar(Value), Length(Value)); aber das wäre Programmieren mit Seiteneffekten und zukünftige Compiler-Versionen brechen den Code, wenn sie ihre Semantik für CONST-Parameter ändern.

Grüße vom marabu
  Mit Zitat antworten Zitat
D-User

Registriert seit: 19. Dez 2006
Ort: NRW
56 Beiträge
 
#6

Re: TJvVigenere Fehler / Bedienung wie??

  Alt 10. Feb 2008, 13:08
Hi Marabu,

super vielen Dank, scheints tatsächlich gewesen zu sein

Grüße, D-User
  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 07:19 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