Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сохранение/чтение данных проги в файл, Какой файл нужно для этого использовать 
:(
    Опции темы
Drizhenko
Дата 11.1.2006, 07:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 13.1.2005

Репутация: нет
Всего: нет



Моя прога использует определенные данные, которые по умолчанию вбиты в текстовые поля. Как сделать так, чтобы если пользователь внес изменения в эти поля, поставил свои значения, то при следующем запуске программа запускалась с этими значениями. Наверное, нужно использовать какойнибудь файл. Куда будут вноситься изминения. Подскажите как это можно сделать. И какой тип файла для этого можно использовать?
PM MAIL   Вверх
chaos
Дата 11.1.2006, 08:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: нет
Всего: 44



как вариант если полей не много то можно использовать реестр
ну а если много то можно использовать ini файлы

Это сообщение отредактировал(а) chaos - 11.1.2006, 08:13
PM WWW   Вверх
~FoX~
Дата 11.1.2006, 09:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 13
Всего: 68



А если очень много, то использовать БД smile


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Albinos_x
Дата 11.1.2006, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 26
Всего: 108



Цитата(chaos @ 11.1.2006, 08:10 Найти цитируемый пост)

как вариант если полей не много то можно использовать реестр
ну а если много то можно использовать ini файлы

или обычный текстовый файл...


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Drizhenko
Дата 11.1.2006, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 13.1.2005

Репутация: нет
Всего: нет



Полей не много. Тогда у меня возникает следующий вопрос. Читал инфу про .inf файлы, выяснил что они предназначены для инсталяции оборудования, а ini файлы то же самое что .inf. Так ли это? И еще раньше пробовал через текстовые файлы делать, но как от туда извлекать инфу? Например нужно прочитать десятый символ в пятой строке?
PM MAIL   Вверх
Albinos_x
Дата 11.1.2006, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 26
Всего: 108



Цитата
Например нужно прочитать десятый символ в пятой строке?

Код
...
Readln(f,s);
if length(s)>10 then
   Simvol10:=s[10]
   else
   Simvol10:='' ;
...



--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Drizhenko
Дата 11.1.2006, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 13.1.2005

Репутация: нет
Всего: нет



Если я правильно понял, то будет читать просто десятый символ. А как насчет пятой строки???
PM MAIL   Вверх
Albinos_x
Дата 11.1.2006, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 26
Всего: 108



Цитата(Drizhenko @ 11.1.2006, 11:22 Найти цитируемый пост)

А как насчет пятой строки???

самый простой способ:
Код
...    
reset(f);
for i:=0 to 4 do
   Readln(f,s);
stroka5:=s;



--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Guedda
Дата 11.1.2006, 11:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 14
Всего: 78



Вообще лажа все.
Лучше пользоваться ini-файлами. Делается это следующим образом.
Пример: Необходимо запомнить, где находится окно приложения и при следующем запуске программы установить окно в позицию при закрытии. Это делается очень просто:
Код

uses
  ...,IniFiles,... //подключаем модуль для работы с ini файлами

...

procedure TForm1.FormCreate(Sender : Tobject); //Здесь вытаскиваются из файла данные по расположению.
var
  IniFile : TIniFile;
begin
  IniFile := TIniFile.Create('MyIniFile.ini'); //пытаемся подгрузить файл
  Form1.Left := IniFile.ReadInteger('POSITION', 'Left', 100); //если такого параметра нет, то по умолчанию стоит 100 пикс.
  Form1.Top := IniFile.ReadInteger('POSITION', 'Top', 100); //то же самое
  IniFile.Free; //освобождаем
end;

...

procedure TForm1.FormDestroy(Sender : TObject); //здесь мы будем сохранять позицию
var
  IniFile : TIniFile;
begin
  IniFile := TIniFile.Create('MyIniFile.ini');
  IniFile.WriteInteger('POSITION', 'Left', Form1.Left); //записываем левый параметр
  IniFile.WriteInteger('POSITION', 'Top', Form1.Top); //записываем верхний параметр
  IniFile.Free; //освобождаем
end;


Файл MyIniFile.ini будет выглядеть вот так:
Код

[POSITION]
Left=460
Top=302

Это самое легкое. В общем поразбираться, и понравится.


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
YurikGL
Дата 11.1.2006, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 196
Регистрация: 5.7.2005
Где: Уфа

Репутация: нет
Всего: 2



Лучше всего использовать INI
Если хочешь показаться современным или данные имеют сложную структуру - пользуй XML...
--------------------
 
PM MAIL WWW ICQ   Вверх
~FoX~
Дата 11.1.2006, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 13
Всего: 68



Если данных не много, то можно и реестр использовать....Получиться тоже что и INI только красивше.


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Drizhenko
Дата 11.1.2006, 12:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 13.1.2005

Репутация: нет
Всего: нет



Спасибо, попробую c ini файлом. А насчет реестра. Как вы думаете если его засорять всяким барохлом, потом винда не будет тормозить?
PM MAIL   Вверх
Guedda
Дата 11.1.2006, 12:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 14
Всего: 78



Нет. Винда то тормозить не будет, если правильно создавать ветки и ключи...


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
~FoX~
Дата 11.1.2006, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 13
Всего: 68



Drizhenko
А просто нужно аккуратненько за собой прибрать при надобности и неичего не случиться....


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Drizhenko
Дата 13.1.2006, 09:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 13.1.2005

Репутация: нет
Всего: нет



Ничего не понимаю, что за фигня такая. Код Guedda работает, но изминения в ini файле не происходит, хотя окно появляется там же где и исчезло.
PM MAIL   Вверх
Albinos_x
Дата 13.1.2006, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 26
Всего: 108



Цитата(Drizhenko @ 13.1.2006, 09:36 Найти цитируемый пост)

Ничего не понимаю, что за фигня такая. Код Guedda работает, но изминения в ini файле не происходит, хотя окно появляется там же где и исчезло.

может ты не тот ини смотришь.... может ты его где-нибудь в другой папке разместил...


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Drizhenko
Дата 13.1.2006, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 175
Регистрация: 13.1.2005

Репутация: нет
Всего: нет



Вроде разобрался. Глюк с этой строкой
Код
IniFile := TIniFile.Create('MyIniFile.ini'); //пытаемся подгрузить файл

Написал так
Код

 IniFile := TIniFile.Create(extractfilepath(Application.ExeName)+'\MyIniFile.ini');

Заработало.
PM MAIL   Вверх
Guedda
Дата 13.1.2006, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 14
Всего: 78



Цитата(Drizhenko @ 13.1.2006, 10:02)
Вроде разобрался. Глюк с этой строкой
Код
IniFile := TIniFile.Create('MyIniFile.ini'); //пытаемся подгрузить файл

Когда ты так пишешь, это не глюк. Ини файл в этом случае находится в папке WINDOWS


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Albinos_x
Дата 13.1.2006, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 26
Всего: 108



Цитата(Guedda @ 13.1.2006, 10:07 Найти цитируемый пост)

Когда ты так пишешь, это не глюк. Ини файл в этом случае находится в папке WINDOWS

он видно имел ввиду, что поэтому файл который он хотел не изменялся...


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
Guedda
Дата 13.1.2006, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 14
Всего: 78



Да... Он по ходу создал ручками файл в своей директории, а писал просто...
Вот ничего и не изменялось.


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
F1reF0x
Дата 13.1.2006, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 10.10.2005

Репутация: нет
Всего: нет



Сохраняй в реестре. Имхо реестр удобней чем ini файлы, т.к всё в одном месте.

Код

uses Registry;

var
  Reg: TRegIniFile;
Begin
  Reg:= TRegIniFile.Create('Software');
  Reg.WriteString('MyProgram', 'Test', 'Test'); // 1 параметр раздел, 2 заголовк ключа, 3 данные ключа.
  Reg.ReadString('MуProgram', 'Test', 'No data'); //  1 параметр раздел, 2 заголовк ключа, если ничего нету
  Reg.Free;
End;

PM MAIL   Вверх
Albinos_x
Дата 13.1.2006, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 26
Всего: 108



у реестра есть один недостаток, если прога будет работать в НТ-клонах винды из под юзера с ограниченными правами, то нифига сохраняться в реестр не будет...


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
_hunter
Дата 13.1.2006, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



для этого есть улей current_user
+ на NT-клонах винды из под юзера с ограниченными правами, и в файл нифига сохраняться не будет...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Albinos_x
Дата 13.1.2006, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Evil Skynet
****


Профиль
Группа: Комодератор
Сообщений: 3288
Регистрация: 28.5.2004
Где: X-6120400 Y-1 4624650

Репутация: 26
Всего: 108



Цитата(_hunter @ 13.1.2006, 13:53 Найти цитируемый пост)

и в файл нифига сохраняться не будет...

смотря в какой файл...


--------------------
"Кто владеет информацией, тот владеет миром"    
Уинстон Черчилль
PM MAIL ICQ   Вверх
_hunter
Дата 13.1.2006, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



если убрать права на запись со всех дисков то в любой...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1079 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.