Odczytywanie danych z listy jednokierunkowej

0

Posiadam listę jednokierunkową w której chcę odwołać się do pewnej wartości w tej liście. Niestety to do jakiej wartości chcę się odwołać jest zależne od użytkownika więc zamiast np.

 akt^.imie;

Chcę zrobić coś takiego

element:='imie';
akt^.element;
0

Tak się nie da - opisz problem dokładniej.

0

Może potrzebujesz kilka funkcji compare_by_name, compare_by_id itp oraz przekazanie takiego wskaźnika do procedury?

0

w elementach listy jednokierunkowej mam wiele danych i próbuję zrobić wyszukiwarkę wg rodzaju danej. Użytkownik wybiera w czym szuka (imie,nazwisko,id ..itd) teraz szukając w tej liście podczas przechodzeniu po elementach muszę wiedzieć w jakim rekordzie szukać więc muszę podać akt^.name lub akt^.nazwisko itd. Nie chce tworzyć dla każdego typy danych osobnej procedury. Chcę wczytać sobie co ma przyjąć jako rekord

1
type
   FCmp=function(const akt:TAkt;Value:String):Boolean;

function CmpName(const akt:TAkt;Value:String):Boolean;
begin
  Result:=(akt^.name=Value);
end;

function CmpSurname(const akt:TAkt;Value:String):Boolean;
begin
  Result:=(akt^.surname=Value);
end;

function CmpId(const akt:TAkt;Value:String):Boolean;
begin
  Result:=(akt^.id=Value);
end;

function find(head:PAkt;cmp:FCmp;Value:String):PAkt;
begin
  while head<>nil do
  begin
    if cmp(head^,Value) then
    begin
      Result:=head;
      Exit;
    end;
    head:=head^.next;
  end;
  Result:=nil;
end;

begin
  ptr:=find(head,@CmpName,'Adam');
  ptr:=find(head,@CmpSurname,'Kowalski');
  ptr:=find(head,@CmpId,'1234');
end.
0

nie o to mi chodzi. Ja wiem jak szukać jeśli wiem w czym szukać chodzi mi o coś takiego:

 rekord^.'zmienna'
1

Najlepiej gdybyś skorzystał z SQL'a - możliwości przeszukiwania praktycznie nieograniczone, ale jak nie chcesz strzelać z armaty to może Tablice asocjacyjne

0

@VESPERUS, niektórzy dalej niż PHP nie są wstanie skoczyć, w PHP tak (no prawie) można.

0

@VESPERUS - jakiś czas temu był na forum wątek z dokładnie takim samym problemem (trzeba najpierw nieco przeszukać sieć zanim nasmaruje się nowy wątek): Dopisywanie do elementu stalej wartosci; W nim tak samo chodziło o dynamiczne podawanie nazwy pola struktury, np. podając łańcuch znaków;

Niestety w przypadku struktur nie jest to możliwe, za to w przypadku klas i ich właściwości w sekcji published da się ustawiać i pobierać wartości spod właściwości odszukanej na podstawie jej nazwy; Jeśli jesteś ciekaw takiego rozwiązania to przejdź do tego wątku i zobacz na ostatni post, w którym przedstawiłem przykład odwoływania się pobierania wartości właściwości na podstawie funkcji GetPropInfo i jej ustawiania przez jedną z wielu procedur, np. SetStrProp; Inaczej się tego nie zrobi, bo składnia i interpreter tego nie przewidują;

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