Jeg tænker så at jeg kan sætte lave en pointe til adressen på min stream, og tilgå den som en record. men hvordan gør jeg lige det? og hvordan laver jeg et felt i min record der er 192 bytes stor?
-og er det rigtigt når jeg bruger typen longword til en 32 bit værdi?
Efter de første ca. 230 bytes bliver pakkerne forskellige, alt efter de optioner der nu er tilstede i pakken, så den kan jeg ikke komme så let til, eller er der måske een der har en god ide?
-er der nogle der lige kender til en komponent der kan alt det jeg skal bruge når jeg skal implementere en DHCP server der bl.a. kan bruge option 82?
Noget i den her retning kan bruges til at mappe en record over en klump hukommelse (ikke testet så måske mangler der en ^ eller en @ - roder altid rundt i det):
type TDHCP_Telegram = record OP: Byte; HTYPE: Byte; HLEN: Byte; HOPS: Byte; XID: LongWord; SECS: Word; . . end;
PDHCP_Telegram = ^TDHCP_Telegram;
var Stream: TMemoryStream; DHCP_Telegram: PDHCP_Telegram; begin ... with DHCP_Telegram(Stream.Memory)^ do begin eOP.Text := intToStr(OP); ... end; end;
Longword er fin men cardinal nok bedre.
Hvad skal din komponent kunne?
Selve streamen er ikke en du genererer vel? Hvis det var ville jeg anbefale mine foretrukne Stream-kompagnoner: TReader og TWriter. De er meget meget anvendelige bare man husker at bruge FlushBuffer!
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.