Może lepiej poczytaj o plikach typowanych (i amorficznych przy okazji) a potem wybierz najlepsze rozwiązanie; Do takich rzeczy akurat najmniej nadają się pliku tekstowe;
Przy plikach typowanych jest taki problem że jest ograniczenie ilości znaków. Twoje stwierdzenie że pliki tekstowe się przydadzą najmniej jest moim zdaniem całkowicie błędne, gdyż nadają się one bardzo. Łatwo je czytać zarówno przy pomocy system.text
jak i TStringList.LoadFromFile
. Równie łatwo można je zapisywać. Rozwiązaniem alternatywnym jest np. INI albo XML który jednak wymaga dużo więcej pracy aby osiągnąć ten sam efekt końcowy.
@olesio dał dobry przykład:
NazwaEdita.Text := NazwaMemo.Lines[IndeksLinijkiLiczonyOdZera];
Czytaj: Olesio zrobił ci za kurs który powinieneś był przeczytać.
ale to nie do końca jest logiczne, bo bedzie w edicie pokazywac slowo z memo
Nielogiczny jest operator przypisania? Bardzo ciekawe rzeczy wypisujesz...
Pelsta napisał(a)
s:=Memo1.Lines[i];
p:=Pos(#9,s);
kod:=Copy(s,1,p-1);
Delete(s,1,p);
p:=Pos(#9,s);
tytul:=Copy(s,1,p-1);
Delete(s,1,p);
autor:=s;
Wydaje mi się, że to już któryś raz gdzie widzę bardzo podobną odpowiedź? Deja vu, czy po prostu pytacze zawsze pytają ok. 10 typów pytań które zawsze się powtarzają?
O gotowcach nie ma sensu żebym się powtarzał, bo szkodzisz wszystkim wokoło chociażby tym że przez ciebie osoba która coś powinna umieć nie umie tego. Ale o ile do niektórych to dociera to niektórzy są nieprzemakalni.
Dziękuje ! Szczerze to już miałem pomysł zrobić to na INI ale moze ten sposób zadziała u mnie.
Może zadziała... Nie no ale dlaczego miałby nie zadziałać...
A widzisz - i to już jest coś konkretnego
Dla ciebie to potrzeba coś gotowego, nie konkretnego. Można tobie powiedzieć jak coś zrobić (zobacz post olesia?), ale ty nie będziesz umiał tego zrobić, bo nie znasz nawet podstawowych konstrukcji programistycznych (to zdziwienie przy pobieraniu elementu tablicy albo instrukcji przypisania). Nie umiesz nic programować, szukasz czegoś co być może będzie działać, bez myślenia wklejasz to w kod i usiłujesz zrobić tak żeby kompilator to przepuścił.
Wściekły programista napisał(a)
Komponenty nie służą do przechowywania wszelkich danych, tylko do ich przedstawiania w formie graficznej, więc pakowanie całej biblioteki do kontrolki klasy TMemo jest absurdem
To zależy ile biblioteka ma pozycji. Na potrzeby działu newbie wszystko trzeba upraszać więc zamiast stosować TStringList, będzie TMemo (bo się samo zainicjalizuje) a zamiast zaawansowanych systemów bazodanowych - plik txt.
Możliwości jest wiele, jednak dane wolałbym trzymać np. w prywatnym polu - liście a w kontrolce jedynie je wyświetlać - pobranie informacji następowałoby z listy, a nie z zawartości właściwości kontrolki; Sądzę, że wykorzystując listę skróci się czas wyszukiwania danej książki niżeli miałoby się to odbywać na właściwości kontrolki;
Przecież kontrolka ma dokładnie to samo co zwykła lista stringów. Jedynie przy dodawaniu nowych wywoływane jest zdarzenie odmalowania.
I w ogóle to twoje tematy są zbyt zaawansowane jak na dział newbie.
Wszelkie informacje o danych wpisach trzymam w liście klasy TObjectList z racji tej, że wpisów może być maksymalnie tysiąc i przy pełnej liście czas wyszukiwania jest o ponad 20% krótszy, niż operując na właściwości Items kontrolki;
Ciekaw jestem z czego wynika ta zmiana.
W ogóle to jeżeli szukasz jeszcze lepszego pojemnika na dane, to użyłbym fgl.TFPGMap
(FPC 2.6.0+ only).
Do czego zmierzam - nie pakuj wszystkich informacji do kontrolki, tylko do osobnej listy, a w kontrolce tylko przedstaw te dane; Dzięki czemu przy większej ilości książek wyszukiwanie będzie szybsze, a same dane będzie można ładnie graficznie przedstawić na liście (wcale nie wysilając się bardzo);
Masz całkowitą rację, tylko ty mówisz do osoby która niedawno odkryła jak się pobiera dane z tablicy.
BTW. Ciągle robisz tą kontrolkę? Ile można :P
(Ale mi tasiemiec wyszedł)