Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Pointeri i cithanje bytova iz memorije

[es] :: Pascal / Delphi / Kylix :: Pointeri i cithanje bytova iz memorije

[ Pregleda: 2731 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

StratOS
Slovenija

Član broj: 2234
Poruke: 988
*.ce.sik.si



+1 Profil

icon Pointeri i cithanje bytova iz memorije12.03.2004. u 10:30 - pre 221 meseci
Posto sam tako rekoc novopechen Delphijash zanima me sledeche.

Znam kako Delphi tretira Pointere i variable pointera definiranaog tipa.
No sto me interesira, znam da treba biti pazljiv kod velicine deklariranog pointera, no znam kako dobijem naprimer bytove iz memorije i pointere na definiran tip pointera recimo Integer (4 byta) iz memorije recimo uz pomoch CopyMemory API-a.

Kako bi mogao da citham/mjenjam pointere kao array-e bytova iz memorije sa CopyMemory-em i to bez definisanog tipa, samo bi length kod API funkcije menjao i pazio da ne dodjem do kakvih R/W pogresaka kod addrese ili do kakvih BSOD-a !

Cithati/mjenjati hochu blockove memorije i to sa tim API-em.
Kako to ?

Sa vech definiranim tipovima pointera nije problem, kako mi nije bio problem ni u VB-u (ByVal i ByRef) kod tog API-a, no kod delphia to je malo teze no i nemam josh toliko iskustva sa njime i pointerima.

Moze mi tko dati koji primjer, jer stvarno nisham nasao nesto slicnog na netu !

vech unaprijed hvala.
Pozdrav StratOS
"Multitasking - ability to f##k up several things at once."
"It works better if you plug it in."
"As a rule, software systems do not work well until they have been used, and have failed repeatedly, in real applications."
"The one who is digging the hole for the other to fall in is allready in it."
 
Odgovor na temu

morlic
Milos Orlic
Beograd

Član broj: 6081
Poruke: 735
*.46.eunet.yu



+1 Profil

icon Re: Pointeri i cithanje bytova iz memorije14.03.2004. u 17:41 - pre 221 meseci
Daj konkretan primer, mislim da nisam razumeo sta konkretno zelis.
 
Odgovor na temu

Rapaic Rajko
Bgd

Član broj: 4105
Poruke: 802
80.93.233.*



+62 Profil

icon Re: Pointeri i cithanje bytova iz memorije17.03.2004. u 12:51 - pre 221 meseci
Pazi ovako, Delphi ti pruza mnogo mocnije manipulacije pointerima nego sto mozes i da zamislis. Postoji U Delphi-ju vec deklarisan tip za to
Code:

  PByteArray = ^ByteArray;
  ByteArray = array[0..maxint div 16] of byte; // pravi opseg..?


sledi

Code:

  var
    MyPArray: PByteArray;
    anyByte: byte;
    anyNumber: double;

  begin
     anyNumber := 1234567.890123456;
     MyPArray := @anyNumber;
     anyByte := MyPArray^[0];   // deo mantise ili eksponenta ??? 
  end;


Moras DOBRO da pazis na opseg i da znas sta radis sa ovakvim pointerima, jer u gornjem primeru oni jasu 'tudju' memoriju. A mozes uvek i od sistema da zatrazis da ti da 'tvoju' memoriju

Code:

  GetMem(MyPArray, 1024);  // dobio si blok od 1KB na heap-u


ali ne zaboravi negde/nekad i da ga oslobodis

Code:

  FreeMem(MyPArray);


inace imas cisti memoryleak (heap je deo programske memorije).

To bi bilo to

Rajko

P.S. A pazi tek ovo (gornji primer u skracenoj verziji):

Code:

  anyByte := (PByteArray(@anyNumber))^[0];


Mozda je cak jedan par zagrada ovde suvisan, ali ovako znam da radi sto posto...

P.P.S. I jos nesto, mani se CopyMemory; koristi iz Delphi Pascal-a funkciju move(), koja uprkos nazivu, radi kopiranje svega i svacega.
 
Odgovor na temu

StratOS
Slovenija

Član broj: 2234
Poruke: 988
*.ce.sik.si



+1 Profil

icon Re: Pointeri i cithanje bytova iz memorije25.03.2004. u 14:58 - pre 221 meseci
Hvala, rjeshio problem

steta sto odmah nisam postao

Hvala svima josh jedanput !
Pozdrav StratOS
"Multitasking - ability to f##k up several things at once."
"It works better if you plug it in."
"As a rule, software systems do not work well until they have been used, and have failed repeatedly, in real applications."
"The one who is digging the hole for the other to fall in is allready in it."
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Pointeri i cithanje bytova iz memorije

[ Pregleda: 2731 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.