Programımda okuduğum .ed ekiyle metin dosyalarını bulabilen bir "Dosyaları Bul" işlevim var. Delphi'de Çok Sayıda Çok Dosyaya İlişkin Frekans Satırlarını Nasıl Verebilirim
Ben standart FindFirst/FindNext yöntemlerini kullanın ve bu çok hızlı çalışır: Şöyle explorer-benzeri bir pencerede bulunan sonuçlarını görüntülemek. Yukarıda gösterilen 584 dosya bir çift saniye içinde bulunur ve görüntülenir.Şimdi yapmaktan hoşlandığım şey, ekrana, bu dosyaların her birinde bulunan "Kaynak" ve "Sürüm" ü gösteren iki sütun eklemek. Bu bilgiler gibi bakmak hatlarında, her dosyanın ilk 10 çizgilerin içinde genellikle bulunur:
1 SOUR FTM
2 VERS Family Tree Maker (20.0.0.368)
Şimdi çok hızlı bir şekilde kendimi bu ayrıştırma sorunum yok, ve ben soruyorum ne değildir.
Yardıma ihtiyacım var, bunları ilk 10 veya daha fazla satırı bu dosyalardan en hızlı şekilde nasıl yükleyeceğim, böylece bunları ayrıştırabiliyorum.
Bir StringList.LoadFromFile yapmayı denedim, ancak 1 MB'nin üzerindeki gibi büyük dosyaları yüklemek çok zaman alıyor.
Sadece ilk 10 satıra ihtiyaç duyduğumdan, onları nasıl alacağım?
Delphi 2009 kullanıyorum ve giriş dosyam Unicode olabilir veya olmayabilir, bu nedenle herhangi bir kodlama için çalışması gerekir. çalışıyor teşekkürler Antonio,
bunu yaparken sona erdi:
Takip
var
CurFileStream: TStream;
Buffer: TBytes;
Value: string;
Encoding: TEncoding;
try
CurFileStream := TFileStream.Create(folder + FileName, fmOpenRead);
SetLength(Buffer, 256);
CurFileStream.Read(Buffer[0], 256);
TEncoding.GetBufferEncoding(Buffer, Encoding);
Value := Encoding.GetString(Buffer);
...
(parse through Value to get what I want)
...
finally
CurFileStream.Free;
end;
TStrings.LoadFromFile çok verimsizdir, unutun. Kutuyu düşünün ve makul (örneğin: NumLines * AvgLineLength) bayt sayısını okuyun, LineStart ile kırpın ve sonra TStrings'e bölünmüş –
Aslında Worm, düşündüğünüz kadar kötü değil. Saniyede yaklaşık 10 MB okuyabilir ve yükleyebilir. Bu dosyalarda metin aramam gerektiğinde hala başarılı bir şekilde kullanıyorum. Ama neden tüm dosyaları yüklemek ve kullanıcı sadece ilk birkaç satıra ihtiyaç duyulduğunda 40 saniye beklemek için kullanın. – lkessler