Czy rekord mo?że być parametrem?

0

Włąśnie bo załóżmy, że mam dw rekordy:

type
 Tstrony = record
    adres: string;
    ip: integer;
    data: TdateTime;
  end;
 TPliki = record
    dir: string;
    rozmiar: integer;
     daty: TdateTime;
  end;

i czy moge zrobić fucje/procedure której parametrem byłby rekord?
Wobrażam sobie to tak, że jesli oba rekordy mają po trzy pola tego samego typu to zrobić jakoś tak, że w funkcji ustawiałyby się wartości dla trzech poł nop i motem przekazac je dpo rekordu.

Mam nadzieję, że wiecie o co mi chodzi.

0

i czy moge zrobić fucje/procedure której parametrem byłby rekord?

Tak. Uzyj var jesli chcesz zmieniac zawartosc wewn funkcji. PS. Samemu nie mozna takiej prostej rzeczy sprawdzic?

0

nie do końca to miałem na mysli.

wiadomo moge zrobić
procedure Ustaw(rek: TPliki);

i to jest dl jednego rekordu a ja potzrbuje dla dwóch
orientacyjnie powinno to wyglądac tak;

procedure Ustaw(jeden z rekordów (nie wiedomo który));
begin
wybrany rekord.wartosc 1 := cos;
...
end;

0

Jak to "nie wiedomo który"? Chodzi Ci o zmianę losowego recordu? no to Ustaw(r1,r2:Tpliki) a potem wewnatrz procedury ustaw - random(2)!

0

Tu w ogóle nie wiadomo o co chodzi. Chyba się za bardzo spieszysz bo notorycznie literki zjadasz. Masz zmienną typu record (patrz pytanie) to postępujesz z nią jak z każdą inną zmienną. Inna sprawa - co chcesz robić z tymi recordami np: record1.wartość1:=record2.wartość2 a jeszcze inna co ta twoja proc ma wykonać

0
procedure Ustaw(rek TPliki);
begin
// robisz co chcesz :)
end;

//wywołanie:
Ustaw(TPliki(strony)); //rzutowanie
0
function Funkcja(Dane : TPliki): Boolean; overload;
begin
end;

function Funkcja(Dane : TStrony): Boolean; overload;
begin
end;

W zależności od typu danych wykona się jednalub druga wersja funkcji.

0

nie mam pojęcia o co chodzi, ale:

type
 Tstrony = record
      adres: string;
      ip: integer;
      data: TdateTime;
   end;
 TPliki = record
      dir: string;
      rozmiar: integer;
       daty: TdateTime;
   end;

procedure costam(var rekord:TStrony); overload;
begin
 ShowMessage(rekord.adres); // wyświetla aktualny adres z rekordu
 rekord.adres:='Inny'; // i zmienia go żebyś wiedział że zmieniać można
end;

procedure costam(rekord:TPliki); overload;
begin
 ShowMessage(rekord.dir);
 // jak się nie doda var przed rekord w deklaracji to nie można zmieniać zawartości rekordu
end;

function dlastron(rekord:TStrony):TStrony;
var a:TStrony;
begin
 a:=rekord;
 a.adres='www.interia.pl';
 Result:=a;
end;

function dlaplikow(rekord:TPliki):TPliki;
var a:TPliki;
begin
 with a do begin // stosowanie with umożliwia pominięcie kropek (jakby ktoś miał tego nie wiedzieć...)
  dir:='c:\windows\pulpit';
 end;
 Result:=a;
end;

procedure przeciep(var a:TStrony;var b:TPliki);
// procedura zamieni miejscami stringi, integery i daty w zmiennych
var c:TStrony;
begin
 c:=a;
 with a do with b do begin
  adres:=dir;
  ip:=rozmiar;
  data:=daty;
 end;
 with b do with c do begin
  dir:=adres;
  rozmiar:=ip;
  daty:=data;
 end;
end;

var pierwszy,drugi:TStrony;
 trzeci,czwarty:TPliki;

begin
 with pierwszy do begin
  adres:='Pomorska.net';
  IP:='253.0.0.0';
  data:=getDate;
 end;
 with drugi do begin
  adres:='Zadupie.pl';
  IP:='214.214.214.214';
  data:=getDate; // nie wiedziałem co przypisać do TDateTime bo żadko z datami mam doczynienia.  

;p

 end;
 with trzeci do begin
  dir:='c:\windows';
  rozmiar:=421451;
  ...
  ... // itede itepe :)
  ...
 end;
 ...
 costam(pierwszy);
 costam(drugi);
 costam(trzeci);
 costam(czwarty);
 drugi:=dlastron(drugi);
 trzeci:=dlaplikow(trzeci);
 przeciep(pierwszy,trzeci);
end;

tak se napisałem bo nie mam zielonego o co chodzi ...
zawarłem w tym wszystko o co myśle że mogło chodzić

1 użytkowników online, w tym zalogowanych: 0, gości: 1