Witam!
Mam taki problem. Pisze program, który ma wczytywać duże pliki i wyszukiwać w nich pewne informacje. Pliki są duże, dlatego nie mogę ich wczytywać całych na raz, tylko fragmentami.
Mam też gotową klasę, która służy do wyszukiwania - ale oczekuje jako argument zmiennej typu STRING.
I teraz jak te dwie rzeczy połączyć.
Jak zrobić SZYBKIE czytanie pliku do STRINGA?
Ja używam BlockRead. Bo jest bardzo szybkie. Ale BlockRead nie może czytać do stringa tylko do jakiegoś buforu. Więc zrobiłem zmienną Bufor : array[0..1024] of Byte i do niej wczytuje. I takie czytanie pliku jest bardzo szybkie. No, ale ja potrzebuje tych wczytanych danych w zmiennej string. Więc robie tak:
S:='';
for i:=1 to Wczytano do S:=S+Chr(Bufor[i-1]);
czyli tworze stringa na podstawie bufora. I to działa. Ale te dwie powyższe linijki spowalniają cały program ze 100 razy! ;)
Czyli generalnie pytanie - jak najszbciej zamienić tablice (jak podałem wyżej) na ciąg znaków STRING... albo inaczej - jak wczytywać dane od razu do STRINGa.
Bo można do STRING'a wczytywać tak:
ReadLn(Plik,S);
ale tutaj nie kontroluje po ile bajtów... i wczytuje "liniami", a ja chcę operować na plikach binarnych, nie tylko tekstowych. Mam nadzieję, ze rozumiecie.
Z góry dzięki za pomoc