Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.02.20;
Скачать: [xml.tar.bz2];

Вниз

можноли работать с текстовым файлом как с 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.027 c
4-1104108081
XProger
2004-12-27 03:41
2005.02.20
Две мышки


4-1104684139
xAnjel
2005-01-02 19:42
2005.02.20
как по ProcessHandle получить ProcessID


14-1107249320
Ozone
2005-02-01 12:15
2005.02.20
Настройка маршрутизаторов (Cisco)


3-1106415836
Mortal
2005-01-22 20:43
2005.02.20
Вопрос про Rave Reports


1-1107366366
td
2005-02-02 20:46
2005.02.20
access violation in module IDPDX32.DLL





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский