Ĺadny brzuch
:( 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:)
Uzyj klasy tlist lub w kazdym rekordzie zamiesc wskaznik do nastepnego rekordu i zrob cos na wzor sieci :) Bedzie dzieki temu latwiej operowac na rekordach :)
@kajetanek: to sie nazywa chyba lista jednokierunkowa (wskaznik na nastepny element) ? ;)
1. albo zadeklaruj stala dlugosc wpisu typu string (max 255), co akurat w przypadku opisu raczej sie nie sprawdzi... mozesz tez zadeklarowac to jako array[0..x] of char, ale plik bedzie dosyc duzy (jesli zalozyc ze na jeden opis przeznaczysz np. 4000 znakow)
Znacznie lepiej jest zapisywac to jako string zakonczony zerem, tzn zapisujesz wszystkie pola rekordu (te o stalej wielkosci) a na koncu kolejne znaki stringa. kiedy string sie skonczy zapisz bajt zerowy. Potem przy wczytywaniu odczytujesz wszystkie pola rekordu o stalej wielkosci a do stringa czytasz znaki az natrafisz na bajt zerowy.
2. wyszukiwanie w listboxie: albo IndexOf albo petla z porownaniem (drugie rozwiazanie daje ci wieksze mozliwosci, mozesz porownywac np. tylko fragment tekstu lub porownywac oba w lowercase dzieki czemu szukanie nie bedzie case-sensitive)
3. dodawanie / usuwanie
polecam poczytac o tablicach dynamicznych ( http://4programmers.net/Delphi/Tablice )
oraz http://4programmers....string%C3%B3w)_
BTW nie licz ze ktos ci napisze tu gotowca :>
aha, i zamiast bawic sie w tablice dynamiczne naprawde polecam uzycie klasy TList ( i ewnetualnie pochodnych )
jest to dziesiatki razy wygodniejsze (masz od razu metody move / delete, nie musisz bawic sie w SetLength itp)
Użytkownik migajek edytował ten post 20 czerwiec 2006, 10:39
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
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:)
Uzyj klasy tlist lub w kazdym rekordzie zamiesc wskaznik do nastepnego rekordu i zrob cos na wzor sieci :) Bedzie dzieki temu latwiej operowac na rekordach :)
@kajetanek: to sie nazywa chyba lista jednokierunkowa (wskaznik na nastepny element) ? ;)
1. albo zadeklaruj stala dlugosc wpisu typu string (max 255), co akurat w przypadku opisu raczej sie nie sprawdzi... mozesz tez zadeklarowac to jako array[0..x] of char, ale plik bedzie dosyc duzy (jesli zalozyc ze na jeden opis przeznaczysz np. 4000 znakow)
Znacznie lepiej jest zapisywac to jako string zakonczony zerem, tzn zapisujesz wszystkie pola rekordu (te o stalej wielkosci) a na koncu kolejne znaki stringa. kiedy string sie skonczy zapisz bajt zerowy. Potem przy wczytywaniu odczytujesz wszystkie pola rekordu o stalej wielkosci a do stringa czytasz znaki az natrafisz na bajt zerowy.
2. wyszukiwanie w listboxie: albo IndexOf albo petla z porownaniem (drugie rozwiazanie daje ci wieksze mozliwosci, mozesz porownywac np. tylko fragment tekstu lub porownywac oba w lowercase dzieki czemu szukanie nie bedzie case-sensitive)
3. dodawanie / usuwanie
polecam poczytac o tablicach dynamicznych ( http://4programmers.net/Delphi/Tablice )
oraz http://4programmers....string%C3%B3w)_
BTW nie licz ze ktos ci napisze tu gotowca :>
aha, i zamiast bawic sie w tablice dynamiczne naprawde polecam uzycie klasy TList ( i ewnetualnie pochodnych )
jest to dziesiatki razy wygodniejsze (masz od razu metody move / delete, nie musisz bawic sie w SetLength itp)
Użytkownik migajek edytował ten post 20 czerwiec 2006, 10:39