![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
можноли работать с текстовым файлом как с Tstrings? [D7, WinXP]
mikeee © (2005-02-03 15:27:00)Прошу помощи! У меня есть текстовый файл, можноли по аналогии с Tstrings написать что то вроде f.lines[4]:='qwe',(при этом не загружая файл в memo, listbox и.т.д.);
и второй вопрос: как мне узнать какой символ находится во второй строке, седьмой слева, в том же файле (аналогия с cells[7,2]).
Anatoly Podgoretsky (2005-02-03 23:05:00) [1]Ega23 © (03.02.05 15:59) [12]
1. Ищем самую длинную строку.
2. Объявляем array[1..Длина_Самой_Длинной_Строки, 1..Количество_Строк] of Char;
Зачем? Нормальное определение array of array char, или array of string
Ega23 © (03.02.05 16:41) [19]
Нет проблем, особенно если знать что такое RAID 0
Владислав © (03.02.05 16:39) [18]
А мне кажется порядка 4 террабайт, если я правильно понял его "объяснение"
Alx2 (2005-02-03 17:05:00) [2]> mikeee (03.02.05 16:14) [14]
Посмотри Memory Mapped Files. Имхо, для твоей задачи подходит оптимально
Ega23 (2005-02-03 16:57:00) [3]2 Александр Иванов © (03.02.05 16:44) [20]
А интересно, что за данные?
Да что угодно может быть. Ели мне не изменяет память, так называемая в гео-физике "вибрация" и "акустика" когда пишется - дофига места занимает. А может нейтроны под котлом реактора считают...
Александр Иванов (2005-02-03 16:44:00) [4]Ega23 © (03.02.05 16:41) [19]
Да, я таких не видел :).
А интересно, что за данные?
Ega23 (2005-02-03 16:41:00) [5]Такой лучше в память не грузить :о)
Боюсь, такой винт ещё надо постараться найти...
Владислав (2005-02-03 16:39:00) [6]... в файле с N строками по M символов...
... 10<M<1000000,10<N<1000000...
Т.е. потенциально, размер файла может быть 930 ГБ?!
Такой лучше в память не грузить :о)
mikeee (2005-02-03 16:22:00) [7]спасибо
Ega23 (2005-02-03 16:19:00) [8]и программа должна работать быстро! Если буду использовать loadfromfile , savetofile, то повремени не уложусь, а хочется чтобы всё было быстро и просто как со stringgridом (stringgrig.cells[34,54]);
Ошибаешься. Если ты его загрузишь в виртуальную память, там его отсортируешь, а потом запишешь обратно, то это будет ГОРАЗДО быстрее, чем сортировать непосредственно в файле.
Да и нельзя так с файлом работать.
Александр Иванов (2005-02-03 16:16:00) [9](при k=3- 123 463 005 итд) - вот это не понял
И все таки уточните тип элементов массива.
mikeee (2005-02-03 16:14:00) [10]объясняю ситуацию: надо отсортировать двумерный массив по возрастанию, по убыванию, по спирали. Массив хранится в файле с N строками по M символов, числа имеют k знаков(при k=3- 123 463 005 итд) и записаны через пробел. 10<M<1000000,10<N<1000000.
и программа должна работать быстро! Если буду использовать loadfromfile , savetofile, то повремени не уложусь, а хочется чтобы всё было быстро и просто как со stringgridом (stringgrig.cells[34,54]);
Ega23 (2005-02-03 15:59:00) [11]а если я точно знаю номер сторки и символа, неужели мне придётся всё до него(символа) читать?
Можно сделать и по-другому.
1. Ищем самую длинную строку.
2. Объявляем array[1..Длина_Самой_Длинной_Строки, 1..Количество_Строк] of Char;
3. Заполняем данный массив (если длина i-й строки короче Длины_Самой_Длинной_Строки, то дополняем пробелами).
4. Получаем значение [7,2].
Только вот проблема в том, что это через жопу. А правильный ответ - см.[1]
Ega23 (2005-02-03 15:59:00) [12]а если я точно знаю номер сторки и символа, неужели мне придётся всё до него(символа) читать?
Можно сделать и по-другому.
1. Ищем самую длинную строку.
2. Объявляем array[1..Длина_Самой_Длинной_Строки, 1..Количество_Строк] of Char;
3. Заполняем данный массив (если длина i-й строки короче Длины_Самой_Длинной_Строки, то дополняем пробелами).
4. Получаем значение [7,2].
Только вот проблема в том, что это через жопу. А правильный ответ - см.[1]
Александр Иванов (2005-02-03 15:55:00) [13]mikeee (03.02.05 15:50) [9]
Да, придется, и придется еще много литературы читать, если не знаете таких элементарных вещей.
Jay1982 (2005-02-03 15:54:00) [14]mikeee (03.02.05 15:50) [9]
Естественно!
Раз мёд так хочешь сразу и ложкой :)
mikeee (2005-02-03 15:50:00) [15]а если я точно знаю номер сторки и символа, неужели мне придётся всё до него(символа) читать?
Jay1982 (2005-02-03 15:44:00) [16]Ну тогда разве-что в цикле читать до конца файли стринги и присваивать строкам ТСтринг
Александр Иванов (2005-02-03 15:44:00) [17]mikeee (03.02.05 15:42) [6]
Последовательно считывать методом ReadLn.
mikeee (2005-02-03 15:42:00) [18]не используя loadfromfile;
assignfile(f,'');
reset(f);
что находится в[4,7]? как узнать?
close(f);
Александр Иванов (2005-02-03 15:38:00) [19]И что значат эти вопросы?
with TStringList.Create do
begin
try
LoadFromFile('c:\autoexec.bat');
if Count>0 then
ShowMessage(Strings[0]);
finally
Free;
end;
end;
Fay (2005-02-03 15:36:00) [20]ReadLn