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

Record kao Array

[es] :: Pascal / Delphi / Kylix :: Record kao Array

[ Pregleda: 1589 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Milan Milosevic

Član broj: 67
Poruke: 932
*.dynamic.isp.telekom.rs.



+31 Profil

icon Record kao Array08.06.2014. u 12:25 - pre 119 meseci
Da li je moguce pristupiti elementima sloga kao da su elementi niza
primer
imam
Slog = record
el1:Integer;
el2:Integer;

......
eln:Integer;
end;

posto su svi elementi istog tipa, a treba svima da odradim istu stvar ,da li moze umesto da pristupam svakom elementu pojedinacno
da koristim sistem kao kod nizova.
Trazio sam ovo na internetu ali nisam uspeo da nadem pa mozda neko zna

Pozdrav
 
Odgovor na temu

reiser

Član broj: 7895
Poruke: 2314



+102 Profil

icon Re: Record kao Array08.06.2014. u 12:35 - pre 119 meseci
Koliko znam, recordi nemaju RTTI, tako da to sto hoces nije moguce. Preporucio bih ti da umesto recorda koristis klase.
 
Odgovor na temu

Rapaic Rajko
Bgd

Član broj: 4105
Poruke: 810
..ppoe.dyn.broadband.blic.net.



+62 Profil

icon Re: Record kao Array08.06.2014. u 12:54 - pre 119 meseci
Pretpostavljam da ti ovo ne odgovara:

Code:

  Slog = record
    el: array[1..n] of integer;
  end;


U tom slucaju, pokusaj ovako nesto:

Code:

type
  TSlog = record
    el1: integer;
    ...
    eln: integer;
  end;

  TRecElemArray = array[1..n] of integer;
  PRecElemArray = ^TRecElemArray;

procedure ReadRecordAsArray(var Slog: TSlog);
var
  RecElemArr: PRecElemArray;
  i: integer;
begin
  RecElemArr := @Slog[1]; // ili @Slog, probati; pre ce biti ono prvo

  i := RecElemArr^[4]; // sad citamo slog kao array
end;


Sve zavisi kakav je alignment record-a (podesava se u compiler options); ako je podesen na 4 bytes, ovo bi trebalo da radi.

Pozz
 
Odgovor na temu

[es] :: Pascal / Delphi / Kylix :: Record kao Array

[ Pregleda: 1589 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

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