Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.20;
Скачать: CL | DM;

Вниз

можноли работать с текстовым файлом как с Tstrings?   Найти похожие ветки 

 
mikeee   (2005-02-03 15:27) [0]

Прошу помощи! У меня есть текстовый файл, можноли по аналогии с Tstrings написать что то вроде f.lines[4]:="qwe",(при этом не загружая файл в memo, listbox и.т.д.);
и второй вопрос: как мне узнать какой символ находится во второй строке, седьмой слева, в том же файле (аналогия с cells[7,2]).


 
Александр Иванов ©   (2005-02-03 15:29) [1]

Использовать TStringList.


 
mikeee   (2005-02-03 15:32) [2]

>>Использовать TStringList.
?????


 
Jay1982 ©   (2005-02-03 15:35) [3]


var
 var_txt: TStrings;

var_txt := TStringList.Create;
var_txt.LoadFromFile...;
var_txt.Free;


 
Fay ©   (2005-02-03 15:36) [4]

ReadLn


 
Александр Иванов ©   (2005-02-03 15:38) [5]

И что значат эти вопросы?

with TStringList.Create do
begin
  try
    LoadFromFile("c:\autoexec.bat");
    if Count>0 then
      ShowMessage(Strings[0]);
  finally
    Free;
  end;
end;


 
mikeee   (2005-02-03 15:42) [6]

не используя loadfromfile;

assignfile(f,"");
reset(f);
что находится в[4,7]? как узнать?
close(f);


 
Александр Иванов ©   (2005-02-03 15:44) [7]

mikeee   (03.02.05 15:42) [6]
Последовательно считывать методом ReadLn.


 
Jay1982 ©   (2005-02-03 15:44) [8]

Ну тогда разве-что в цикле читать до конца файли стринги и присваивать строкам ТСтринг


 
mikeee   (2005-02-03 15:50) [9]

а если я точно знаю номер сторки и символа, неужели мне придётся всё до него(символа) читать?


 
Jay1982 ©   (2005-02-03 15:54) [10]

mikeee   (03.02.05 15:50) [9]
Естественно!
Раз мёд так хочешь сразу и ложкой :)


 
Александр Иванов ©   (2005-02-03 15:55) [11]

mikeee   (03.02.05 15:50) [9]
Да, придется, и придется еще много литературы читать, если не знаете таких элементарных вещей.


 
Ega23 ©   (2005-02-03 15:59) [12]

а если я точно знаю номер сторки и символа, неужели мне придётся всё до него(символа) читать?

Можно сделать и по-другому.
1. Ищем самую длинную строку.
2. Объявляем array[1..Длина_Самой_Длинной_Строки, 1..Количество_Строк] of Char;
3. Заполняем данный массив (если длина i-й строки короче Длины_Самой_Длинной_Строки, то дополняем пробелами).
4. Получаем значение [7,2].

Только вот проблема в том, что это через жопу. А правильный ответ - см.[1]


 
Ega23 ©   (2005-02-03 15:59) [13]

а если я точно знаю номер сторки и символа, неужели мне придётся всё до него(символа) читать?

Можно сделать и по-другому.
1. Ищем самую длинную строку.
2. Объявляем array[1..Длина_Самой_Длинной_Строки, 1..Количество_Строк] of Char;
3. Заполняем данный массив (если длина i-й строки короче Длины_Самой_Длинной_Строки, то дополняем пробелами).
4. Получаем значение [7,2].

Только вот проблема в том, что это через жопу. А правильный ответ - см.[1]


 
mikeee   (2005-02-03 16:14) [14]

объясняю ситуацию: надо отсортировать двумерный массив по возрастанию, по убыванию, по спирали. Массив хранится в файле с N строками по M символов, числа имеют k знаков(при k=3- 123 463 005 итд) и записаны через пробел. 10<M<1000000,10<N<1000000.
и программа должна работать быстро! Если буду использовать loadfromfile , savetofile, то повремени не уложусь, а хочется чтобы всё было быстро и просто как со stringgridом (stringgrig.cells[34,54]);


 
Александр Иванов ©   (2005-02-03 16:16) [15]

(при k=3- 123 463 005 итд) - вот это не понял
И все таки уточните тип элементов массива.


 
Ega23 ©   (2005-02-03 16:19) [16]

и программа должна работать быстро! Если буду использовать loadfromfile , savetofile, то повремени не уложусь, а хочется чтобы всё было быстро и просто как со stringgridом (stringgrig.cells[34,54]);

Ошибаешься. Если ты его загрузишь в виртуальную память, там его отсортируешь, а потом запишешь обратно, то это будет ГОРАЗДО быстрее, чем сортировать непосредственно в файле.

Да и нельзя так с файлом работать.


 
mikeee   (2005-02-03 16:22) [17]

спасибо


 
Владислав ©   (2005-02-03 16:39) [18]

... в файле с N строками по M символов...
... 10<M<1000000,10<N<1000000...


Т.е. потенциально, размер файла может быть 930 ГБ?!
Такой лучше в память не грузить :о)


 
Ega23 ©   (2005-02-03 16:41) [19]

Такой лучше в память не грузить :о)

Боюсь, такой винт ещё надо постараться найти...


 
Александр Иванов ©   (2005-02-03 16:44) [20]

Ega23 ©   (03.02.05 16:41) [19]
Да, я таких не видел :).
А интересно, что за данные?


 
Ega23 ©   (2005-02-03 16:57) [21]

2 Александр Иванов ©   (03.02.05 16:44) [20]
А интересно, что за данные?

Да что угодно может быть. Ели мне не изменяет память, так называемая в гео-физике "вибрация" и "акустика" когда пишется - дофига места занимает. А может нейтроны под котлом реактора считают...


 
Alx2 ©   (2005-02-03 17:05) [22]

>mikeee   (03.02.05 16:14) [14]

Посмотри Memory Mapped Files. Имхо, для твоей задачи подходит оптимально


 
Anatoly Podgoretsky ©   (2005-02-03 23:05) [23]

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 террабайт, если я правильно понял его "объяснение"



Страницы: 1 вся ветка

Текущий архив: 2005.02.20;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.047 c
4-1104840564
Xattab
2005-01-04 15:09
2005.02.20
Использование функции LockFileEx


14-1107157517
syte_ser78
2005-01-31 10:45
2005.02.20
KMP в Харькове


1-1107778346
-= Demon =-
2005-02-07 15:12
2005.02.20
Как определить, что файл записан на диск полностью


1-1107764733
Dmitriy A
2005-02-07 11:25
2005.02.20
злобная формула


3-1106054341
Russko
2005-01-18 16:19
2005.02.20
Гетерогенный запрос