Einzelnen Beitrag anzeigen

gabneo

Registriert seit: 15. Okt 2006
Ort: Deutsche Toskana :)
93 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: IdHTTPRangeStream VBuffer vor dem Senden verändern

  Alt 4. Jan 2020, 14:32
Ich habe mich noch mal mit dem 2. Weg auseinander gesetzt und dazu weiter recherchiert.
Untyped Parameter kann man in Delphi mit einem @ direkt ansprechen (https://stackoverflow.com/questions/...type-parameter).

Somit war es mir möglich den Sourcestream dazu zu bringen, die bereits decodierten Bytes an den IdHTTPRangeStream weiter zu geben. Offset benötige ich scheinbar nicht.

Die verwendete Read-Funktion beginnt doch immer beim Anfang der Datei zu lesen?
Liest IdHTTPRangeStream immer die gesamte Datei ein und schneidet nur den relevanten Teil heraus?

Wie auch immer, hiermit funktionierts.
Code:
//{$IFNDEF NEXTGEN}
function TXFileStream.Read(var Buffer; Count: Longint): Longint;
var i, keylen, keypos: Cardinal; key: TArray<Byte>; x: Longint;
begin
  Result := FileRead(FHandle, Buffer, Count);
  if Result = -1 then
  begin
    Result := 0;
    exit;
  end;

  keylen := length(Chiffre);
  SetLength(key, keylen);
  for i := 1 to keylen do key[i-1] := ord(Chiffre[i]);
  keypos := 0;//Buffer;

  for x := 0 to Count-1 do
  begin
    TIdBytes(@Buffer)[x] := TIdBytes(@Buffer)[x] xor key[keypos]; //man beachte das @Buffer
    inc(keypos);
    if keypos > keylen - 1 then keypos := 0;
  end;
end;
//{$ENDIF !NEXTGEN}
Viele Grüße
  Mit Zitat antworten Zitat