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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.11.2009, 22:44   #1
Baaandit
Заблокирован
 
Регистрация: 10.11.2009
Сообщений: 99
По умолчанию Ini файл

Необходимо хранить информацию из любого файла и сохранять в ini.Работает-только не записываются файлы свыше примерно 1.8 мбайт и выше-программа выдает ошибку. Возможно ли это как-то исправить?
Baaandit вне форума Ответить с цитированием
Старый 22.11.2009, 22:51   #2
vasek123
Заблокирован
 
Регистрация: 21.11.2008
Сообщений: 4,986
Сообщение

А исходник можно?

p.s. Насколько я знаю в ini- файлах можно сохранять пользовательские настройки(значения переменных или констант там уже не сохранишь...).

Последний раз редактировалось vasek123; 22.11.2009 в 22:55.
vasek123 вне форума Ответить с цитированием
Старый 22.11.2009, 22:55   #3
Usov
Форумчанин
 
Аватар для Usov
 
Регистрация: 29.09.2009
Сообщений: 228
По умолчанию

ini файл не предназначен для хранения файлов, может речь идет о хранении содержимого файлов? Если так то может проще разработать свою структуру контейнера для файлов или использовать файловые потоки.
Usov вне форума Ответить с цитированием
Старый 22.11.2009, 22:58   #4
Baaandit
Заблокирован
 
Регистрация: 10.11.2009
Сообщений: 99
По умолчанию

Вот две процедуры основные.

Код:
procedure TForm2.lOAD;
var
  ini: TIniFile;
begin
  ini := TIniFile.Create(ChangeFileExt(ParamStr(0),'.ini'));
  ini.ReadSections( listbox1.Items );
  FreeAndNil(ini);
end;

 procedure TForm2.import;
 var
  ini: TIniFile;
  fs: TFileStream;
  s2:string;
begin
TRY
  if OpenDialog1.Execute then
                           begin
    fs := TFileStream.Create(OpenDialog1.FileName,fmOpenRead,fmShareDenyWrite);
    ini := TIniFile.Create(ChangeFileExt(ParamStr(0),'.ini'));

s2:=inttostr(ReadInforFILE(OpenDialog1.FileName).Size)+' áàéòa';
if  ((ReadInforFILE(OpenDialog1.FileName).Size)>1024)
                                         then
                                              begin
                                              s2:=floattostr(roundto(ReadInforFILE(OpenDialog1.FileName).Size/1024,-3))+' Êáàéò';
                                              end;
if  ((ReadInforFILE(OpenDialog1.FileName).Size)>sqr(1024))
                                         then
                                              begin
                                              s2:=floattostr(roundto(ReadInforFILE(OpenDialog1.FileName).Size/sqr(1024),-3))+' Ìáàéò';
                                              end;

    ini.WriteString(ExtractFileName(OpenDialog1.FileName),'datainbaze',datetimetoStr(now));
    ini.WriteString(ExtractFileName(OpenDialog1.FileName),'createdate',DateTimeToStr(ReadInforFILE(OpenDialog1.FileName).CreateDate));
    ini.WriteString(ExtractFileName(OpenDialog1.FileName),'Size',s2);
    ini.WriteBinaryStream( ExtractFileName(OpenDialog1.FileName), 'data', fs );
    FreeAndNil(ini);
    FreeAndNil(fs);
    Load;
                            end;
Да речь идет о хранение содержимого файлов. Как можно реализовать эту структуру?

Последний раз редактировалось Stilet; 23.11.2009 в 10:02.
Baaandit вне форума Ответить с цитированием
Старый 22.11.2009, 23:11   #5
Usov
Форумчанин
 
Аватар для Usov
 
Регистрация: 29.09.2009
Сообщений: 228
По умолчанию

Пиши в файловые потоки самого ini файла, а в ini файле храни имена потоков. Такой вариант не совсем красивый так как работает только на NTFS и при записи файла в файловый пото не отображает реальный размер файла контейнера.
Usov вне форума Ответить с цитированием
Старый 22.11.2009, 23:13   #6
vasek123
Заблокирован
 
Регистрация: 21.11.2008
Сообщений: 4,986
Сообщение

Цитата:
Сообщение от Baaandit Посмотреть сообщение
Вот две процедуры основные.

