type PxdRecord = record ID: array[0..3] of Char; TagName: array[0..29] of Char; Group: array[0..19] of Char; Source: array[0..13] of Char; end;
function ReadPxd(const FileName: WideString; var PxdData: PxdRecord): Boolean; var SourceFile: TFileStream; begin try Result := true; SourceFile := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite); SourceFile.Free; except Result := False; end; end;
function HeaderIsValid(const PxdData: PxdRecord): Boolean; begin Result := True; if PxdData.ID <> 'tPxD' then Result := False; end;
constructor TPxdfile.Create; begin inherited; FResetData; end;
function TPxdfile.ReadFromFile(const FileName: WideString): Boolean; var PxdData: PxdRecord; begin FResetData; FillChar(PxdData, SizeOf(PxdData), 0); Result := ReadPxd(FileName, PxdData); if (Result) and (HeaderIsValid(PxdData)) then begin FValid := True; FTagName := PxdData.TagName; FGroup := PxdData.Group; FSource := PxdData.Source; FFileName := FileName; end; end; end.
i pxdrecord har jeg defineret nogle statiske arrays, man da længden af TagName, Group og Source hvordan ordner man det så med en dynamisk array, eller er der en bedre måde at gribe det an på?
eks. på start af pxd fil: tPxD Underline** Cut 4 //hex: 74 50 78 44 14 55 6E 64 65 72 6C 69 6E 65 2A 2A 0D 0A 43 75 74 20 34
Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
Ups, glemte lige at tilføje nogle linjer: informationen i TagName, Group og source kan længden variere, hvordan kan man ungå at "læse" for langt i filen?
TagName er er i dette tilfælde Underline** Cut 4, Group kan fx være drum, voice osv, og Source er vhis det kommer fra HipHop eJay, Rave eJay osv - men igen det variere fra fil til fil. eks: ID := tPxD TagName := *fast & deep 1 Source := Rave eJay Group := bass
Det ser ud til at være 0D 0A (linieskift) der adskiller de enkelte dele, bortset fra at der også er en 0D 0A mellem "*fast &" og "deep 1"? Men 0D 0A må være det man skal lede efter.
Hvor meget fylder sådan en pxd, eller det svinger måske meget? Men hvis den ikke fylder ret meget så kunne du måske, for at gøre det enkelt, bruge en TStringList til at indlæse den. Så vil data automatisk blive adskilt i StringListen bortset lige fra ID og TagName, meeen det er måske lidt for fusket og kan self heller ikke bruges hvis filerne kan fylde mange MB.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.