Mam klasę TiffData, która zawiera abstrakcyjne metody ładowania i wyświetlania danych oraz wiele klas przodków, takich jak TTiffByte, TTiffAscii, TTiffShort, które definiują te metody.Jak odnieść się do klasy z stałej tablicy rekordów?
Mam również stałą tablicę lub rekordy, które pozwalają mi wyszukiwać informacje o typach w oparciu o typ danych zarejestrowany w IFD.
Czego nie mogę dowiedzieć się, jak zapisać powiązaną klasę dla każdego elementu tablicy.
type
TtiffType = record
name : string;
bytes : word;
data : class; { ? }
desc : string;
end;
const
TiffTypes : array[ 1 .. 18 ] of TTiffType = (
{01} (name: 'byte'; bytes : 1; data: TTiffByte; { ? }
desc: '8-bit unsigned number.' ),
{02} (name: 'ascii'; bytes : 1; data: TTiffAscii; { ? }
desc: '8 bit byte that contains a 7 bit ASCII code; the last byte must be NULL (binary zero)' ),
{03} (name: 'short'; bytes : 2; data: TTiffShort; { ? }
desc: '16-bit (2-byte) unsigned integer.' ),
...
Co chciałbym zrobić, to trzymać referencję do klasy w tablicy:
value := TiffTypes[ fldType ].Data.Create;
value.loadFromOffset(offset);
Edit1.Text := value.getShortString;
lub posiadać konstruktor w tablicy:
value := TiffTypes[ fldType ].data;
value.loadFromFile(f, offset, count);
InternalRepresentation := TTiffAscii(value.storage);
PO stwierdził, że klasa bazowa to 'TiffData' więc należy odzwierciedlić w swojej odpowiedzi, że zamiast tworzących nowa fikcyjna nazwa. –
@RemyLebeau Dzięki, zaktualizowałem odpowiedź. – Graymatter