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

Вниз

Как обратиться к заархивированному файлу   Найти похожие ветки 

 
AndreySoft   (2003-09-03 00:41) [0]

У меня такой вопрос: Например, есть какой-то текстовый файл 1.txt в нём находится некоторое количество строк. Программно считать из этого файла строки например в компонент RichEdit1 можно таким образом:
...
AssignFile(F, "1.txt");
Reset(F);
while not EOF(F) do
begin
Readln(F, S);
RichEdit1.Lines.Add(S);
end;
CloseFile(F);

...
Меня же интересует как обратиться к этому же файлу предварительно его упаковав, и вообще возможно ли такое?


 
Zergling   (2003-09-03 05:58) [1]

В FAQ или статьях есть пример использования UnRar.DLL. А в кладовке кажися гдето есть простенький алгоритм паковки.


 
Song   (2003-09-03 08:31) [2]


> ...
> AssignFile(F, "1.txt");
> Reset(F);
> while not EOF(F) do
> begin
> Readln(F, S);
> RichEdit1.Lines.Add(S);
> end;
> CloseFile(F);
> ...


:)

RichEdit1.Lines.LoadFromFile("1.txt");


 
Song   (2003-09-03 08:31) [3]


> ...
> AssignFile(F, "1.txt");
> Reset(F);
> while not EOF(F) do
> begin
> Readln(F, S);
> RichEdit1.Lines.Add(S);
> end;
> CloseFile(F);
> ...


:)

RichEdit1.Lines.LoadFromFile("1.txt");


 
AndreySoft   (2003-09-03 10:35) [4]

>Song ©
Ну, и зачем мне надо было узазывать на то, что загрузить текстовый файл можно одной строчкой. Вы решили меня этим удивить? А мне не сгодится такой вариант, т.к. я считываю не весь файл, а пока не встретится определённая строка. Может научите одной строкой осуществить такую операцию?


 
Palladin   (2003-09-03 10:37) [5]

Что то не видно тут у тебя что ты до определенной строки считываешь.


 
AndreySoft   (2003-09-03 10:42) [6]

А вот так видно?

...
AssignFile(F, "1.txt");
Reset(F);
while not EOF(F) do
begin
Readln(F, S);
RichEdit1.Lines.Add(S);
if S="Всё что написано дальше, не читать" then begin
CloseFile(F); exit; end;
end;
CloseFile(F);
end;

...


 
Palladin   (2003-09-03 10:49) [7]

Так видно, очень даже. Просто детализировать в начале надо, а не в конце. Маленький совет: досрочный выход из цикла можно осуществить посредством break; тогда
if S="Всё что написано дальше, не читать" then begin
CloseFile(F); exit; end;

превращается в
if S="Всё что написано дальше, не читать" then break;
что является более корректным и избавит от последующей, трудно уловимой для начинающих, ошибки, когда вставляешь операторы после CloseFile(F), а они не исполняются.
По поводу чтения из архивов. Ну я скажу так: есть два способа. Читатать и распаковывать на лету или же пользоватся внешними утилитами для разархивации в какой-нибудь временный файл. После чтения его можно будет удалить. Второй вариант попроще. Хотя кому как. Первый вариант можно осуществить использованием компонента ZipTV. Ищи. По моему есть на www.torry.net


 
AndreySoft   (2003-09-03 10:53) [8]

OK! Спасибо!


 
AndreySoft   (2003-09-03 10:53) [9]

OK! Спасибо!


 
Андрей Сенченко   (2003-09-03 11:09) [10]

Palladin © (03.09.03 10:49) [7]

Стоит наверное упомянуть, что ZipTV - платный набор компонентов.
И использование его фриварной версии имеет определенные ограничения.
Можно конечно найти кряк, но именно в этом случае это ну очень нехорошо по отношению к разработчикам. Уж очень приятный набор.

Song © (03.09.03 08:31) [3]

Давно хотел спросить:
А в чем разница между

RichEdit1.Lines.LoadFromFile("1.txt");

и

AssignFile(F, "1.txt");
...
CloseFile(F);


Кроме того, что LoadFromFile - это фактически LoadFromStream ( по исходникам ). Использование или неиспользование FileStream - так ли уж существенно при элементарных операциях типа заполнения полей RichEdit-а и прочих компонентов.


 
Palladin   (2003-09-03 11:16) [11]


> Андрей Сенченко © (03.09.03 11:09) [10]

Угу, просто я натыкался на старую версию, она помоему тогда еще бесплатной была.


> А в чем разница между

Разница в количестве написанного кода :) Вот именно в таком случае, когда нужно читать не все, LoadFromFile не пройдет. А так этот метод за счет именно FileRead и фактически примитивного парсинга на строки читает быстрей чем Readln. Но на копейки. Даже на сотые доли копеек. А для чтения огромных массивов текста это, даже можно сказать, вредно. Ибо это уже издевательство на машиной и пользователем. При больших файлах оптимальней читать в память фрагментами. А еще лучше при первом проходе по файлу создать индекс строк и при последующем чтении уже работать с индексом для доступа к строкам.



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

Форум: "Основная";
Текущий архив: 2003.09.15;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.017 c
1-48571
RIPer
2003-09-04 11:21
2003.09.15
Печать документа Word


6-48676
MegaVolt
2003-04-25 15:53
2003.09.15
Как найти зашаренные ресурсы с $ например Temp$ ?


1-48520
Kolich
2003-09-02 15:15
2003.09.15
Кто нибудь имеет код, реализующий алгоритм водораздела(Watershed)


6-48666
Виль
2003-07-13 14:53
2003.09.15
FTP- сервер на ПК ответ на модемное диалаповское соединение.


3-48472
Ru
2003-08-26 12:42
2003.09.15
Оптимальное использование базы данных





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский