Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - E2064 Der linken Seite kann nichts zugewiesen werden


dibi - Do 22.01.09 16:16
Titel: E2064 Der linken Seite kann nichts zugewiesen werden
Hallo zusammen!

In diesem Code


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TChunkIDAT.CopyInterlacedRGB8(const Pass: Byte;
  Src, Dest, Trans{$IFDEF Store16bits}, Extra{$ENDIF}: pChar); //xad
var
  Col: Integer;
begin
  {Get first column and enter in loop}
  Col := ColumnStart[Pass];
  Dest := pChar(Longint(Dest) + Col * 3);
  repeat
    {Copy this row}
    Byte(Dest^) := fOwner.GammaTable[pByte(Longint(Src) + 2)^]; inc(Dest);
    Byte(Dest^) := fOwner.GammaTable[pByte(Longint(Src) + 1)^]; inc(Dest);
    Byte(Dest^) := fOwner.GammaTable[pByte(Longint(Src)    )^]; inc(Dest);
...

kommt es bei den Byte(Dest^)-Zuweisungen zu einem Kompilierungsfehler (in Delphi 2009).

Da ich mich noch überhaupt nicht mit diesen Typkonversionen auskenne, hoffe ich, ihr könnt mir helfen...

Grüße und Dank

dIbI

PS: Der Source stammt von den TPNGSpeedButton Komponenten von Erik Stok http://www.nldelphi.com/cgi-bin/articles.exe/ShowArticle?ID=16318


jaenicke - Fr 23.01.09 12:16

Du musst die rechte Seite auf den Typ der linken casten. Das sollte also wohl so aussehen:

Delphi-Quelltext
1:
Dest^ := Char(fOwner.GammaTable[pByte(Longint(Src) + 2)^]);                    
Wobei ich ja nicht weiß was GammaTable ist.