Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.06.2009, 15:25   #1
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию Где можно почитать...

...о работе Дельфи с архивами (Zip или Rar) и о работе с файлами не txt типа?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 06.06.2009, 15:28   #2
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Что значит файлы не txt?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 06.06.2009, 16:01   #3
Ntlegend
Форумчанин
 
Аватар для Ntlegend
 
Регистрация: 12.05.2007
Сообщений: 373
По умолчанию

для работы с архивами почитай на офф сайте winrar у них там есть спецыально для этого библиотека.. а с какими файлами ты еще хочешь работать?? что именно с них получать?? посмотри тут неплохая подборочка того шо тебе нада
Перемен! - требуют наши сердца. Перемен! - требуют наши глаза.
В нашем смехе и в наших слезах, И в пульсации вен:
"Перемен!Мы ждем перемен!"
Ntlegend вне форума Ответить с цитированием
Старый 06.06.2009, 19:03   #4
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Ntlegend, ценю юмор.
Utkin, не txt, я имею ввиду файлы с любым расширением (например .dat), чтоб читать их построчно (как txt).
Например flocal.dat:
"234 546 4443
5564 34 3334"

Я так понимаю при помощи дельфи нельзя считать содержимое Zipованного файла не распаковывая?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 06.06.2009, 19:10   #5
BaronTreep
Форумчанин
 
Регистрация: 29.05.2009
Сообщений: 320
По умолчанию

Цитата:
чтоб читать их построчно (как txt).Например flocal.dat:
Читать построчно можно хоть exe (да и записывать). По старинке, по паскалевски:
Код:
var
  f : TextFile; //Или просто file, или компонентный file of...
...
AssignFile(f, 'file.trr');  //Открываем что угодно
Reset(f);
Read(f, Str);
ReadLn(f, Str2);
...
CloseFile(f);
BaronTreep вне форума Ответить с цитированием
Старый 06.06.2009, 19:49   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от BaronTreep
Читать построчно можно хоть exe (да и записывать).
"-Эти ягоды можно есть?
- Можно! Только отравишься!" (c) Спортлото-82
Можно читать. Только не прочитается. Можно и писать. Вот только не факт, что запишется то, что Вы туда пишите!

для работы с бинарными файлами надо использовать либо нетипизированные файлы, либо file of byte (file of char) — иначе проблемы гарантированы.

Alex Cones, поймите, что прочитать Вы можете ЛЮБОЙ файл (ну, если к нему есть доступ, конечно).
Но что Вы будете делать с его содержимым - вот в чём вопрос! Т.е., НЕЗАВИСИМО от расширения файла, в нём реально может находится всё что угодно (что в него заложили создатели этого файла.) Если Ваш .DAT файл текстовый, то можете читать его как обычный текстовый файл (смотри код выше от BaronTreep)

Прочитать архив можно. Но вот получить список (или содержимое) запакованных в этом архиве файлов можно только распаковав архив (вариантов много, в зависимости от типа архива, есть компоненты/библиотеки. на крайний случай - скрытый запуск консольного архиватора с подставленной командной строкой).

p.s. для работы с файлами в Дельфи есть компонента TFileStream — очень рекомендую. Всё эффективно и просто к понимаю/использованию.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 06.06.2009, 19:51   #7
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Хм. Работает. Что-то я раньше попробовал, не запускалось, ну и забросил это дело. Спасибо. А как насчет файлов в архиве? Можно ли их считать, не распаковывая архив? (А то есть текстовый файл около 5 мб, его нужно считать, ежели его послать в архив, то размер может на 90% уменьшиться. Все экономия)

TFileStrem? А где можно книжицу про него прочитать? Хотелось бы все тонкости разнюхать.


Цитата:
Можно читать. Только не прочитается
По крайней мере этот:
Код:
procedure TForm1.Button1Click(Sender: TObject);
Var
 F:TextFile;
 S:String;
begin
 AssignFile(F,'Project14.dpr');
 Reset(F);
 While not Eof(F) do
  Begin
   Readln(F,S);
   Memo1.Lines.Add(S);
  End;
 CloseFile(F);
end;
код работает.


Цитата:
можно только распаковав архив
Но ведь если создать 2-х гиговый архив (зип) и посмотреть на него сквозь "проводник", можно пооткрывать, почитать эти файлы, не распаковывая всю кучу.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ

Последний раз редактировалось Alex Cones; 06.06.2009 в 20:00.
Alex Cones вне форума Ответить с цитированием
Старый 06.06.2009, 20:13   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

так и должно быть.
Project14.dpr - это текстовый файл (отройте файлик, например, в стандартном блокноте.)

Цитата:
2-х гиговый архив (зип) и посмотреть на него сквозь "проводник", можно пооткрывать, почитать эти файлы, не распаковывая всю кучу.
да щас! я уверен, что Винда распаковывает нужный файл "на лету" (думаю, что в TEMP директорию - но это несложно проверить).

TFileStrem обратите внимание - уже пропустили буковку!
почитать... читайте
Serge_Bliznykov вне форума Ответить с цитированием
Старый 06.06.2009, 21:38   #9
BaronTreep
Форумчанин
 
Регистрация: 29.05.2009
Сообщений: 320
По умолчанию

А как же zlib.pas? входит в стандартную библиотеку Дельфи (иногда только в откомпилированном виде dcu). Предназначен для работы (деархивирования/архивирования) с архивами.

Код:
uses ...Zlib;

procedure ExportToZStrem(OutputFile: TFileStream);
var
   i : integer;
   dtSize : Integer;
   currPosition : Integer;
   cmpStream : TCompressionStream;
   memStream : TMemoryStream;
   memCmpStream : TMemoryStream;
   SavedCursor : TCursor;
begin
 ...
 memStream := TMemoryStream.Create;
 memCmpStream := TMemoryStream.Create;
 cmpStream := TCompressionStream.Create(clMax, memCmpStream);
 SavedCursor := Cursor;
 Cursor := crSQLWait;
 try
   memStream.Write('...',SizeOf('...'));
   memStream.Position := 0;
   cmpStream.CopyFrom(memStream, memStream.Size); // Сжать в файл
   FreeAndNil(cmpStream);
   dtSize := memCmpStream.Size;
   OutputFile.Write(dtSize, SizeOf(dtSize));
   memCmpStream.Position := 0;
   OutputFile.CopyFrom(memCmpStream, dtSize);
 finally
   ...
   if Assigned(memStream) then FreeAndNil(memStream);
   if Assigned(memCmpStream) then FreeAndNil(memCmpStream);
   if Assigned(cmpStream) then FreeAndNil(cmpStream);
   ...
 end;
end;
BaronTreep вне форума Ответить с цитированием
Старый 07.06.2009, 18:27   #10
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Сообщение от Alex Cones Посмотреть сообщение
Но ведь если создать 2-х гиговый архив (зип) и посмотреть на него сквозь "проводник", можно пооткрывать, почитать эти файлы, не распаковывая всю кучу.
Для просмотра содержимого архива он все равно распаковывается (не весь) так построены алгоритмы упакования (не распаковывания) файлов. Иными словами - если Вы хотите совершить некоторое действие над архивом (имеются ввиду операции с содержимым архива) Вы должны его распаковать (возможно частично).
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
где можно найти скрипт ? combays PHP 4 03.12.2008 19:16
Где можно найти TRotateForm? Aboltus Компоненты Delphi 2 31.07.2008 10:06