में कई फ़ाइलों की सबसे छोटी फ़ाइलों को आसानी से कैसे पढ़ सकता हूं मेरे पास मेरे प्रोग्राम में "फ़ाइलें खोजें" फ़ंक्शन है जो मेरे प्रोग्राम को पढ़े गए .ged प्रत्यय वाले टेक्स्ट फ़ाइलों को मिलेगा। मैं एक अन्वेषक की तरह खिड़की है कि इस तरह दिखता है में पाया परिणाम प्रदर्शित:मैं डेल्फी
मैं मानक FindFirst/FindNext तरीकों का उपयोग, और यह बहुत जल्दी काम करता है। ऊपर दिखाए गए 584 फाइलें कुछ सेकंड के भीतर पाई जाती हैं और प्रदर्शित होती हैं।
जो मैं अब करना चाहता हूं वह प्रदर्शन में दो कॉलम जोड़ता है जो "स्रोत" और "संस्करण" दिखाता है जो इन फ़ाइलों में से प्रत्येक में निहित है। यह जानकारी प्रत्येक फ़ाइल के पहले 10 लाइनों के भीतर आम तौर पर पाया जाता है, लाइनों है कि तरह लग रहे पर:
1 SOUR FTM
2 VERS Family Tree Maker (20.0.0.368)
अब मैं इस बहुत जल्दी अपने आप को पार्स कोई समस्या नहीं है, और कहा कि मैं क्या पूछ रहा हूँ नहीं है।
मुझे सहायता की आवश्यकता है कि इन फ़ाइलों से पहली 10 या तो लाइनों को सबसे तेज़ी से कैसे लोड किया जाए ताकि मैं उन्हें पार्स कर सकूं।
मैंने स्ट्रिंगलिस्ट को लोड करने का प्रयास किया है। लोडफ्रॉमफ़ाइल, लेकिन 1 एमबी से ऊपर की बड़ी फ़ाइलों को लोड करने में बहुत अधिक समय लगता है।
चूंकि मुझे केवल पहली 10 लाइनों की आवश्यकता है या तो, मैं उन्हें सर्वश्रेष्ठ कैसे प्राप्त करूं?
मैं डेल्फी 200 का उपयोग कर रहा हूं, और मेरी इनपुट फाइल यूनिकोड हो सकती है या नहीं, इसलिए इसे किसी भी एन्कोडिंग के लिए काम करने की आवश्यकता है।
फॉलोअप: धन्यवाद एंटोनियो,
मैं यह कर समाप्त हो गया जो ठीक काम करता है:
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 बहुत अक्षम है, इसके बारे में भूल जाओ। बॉक्स से बाहर सोचें और बाइट्स की संख्या (उदा।: न्यूमलाइन * एवीलाइनलाइनेंथ) पढ़ें, लाइनस्टार्ट के साथ छिड़काव करें और फिर टीएसट्रिंग्स –
में विभाजित करें, वास्तव में, वर्म, यह उतना बुरा नहीं है जितना आप सोचेंगे। यह लगभग 10 एमबी एक सेकेंड पढ़ और लोड कर सकता है। जब भी मुझे उन फ़ाइलों में ग्रंथों की खोज करनी पड़ती है तब भी मैं इसका सफलतापूर्वक उपयोग करता हूं। लेकिन पूरी फाइलों को लोड करने के लिए इसका उपयोग क्यों करें और उपयोगकर्ता को केवल 40 सेकंड प्रतीक्षा करें जब केवल पहले कुछ लाइनों की आवश्यकता हो। – lkessler