Odwołanie do tablicy typu rekordowego po numerze pola

0

[email protected]

Cześć .
Mam taki problem.
Jak można dostać się do pola tablicy typu rekordowego po numerze pola ??

Dla lepszego zrozumienia zamieszczam część kodu (delphi) :

type
// deklaracja rekordu :-)
TOper = record
klient:string[8];
sep1:char;
konto:string[5];
sep2:char;
subkonto:string[9];
sep3:char;
numer_kolejny:string[4];
end;
...

var
OFile:file of Toper; //Plik typu rekordowego
Otab:array[1..10] of Toper; // tablica typu rekordowego

procedure Tform1.Button1Click(Sender: TObject);
var
li:word;
x:integer;
begin
li:=1;

// do tablity typu rekordowego ładuje zawartość ze zbioru plikname

Reset(OFile,plikname);
While not EOF(OFile) do
begin
    read(OFile,OTab[li]);
    inc(li);
end;
CloseFile(OFile);

// a tu chcę wpisać do tabeli zawartość tablicy OTab ale nie chcę się odwoływać 

do tablicy po nazwie np.: OTab[x].konto tylko po numerze pola np.: Otab[x].3;
I to jest mój problem bo nie wiem jak tego dokonać . Myślałem , że uda mi się to zrobbić
wykorzystując zapis OTab[x].FieldByNumber(3); ale niestety to nie przechodzi .
Jak można dostać się do pola tablicy typu rekordowego po numerze pola ??

for x:=1 to li do
    StringGrid1.Cells[1,x]:=OTab[x].FieldByNumber(x);

end;

Czy mogę liczyć na odpowiedź ??
Przemek
Pozdrawiam

0

Z tego co wiem, do pól rekordu można się odwoływać tylko po ich nazwach.
Jeśli korzystałbyś z bazy danych miałbyś dużo większe możliwości (np. FieldByNumber).

0

Wielka szkoda , ze sie nie da .
Dzieki .


0
type
  TOper = record
      klient:string[8];
      sep1:char;
      konto:string[5];
      sep2:char;
      subkonto:string[9];
      sep3:char;
      numer_kolejny:string[4];
end;

function FieldByNumber(x: Byte; r: TOper): string;
begin
  case x of
   1: Result := r.klient;
   2: Result := r.sep1;
   3: Result := r.konto;
   4: Result := r.sep2;
   5: Result := r.subkonto;
   6: Result := r.sep3;
   7: Result := r.numer_kolejny;
  end;
end;

    for x:=1 to li do
        StringGrid1.Cells[1,x]:= FieldByNumber(x, OTab[x]);

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