Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

можноли работать с текстовым файлом как с Tstrings? [D7, WinXP]


Страницы:   1 2

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


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо