![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как лучше работать с файлом размером больше 100мб [D7, XP]
Игорек © (2010-05-14 12:15:00)В общем как лучше работать с файлом размер которого больше 100 мб (около 300-500мб).
Файл представляет собой строки (строка длинее 255 символов).
Моя задача открыть файл и посторочно искать в нем интересующию еменя символы(строки).
Какой компонентой и как лучше открыть файл , и как лучше просматривать строки длинее 255 символов.
Еще как такие строки сохранять в новый файл.
Заранее спасибо.
antonn (2010-05-15 15:32:00) [1]закончил?
Palladin (2010-05-15 15:29:00) [2]Да и что значит "если подойти буквоедственно"? ты уже подошел, не надо никаких "если". Объясняю графу antonn'у, который, в данный момент, играет в Дыр'Таньяна, с очень узким седлом, что есть знание, а что есть "я слышал":
Приходит товарищ на пляж и говорит: емае, а я слышал тут нельзя с клюшками бегать
Ему говорят: а с хрена-ли ты так решил?
И тут присоединяется Дыр'Тырьян и, как ведущий специалист по бадминтону с клюшкой на коньках от версачи, вещает: можно, я видел, я оценил, я знаю
и коронное "поял да!??"
Palladin (2010-05-15 15:13:00) [3]касаемо "слышал звон" - нет
antonn (2010-05-15 15:01:00) [4]то самое.
2Гб конечно тоже ограничение, если подойти буквоедствено. Но вот тут разве играничение не поменьше? оно есть? касаемо "слышал звон"
Palladin (2010-05-15 14:57:00) [5]
> antonn © (14.05.10 15:04) [12]
ты в смысле меня в стекло мордой и спрашивает "а тут стекла говоришь нет?" ? или что?
MonoLife (2010-05-15 08:34:00) [6]
> Есть, в 2 ГБ, у тебя есть такие файлы, ну тогда тебе не
> подойдет.
Ну, тогда нормально) Спасибо, что напомнили..
Anatoly Podgoretsky (2010-05-14 15:37:00) [7]> MonoLife (14.05.2010 13:37:09) [9]
Есть, в 2 ГБ, у тебя есть такие файлы, ну тогда тебе не подойдет.
antonn (2010-05-14 15:04:00) [8]
> Palladin © (14.05.10 14:05) [10]
>
> ага, слышал звон да не знаю где он
тут никаких ограничений нет?
function TMemoStrings.Get(Index: Integer): string;
var
Text: array[0..4095] of Char;
begin
Word((@Text)^) := SizeOf(Text);
SetString(Result, Text, SendMessage(Memo.Handle, EM_GETLINE, Index,
Longint(@Text)));
end;
RWolf (2010-05-14 14:31:00) [9]
> han_malign (14.05.10 12:59) [4]
да я решил было, что автору нужен поиск подстроки, тогда можно грузить файл в память целиком, и CR/LF не мешают; но, судя по описанию задачи, ищется всё-таки именно строка.
Palladin (2010-05-14 14:05:00) [10]ага, слышал звон да не знаю где он
MonoLife (2010-05-14 13:37:00) [11]
> Просматривать - чем удобнее, например TMemo.
У него, кажись, ограничения есть на количество строк или символов, чет не помню..
han_malign (2010-05-14 13:33:00) [12]а "Компонента" - женского...
Демо (2010-05-14 13:20:00) [13]
> З.З.Ы. Может вам сразу Компоненту - которая решает все типовые
> школьные задачи?
Слово "Компонент" мужского рода.
Демо (2010-05-14 13:19:00) [14]
> Какой компонентой и как лучше открыть файл , и как лучше
> просматривать строки длинее 255 символов.
Читаешь стандартным способом -ReadLn.
Просматривать - чем удобнее, например TMemo.
Anatoly Podgoretsky (2010-05-14 13:02:00) [15]> Игорек (14.05.2010 12:15:00) [0]
1. Точно также как и меньше 100 мб, с помощью ReadLn - ей до лампочки твой
размер, она дело имеет со строкой.
2. Не делай строки, типа ShortString, используй длинные Ansi/UnicodeString
han_malign (2010-05-14 12:59:00) [16]
> TFileStream
- ну тогда объясняй ему и что такое - CR LF, скользящий буфер, et cetera, et cetera, et cetera...
RWolf (2010-05-14 12:56:00) [17]открывать/сохранять — TFileStream.
han_malign (2010-05-14 12:56:00) [18]500Mb - халява - целиком в память влезет...
Вот, конечно, это заведомо " длин нее 255 символов"...
Хотя возникает у меня смутное подозрение, что это задание на использование: AssignFile/(Reset/Append/Rewrite)/(ReadLn/WriteLn)/CloseFile... ([F1]: Text type)
З.Ы. А длинные строки появились уже в D2.
З.З.Ы. Может вам сразу Компоненту- которая решает все типовые школьные задачи?
RWolf (2010-05-14 12:50:00) [19]http://ru.wikipedia.org/wiki/Алгоритм_Бойера_—_Мура_—_Хорспула