Rekordy vs. Tablica dynamiczna

0

Mam mały problem :/ Chcę stworzyć program do przechowywania tipsów do gier. Mam podstawową budowę programu, ale nie wiem jak połączyć tryb rekordowy z tablicą dynamiczną, żeby dane zapisywać i odczytywać z bazy. Innymi słowy mówiąc potrzebuje czterech procedurek (zapis, odczyt, dodawanie, usuwanie) do tego:

type
PField = ^TField;
TField = record
Name: string;
Tips: array of Byte;
ReadOnly: Boolean;
Modified: Boolean;
end;

TIndex = ^TField;

type
TDataBase = record
Indices: array of TIndex;
Fields: array of TField;
end;

Komponenty jakie używam to: Listbox, Edit i Memo. Chciałbym również prosić o pomoc w sprawie wyszukiwania w Listbox. Chodzi o to, że tekst wpisywany jest w Edit i automatycznie podświetla się szukana nazwa z tym, że proces ten jest odporny na duże i małe litery wprowadzane w Edit i zaznaczany w Listbox.

Z góry dziękuję za Pomoc:)

0

Z tego co widzę to potrzebujesz nie pomocy a gotowego programu :/ .

Tak wygląda obsługa listy

type
 PElem = ^TElem;
 TElem = record
  Tekst :string[20];
  Next  :PElem; // wskaznik do nastepnego rekordu
 end;

const Glowa :PElem = nil;

procedure UtworzElem(s :string; Prev :PElem);
var Nowy :PElem;
begin
 New(Nowy);
 Nowy^.Tekst := s;
 Nowy^.Next := Prev^.Next;
 Prev^.Next := Nowy;
end;

procedure UtworzGlowe(s :string);
begin
 New(Glowa);
 Glowa^.Tekst := s;
 Glowa^.Next := nil;
end;

function Szukaj(s :string) :PElem;
var Wsk :PElem;
begin
 Wsk := Glowa;
 while (Wsk^.Next <> nil) and (Wsk^.Tekst <> s) do
  Wsk := Wsk^.Next;
 Szukaj := Wsk;
end;

procedure Wstaw (s :string; Po :string);
begin
 if Glowa = nil then UtworzGlowe(s) else
 UtworzElement(s, Szukaj(Po));
end;

procedure Dopisz(s :string);
begin
 Wstaw(s, '');
end;

procedure Usun(s :string);
var Pomoc :PElem;
begin
 if Glowa^.Tekst = s then
  begin
   Dispose(Glowa);
   Glowa := Glowa^.Next;
  end;
end;
0
Oleksy_Adam napisał(a)
function Szukaj(s :string) :PElem;
var Wsk :PElem;
begin
 Wsk := Glowa;
 while (Wsk^.Next <> nil) and (Wsk^.Tekst <> s) do
  Wsk := Wsk^.Next;
 Szukaj := Wsk;
end;

taki mały hint jak nie znajdzie elementu to zwraca ostatni a powinien nil - pierwszy warunek zmień na (Wsk <> nil) i powinno być git

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