ich habe inzwischen einige funktionen geschrieben um einzelne bereiche der daten auszulesen...
ich bin aber nicht so wirklich geübt im erstellen von Funktionen, klassen und so, deshalb wäre ich für etwas feedback oder Hinweise was ich noch beachten muß dankbar:
so sieht das zum beispiel jetzt aus:
Delphi-Quellcode:
type
TJupTeReader = class(TObject)
public
class function getVersion (fs : Tfilestream) :string;
class function getByteOrder (fs : Tfilestream) :shortint;
class function getI32 (fs : TFilestream; pos : integer) :integer;
class function getU32 (fs : TFilestream; pos : integer) :Longword;
class function getMyGUID (fs : TFilestream; pos : integer) :TGUID;
end;
implementation
class function TJupTeReader.getVersion(fs: TFilestream):string;
var i:integer;
var bufferchar:char;
var ResultStr:string;
begin
for i := 0 to 79 do begin
fs.Position:=i;
fs.Readbuffer(bufferchar,1);
ResultStr:=ResultStr+char(bufferchar);
end;
result:=ResultStr;
end;
class function TJupTeReader.getByteOrder(fs: Tfilestream):shortint;
var ByteOrder:byte;
ResultByteOrder:shortint;
begin
fs.Position:=80;
fs.ReadBuffer(ByteOrder,1);
if (ByteOrder=0) or (ByteOrder=1) then ResultByteOrder:=ByteOrder
else ResultByteOrder:=-1;
Result:=ResultByteOrder;
end;
class function TJupTeReader.getI32(fs: TFileStream; pos : integer):integer;
begin
fs.Position:=pos;
fs.ReadBuffer(Result,4);
end;
class function TJupTeReader.getU32(fs:TFilestream; pos:integer):Longword;
begin
fs.Position:=pos;
fs.ReadBuffer(Result,4);
end;
class function TJupTeReader.getMyGUID (fs : TFilestream; pos : integer) :TGUID;
begin
fs.Position:=pos;
fs.read(Result,16);
end;
Konkrete Fragen formuliere ich mal hier:
1.) ist es überhaupt geschickt einen filestream zu übergeben um einzelne bereiche auszulesen?
2.) Mit der Funktion U32 soll ein unsigned 32 bit integer value geladen werden, deshalb habe ich LongWord gewählt, hätte ich auch Cardinal nehmen können oder sogar müssen?
3.) für ein Attribut soll ich an einer bestimmten stelle ein U32 einlesen, jetzt heisst es aber zur Interpretation des Atributes wie folgt:
Zitat:
Attributes is a collection of segment information encoded within a single U32 using the following bit allocation.
Bits 0 - 23
Reserved for future use.
Bits 24 - 31
Segment type. Complete list of Segment types can be found in Table 3: Segment Types.
wenn ich das richtig deute verraten mir also die letzten 8 bits die information? Tabelle 3 zeigt aber nur eine liste von 1-24 verschiedenen attributen. da steht dann nichts mehr von bits.. wie könnte das gemeint sein?
4.) nochmal eine delphi frage: ich rufe die einzelnen funktionen jetzt von ausserhalb etwa so auf:
entrycount:=TJupteReader.getI32(testfs,TocOffset).
was irgendwie umständlich aussieht.. gibt es dafür etwas besseres?
ich danke schonmal für eure Hilfe und Anregungen. bitte habt Nachsicht mit mir