![]() |
Warum Zugriffsverletzung ???
moin Jungs,
Ich programmiere gerade ein Verschlüsselungsproggi mit Delphi und DEC. Encodieren kann ich schon. Benutze Rijndael mit SHA_1 so ich hab die Encodierungsroutine so aufgebaut:
Delphi-Quellcode:
so aufgerufen wird diese Durch einen Button:
function Decoding(Input,Output,PW: string; Cipher: TCipherClass; hWnd: THandle): Boolean;
var fs,dest: TFileStream; Len: Integer; Buffer: Pointer; begin result := false; fs := TFileStream.Create(Input, fmOpenRead); if Assigned(fs) then begin //<<<< Ab hier meldet Debugger den Fehler dest := TFileStream.Create(Output, fmCreate); if Assigned(dest) then begin try fs.Seek(sizeof(TFileHeader), soFromBeginning); DefCipherClass := Cipher; GetMem(Buffer, 1024); try with DefCipherClass.Create(PW, nil) do begin Mode := cmCBC; InitKey(PW, nil); while (fs.Position < fs.Size ) do begin if fs.Size - fs.Position > BlockSize then Len:= BlockSize else Len := fs.Size - fs.Position; fs.ReadBuffer(Buffer^, Len); DecodeBuffer(Buffer^, Buffer^, Len); dest.WriteBuffer(Buffer^, Len); end; end; finally FreeMem(Buffer); end; finally FreeAndNil(dest); end; end; end; end;
Delphi-Quellcode:
So der FileHeader ist genauso wie bei Luckie's FileCrypter.
procedure TForm1.Button4Click(Sender: TObject);
var FileHeader: TFileHeader; CipherClass: TCipherClass; HashClass: THashClass; HashEncodedFile: string; begin if FileExists(Edit1.Text) then begin ReadHeader(FFilename, FileHeader); CipherClass := FileHeader.FCipherClass; HashClass := FileHeader.FHashClass; HashEncodedFile := FileHeader.FHashString; Decoding(Edit1.Text,Edit2.Text,Edit3.Text, CipherClass, Handle); end else ShowMessage('Fehler'); end; die function ReadHeader sieht so aus:
Delphi-Quellcode:
wenn ich jetzt ausführe kommt genau diese Meldung beim encodieren:
function ReadHeader(Filename: string; FileHeader: TFileHeader): Boolean;
var fs: TFileStream; begin result := false; fs := TFileStream.Create(Filename, fmOpenRead); if Assigned(fs) then begin try fs.Read(FileHeader, sizeof(TFileHeader)); finally FreeAndNil(fs); end; end else begin ShowMessage('Fehler'); exit; end; result := true; end; "Zugriffsverletzung bei Adresse 00403433 im Modul 'Project1.exe'. Lesen von Adresse 0110005F" bitte um hilfe danke im voraus. cu Predator |
Re: Warum Zugriffsverletzung ???
Hi,
schonmal debuggt um zu sehen wann es genau passiert? |
Re: Warum Zugriffsverletzung ???
An welcher Stelle bekommst du denn die Zugriffsverletzung. BTW: Dein Code ist ja schrecklich zu lesen. Wäre schön wenn du in Zukunft ordentlich einrückst, dann tut sich jeder leichter, der dir helfen will.
grüße, daniel |
Re: Warum Zugriffsverletzung ???
also ich hab jetzt debuggt und oben die Stelle makiert ab wo nichts mehr stimmt.
darüber zeigt er bei den Breakpoints noch ein Häckchen an aber ab dem begin ein X !!! cu Predator |
Re: Warum Zugriffsverletzung ???
kann denn keiner Helfen ???
|
Re: Warum Zugriffsverletzung ???
Hi Predator,
setze einen Haltepunkt auf die erste Zeile nach dem begin in deiner Prozedur. Wenn das Programm dann schließlich dort anhält, kannst du mit F7 jede einzelne Programmzeile durchgehen und so herausfinden, wo vielleicht etwas schiefläuft. Tipp: Halte den Mauszeiger im <STOP>-Modus (wenn die Anwendung angehalten wird) über eine Variable und der Debugger zeigt dir den Inhalt an oder in deinem Fall ob diese u.U = nil und somit eine AccessVioalation beim Aufruf auslöst. mfG mirage228 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:16 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