Код:
procedure TForm2.lOAD;
var
  ini: TIniFile;
begin
  ini := TIniFile.Create(ChangeFileExt(ParamStr(0),'.ini'));
  ini.ReadSections( listbox1.Items );{а где переменная куда будут считываться данные? Обычно, данные читаются из ini- файла...}
  FreeAndNil(ini);
end;

 procedure TForm2.import;
 var
  ini: TIniFile;
  fs: TFileStream;
  s2:string;
begin
TRY
  if OpenDialog1.Execute then
                           begin
    fs := TFileStream.Create(OpenDialog1.FileName,fmOpenRead,fmShareDenyWrite);
    ini := TIniFile.Create(ChangeFileExt(ParamStr(0),'.ini'));{а почему только расширение файла}

s2:=inttostr(ReadInforFILE(OpenDialog1.FileName).Size)+' áàéòa';
if  ((ReadInforFILE(OpenDialog1.FileName).Size)>1024)
                                         then
                                              begin
                                              s2:=floattostr(roundto(ReadInforFILE(OpenDialog1.FileName).Size/1024,-3))+' Êáàéò';
                                              end;
if  ((ReadInforFILE(OpenDialog1.FileName).Size)>sqr(1024))
                                         then
                                              begin
                                              s2:=floattostr(roundto(ReadInforFILE(OpenDialog1.FileName).Size/sqr(1024),-3))+' Ìáàéò';
                                              end;

    ini.WriteString(ExtractFileName(OpenDialog1.FileName),'datainbaze',datetimetoStr(now));
    ini.WriteString(ExtractFileName(OpenDialog1.FileName),'createdate',DateTimeToStr(ReadInforFILE(OpenDialog1.FileName).CreateDate));
    ini.WriteString(ExtractFileName(OpenDialog1.FileName),'Size',s2);
    ini.WriteBinaryStream( ExtractFileName(OpenDialog1.FileName), 'data', fs );
    FreeAndNil(ini);
    FreeAndNil(fs);
    Load;
                            end;

В общем ошибок туча...
vasek123 вне форума Ответить с цитированием
Старый 22.11.2009, 23:14   #7
Baaandit
Заблокирован
 
Регистрация: 10.11.2009
Сообщений: 99
По умолчанию

Вот ехе программы-посмотрите.
Вложения
Тип файла: rar Password.rar (238.7 Кб, 12 просмотров)

Последний раз редактировалось Baaandit; 22.11.2009 в 23:37.
Baaandit вне форума Ответить с цитированием
Старый 23.11.2009, 10:06   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
информацию из любого файла и сохранять в ini
Предлагаю такой вариант:
Код:
var i:TIniFile;m:TFileStream;
begin
 i:=TIniFile.Create('c:\temp\q');
  if OpenDialog1.Execute then begin
   m:=TFileStream.Create(OpenDialog1.FileName,fmOpenRead);
   i.WriteBinaryStream('all',ExtractFileName(OpenDialog1.FileName),m);
   m.Free;
  end;
 i.Free;
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.11.2009, 14:30   #9
Baaandit
Заблокирован
 
Регистрация: 10.11.2009
Сообщений: 99
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Предлагаю такой вариант:
Код:
var i:TIniFile;m:TFileStream;
begin
 i:=TIniFile.Create('c:\temp\q');
  if OpenDialog1.Execute then begin
   m:=TFileStream.Create(OpenDialog1.FileName,fmOpenRead);
   i.WriteBinaryStream('all',ExtractFileName(OpenDialog1.FileName),m);
   m.Free;
  end;
 i.Free;
end;
Работает только с файлами не большого размера.С большими файлами выдает ошибку.
Изображения
Тип файла: jpg 11.jpg (61.7 Кб, 75 просмотров)
Baaandit вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TShortCut и INI-файл Sd.Ghost Общие вопросы Delphi 4 07.04.2011 22:32
ini файл cheef Общие вопросы Delphi 5 28.04.2009 07:36
ini Файл Volkogriz Общие вопросы Delphi 1 12.11.2008 13:44
Подскажите по Ini файл Михаил Юрьевич Общие вопросы Delphi 14 28.06.2008 21:12
ini файл Simply-Art Общие вопросы Delphi 3 17.06.2007 14:43