Einzelnen Beitrag anzeigen

zeina

Registriert seit: 8. Jun 2018
56 Beiträge
 
#5

AW: Bereichsüberlauf bei rin bitmap drehen

  Alt 27. Feb 2019, 12:22
Hallo,
ich habe ein Problem und zwar,dass mein programm ein fehler Meldung (Bereichsüberlauf )ausliefert.
Das liegt daran, dass

type TRGBarray = array[0..0] of TRGBQuad; definiert ist und Du dann später hemmunglos einen Index > 0 verwendest:

Delphi-Quellcode:

procedure TFormFoto.rotate90(const Source:TGraphic ; Bmp: TBitmap);
var P : PRGBQuad;
  y, x, h, b: integer;
  Rowout : ^TRGBarray;
  sourcebmp : TBitmap;
begin
  ....
      rowout[x] := p^;

end;
Entweder Du schaltets die Bereichsüberprüfung für diese Methode aus ({$R-}) oder deklarierst den Typ z. B. als

type TRGBarray = array[0..(High(Cardinal) div Sizeof(TRGBQuad))-1] of TRGBQuad; Mit dieser Deklaration darfst Du aber auf keinen Fall eine Variable dieses Typs deklarieren, die würde 4 GByte Speicher belegen! Mti einem Pointer darauf zu arbeiten ist aber kein Problem.

Danke für die Antwort.
ich habe vorher es versucht :type TRGBarray = array[0..(High(Cardinal) div Sizeof(TRGBQuad))-1] of TRGBQuad; aber es tritt ein Fehler auf: E2100 Datentyp zu groß:2 GB überschritten
  Mit Zitat antworten Zitat