Memcpy

Internφ programovacφ jazyk

procedure Memcpy(var destination; var source; size : short);

Parametry

destination prom∞nnß, do nφ₧ se kopφruje
source prom∞nnß, z nφ₧ se kopφruje
size poΦet p°enßÜen²ch bajt∙

Popis

Procedura Memcpy slou₧φ pro p°enos (kopφrovßnφ) dat bez ohledu na jejich typy. P°enßÜφ se poΦet bajt∙ zadan² parametrem size z prom∞nnΘ source do prom∞nnΘ destination. Je-li tento poΦet v∞tÜφ, ne₧ je velikost prvnφ prom∞nnΘ, m∙₧e snadno dojφt ke zhroucenφ systΘmu. Je-li tento poΦet v∞tÜφ, ne₧ je velikost druhΘ prom∞nnΘ, nenφ definovßno, co se p°enese. Ob∞ prom∞nnΘ mohou b²t libovolnΘho typu, nesmφ to b²t databßzovΘ sloupce.

Tato procedura dovoluje obchßzet typovΘ kontroly jazyka. Je to jejφ hlavnφ ·Φel.

P°φklad P°eΦtenφ identifikace u₧ivatele z tabulky USERTAB

type
  user = record
   n1 : string[16];
   n2 : string[2];
   n3 : string[20];
   id : string[80];
  end;
var 
  r : trecnum;  
  my_name : string[31];  
  userobjnum : tobjnum;
  user1 : binary[122];
  user2 : user;
begin
  r:=Insert(`₧ßdanky o dovolenou`);
    if r=-1 then begin Signalize;halt;end;
    with `Äßdanky o dovolenou`[r] do begin
      my_name:=Who_am_I;
      if Find_object(my_name, CATEG_USER, userobjnum) then Signalize;
      user1 := USERTAB[userobjnum].identif;   // p°eΦtenφ z tabulky USERTAB
      Memcpy(user2,user1,122);                // zkopφrovßnφ do struktury user
      jmΘno        := user2.n1;               // p°eΦtenφ ze struktury user
      `druhΘ jmΘno`:= user2.n2;
      p°φjmenφ     := user2.n3;