Einzelnen Beitrag anzeigen

Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#1

sequence of byte -> komischer Datentyp

  Alt 21. Jun 2008, 20:55
Moin moin,

ich versuche die MD5 Proceduren aus der Microsoft Cryptdll.dll zu benutzen,
leider tritt dabei beim Ausführen folgendes Codes eine AccessViolation bzw. Priviligierte Instruktion auf.

Ich nehme an das mit den Aufrufen der Funktionen etwas schief läuft ... die Aufrufkonventionen müsste aber stimmen, ist ja aus der Windows API

Delphi-Quellcode:
// ...

uses classes;

// Windows Cript API imports

type MD5_CTX = packed record
  i: packed array[0..1] of longint; // ULONG[2]
  buf: packed array[0..3] of longint; // ULONG[4]
  _in: packed array[0..63] of byte; // unsigned char[64]
  digest: packed array[0..15] of byte; // unsigned char[16]
end;

procedure MD5Init(var MD5_CTX); stdcall; external 'Cryptdll.dllname 'MD5Init';
procedure MD5Update(var MD5_CTX; const input; inputLength: longint); stdcall; external 'Cryptdll.dllname 'MD5Init';
procedure MD5Final(var MD5_CTX); stdcall; external 'Cryptdll.dllname 'MD5Init';

function StreamToMD5String(x: TStream): string; // suboptimaler Funktionsname

implementation

function StreamToMD5String(x: TStream): string;
var context: MD5_CTX;
    buffer: packed array[0..511] of byte;
    length: integer;
begin
     MD5Init(context);
     x.Position := 0;
     repeat
           length := x.Read(buffer, 512);
           MD5Update(context, buffer, length);
     until length <= 0;
     MD5Final(context);
end;

// ...
Problematisch bei der Übersetzung/Einbindung ist folgendes:
Code:
 procedure MD5Update(
  var context: MD5_CTX,
  input: sequence of BYTE,
  inputLen: integer)
[Quelle]

Was ist "sequence of BYTE"?

Pointer hab ich schon probiert (s.o.)...

Ich freue mich über sachdienliche Hinweise


MfG,
Bug
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  Mit Zitat antworten Zitat