PDA

Visualizza la versione completa : pascal pointers


smt
19-04-2005, 17:25
mi occorre una dritta su come fare in delphi una cosa del tipo


...
pStruct = &MYSTRUCT;
// calcolo offset, casto a byte, assegno valore
(unsigned char*) ( pStruct+sizeof(FIELD1)+sizeof(FIELD2)+sizeof(FIELD 3) ) = 0xFF01;

qualche idea?

LeleFT
19-04-2005, 17:33
Cerchiamo di capirci... Delphi o Pascal?

Sono due cose diverse...


Ciao. :ciauz:

smt
19-04-2005, 17:44
delphi, ma se hai un clue pure pascal è comunque ben accetto, scusa l'imprecisione, ma non mi intendevo esaminare le somiglianze e le differenze tra le diverse implementazioni del linguaggio, mi occorre la sintassi o una funzione che faccia quanto sopra...
hai idee in proposito?

LeleFT
19-04-2005, 18:01
Aspettiamo con fiduca l'intervento di alka. :)


Ciao. :ciauz:

alka
19-04-2005, 18:11
Originariamente inviato da LeleFT
Aspettiamo con fiduca l'intervento di alka. :)

Ringrazio della fiducia, ma purtroppo non conosco così a fondo il linguaggio C. Provo a stendere qualcosa però... :)


type
PMyStruct = ^TMyStruct;
TMyStruct = record
// campi
end;

...

var
s: TMyStruct;
p: PMyStruct;
w: ^Word;
begin
p := @MyStruct;
Inc(p, SizeOf(Field1) + SizeOf(Field2) + SizeOf(Field3));
w := p;
w^ := $FF01;
end;

In realtà, ci vorrebbe qualche dettaglio in più sul significato del codice e sul tipo dei singoli dati.

smt
19-04-2005, 18:16
si, credo che tu mi abbia dato l'input che mi mancava, anche io stavo pistolando la proc Inc, provo ancora, grazie mille.

alka
19-04-2005, 18:18
Originariamente inviato da smt
si, credo che tu mi abbia dato l'input che mi mancava, anche io stavo pistolando la proc Inc, provo ancora, grazie mille.
Il mio intento era proprio quello. Se devi fare aritmetica coi puntatori (che non affronto da un sacco di tempo), e se ricordo bene, occorre utilizzare Inc (e la corrispondente Dec) assieme a SizeOf.

Prova e scopriremo se mi sono sbagliato. :)

Loading