Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 21.12.2007, 20:43
Аватар для Oleg
Oleg Oleg вне форума
Активный
 
Регистрация: 29.11.2007
Адрес: Оренбургская обл., Россия
Сообщения: 261
Репутация: 15
Вопрос Вопрос по ini файлам

Вот кусок кода:
...
procedure TForm1.Button1Click(Sender: TObject);
var
count:integer;
sFile: string;
Ini: TIniFile;
begin
if not FileExists(sFile) then
begin
Ini:=TIniFile.Create('D:\test.ini');
Ini.WriteInteger('General', 'count', 0);
Ini.Free;
end;
sFile := 'D:\test.ini';
if FileExists(sFile) then
begin
Ini := TIniFile.Create(sFile);
Ini.ReadInteger('General', 'count', count);
count:=count+1;
Ini.WriteInteger('General', 'count', count);
{или так
Ini.WriteInteger('General', 'count', count+1);
никакой разницы}
Ini.Free;
end;
end;
...

Здесь не обновляется count всё время устанавливает в одной проге 1, а тут
Ну почему ???
И выводит
count=4357785
Ну помогите разобраться
Ответить с цитированием
  #2  
Старый 21.12.2007, 22:23
Аватар для <<D>>
<<D>> <<D>> вне форума
Активный
 
Регистрация: 06.05.2007
Адрес: ГДЕ ТО В СОЛНЕЧНОЙ СИСТЕМЕ
Сообщения: 207
Репутация: 15
Радость

Нужно просто было правильно объявить переменную count.

Код:
...
var
  Form1: TForm1;
  count:integer=0;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
sFile: string;
Ini: TIniFile;
begin
if not FileExists(sFile) then
begin
Ini:=TIniFile.Create('D:\test.ini');
Ini.WriteInteger('General', 'count', 0);
Ini.Free;
end;
sFile := 'D:\test.ini';
if FileExists(sFile) then
begin
Ini := TIniFile.Create(sFile);
Ini.ReadInteger('General', 'count', count);
count:=count+1;
Ini.WriteInteger('General', 'count', count);
{èëè òàê
Ini.WriteInteger('General', 'count', count+1);
íèêàêîé ðàçíèöû}
Ini.Free;
end;
end;
__________________
Кому я должен - всем прощаю!!!!
Ответить с цитированием
  #3  
Старый 21.12.2007, 22:37
Аватар для Oleg
Oleg Oleg вне форума
Активный
 
Регистрация: 29.11.2007
Адрес: Оренбургская обл., Россия
Сообщения: 261
Репутация: 15
Печаль Увы

В одном случае помогло, в другом нет. Не добавляет строку, не изменяте count
Что же не так ?
Ответить с цитированием
  #4  
Старый 21.12.2007, 22:53
Аватар для <<D>>
<<D>> <<D>> вне форума
Активный
 
Регистрация: 06.05.2007
Адрес: ГДЕ ТО В СОЛНЕЧНОЙ СИСТЕМЕ
Сообщения: 207
Репутация: 15
По умолчанию

Поподробнее опиши свою проблему. С того что ты написал, я ничо не понял.
__________________
Кому я должен - всем прощаю!!!!
Ответить с цитированием
  #5  
Старый 22.12.2007, 00:06
Аватар для <<D>>
<<D>> <<D>> вне форума
Активный
 
Регистрация: 06.05.2007
Адрес: ГДЕ ТО В СОЛНЕЧНОЙ СИСТЕМЕ
Сообщения: 207
Репутация: 15
По умолчанию

Может так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
sFile: string;
Ini: TIniFile;
count:integer;
begin
if not FileExists(sFile) then
begin
Ini:=TIniFile.Create('D:\test.ini');
count:=0;
Ini.WriteInteger('General', 'count', 0);
Ini.Free;
end;
sFile := 'D:\test.ini';
if FileExists(sFile) then
begin
Ini := TIniFile.Create(sFile);
Ini.ReadInteger('General', 'count', count);
count:=count+1;
Ini.WriteInteger('General', 'count', count);
{èëè òàê
Ini.WriteInteger('General', 'count', count+1);
íèêàêîé ðàçíèöû}
Ini.Free;
end;
end;
__________________
Кому я должен - всем прощаю!!!!
Ответить с цитированием
  #6  
Старый 22.12.2007, 11:38
Аватар для Oleg
Oleg Oleg вне форума
Активный
 
Регистрация: 29.11.2007
Адрес: Оренбургская обл., Россия
Сообщения: 261
Репутация: 15
Подмигивание Подробности

...
var
Form1: TForm1;
count:integer=0;

implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
var
sFile: string;
Ini: TIniFile;
begin
if not FileExists(sFile) then
begin
Ini:=TIniFile.Create('D:\test.ini');
Ini.WriteInteger('General', 'count', 0);
Ini.Free;
end;
sFile := 'D:\test.ini';
if FileExists(sFile) then
begin
Ini := TIniFile.Create(sFile);
Ini.ReadInteger('General', 'count', count);
Ini.WriteInteger('General', 'count', count+1);
Ini.Free;
end;
end;

Почему не работает таймер, когда кнопка, то всё работат.
Помогите разобраться...

Последний раз редактировалось Oleg, 22.12.2007 в 11:47.
Ответить с цитированием
  #7  
Старый 22.12.2007, 12:37
Аватар для Rokuell
Rokuell Rokuell вне форума
Активный
 
Регистрация: 27.12.2006
Адрес: Псков
Сообщения: 274
Версия Delphi: Delphi 7
Репутация: 497
Радость

Во первых:
Читай внимательнее описание функций и процедур, т.к ReadInteger - это ФУНКЦИЯ, которая возвращает считанное значение ключа, а вот её третий параметр - это значение по умолчанию, которое функция возвращает, если ключ не найден.
Во вторых:
Пиши код проще, тогда и ошибок в нём будет меньше - вот зачем тебе две проверки на существование файла в одной процедуре?
Не проще ли так:
Код:
var
  count:integer=0;

procedure TForm1.Timer1Timer(Sender: TObject);
var
 sFile: string;
 Ini: TIniFile;
begin
 sFile := 'D:\test.ini';
 if FileExists(sFile) then
  begin
   Ini:=TIniFile.Create(sFile);
   count:=Ini.ReadInteger('General', 'count', 0);
   Ini.WriteInteger('General', 'count', count+1);
   Ini.Free;
  end
 else
  begin
   Ini:=TIniFile.Create(sFile);
   Ini.WriteInteger('General', 'count', 0);
   Ini.Free;
  end;
end;

PS: И код в сообщении надо оформлять тэгами
PPS: Надеюсь, я не слишком строго?
Ответить с цитированием
  #8  
Старый 22.12.2007, 13:02
Аватар для Oleg
Oleg Oleg вне форума
Активный
 
Регистрация: 29.11.2007
Адрес: Оренбургская обл., Россия
Сообщения: 261
Репутация: 15
Радость Спасибо !

Спасибо за помощь.
Инструкции по функциям и процедур у меня нет, только демо-версия для Delphi 6 и кое-какие неюольшие справки. Если есть, дай ссылку на хорошую инструкцию по процедурам и функциям(желательно, чтобы можно было скачать, а не на сайте)
Спасибо,
1) А что собственно значит "ТЕГ"
2) не строго.

Последний раз редактировалось Oleg, 22.12.2007 в 13:06.
Ответить с цитированием
  #9  
Старый 22.12.2007, 13:12
Rosenkrantz Rosenkrantz вне форума
Активный
 
Регистрация: 04.12.2007
Адрес: Москва
Сообщения: 234
Версия Delphi: Delphi 7
Репутация: 40
По умолчанию

Цитата:
Инструкции по функциям и процедур у меня нет, только демо-версия для Delphi 6.
На титульной странице этого сайта справа в рамочке надпись "Справочник". Под ней алфавит. Загляните туда.

Тэг - в данном случае способ оформить код так, чтобы он читался нормально. Располагайте исходный код внутри конструкции
Код HTML:
[code]...[/code]
тогда он будет правильно отформатирован.
Ответить с цитированием
  #10  
Старый 22.12.2007, 13:15
Аватар для Rokuell
Rokuell Rokuell вне форума
Активный
 
Регистрация: 27.12.2006
Адрес: Псков
Сообщения: 274
Версия Delphi: Delphi 7
Репутация: 497
Радость

1. В форме, где пишешь ответ, есть выбор, настройка шрифта и т.д,
но также есть и кнопки # <> и т.д
так вот # - вставить тэг "CODE" вокруг выделенного текста
2. Не парься и скачай нормальную версию Delphi 7 Enterprise
(ну или купи диск типа "всё для программиста" - пираток завались)
3. Описание параметров функции можно получить, если навести курсор на её имя, а можно зажав Ctrl щёлкнуть по имени функции и посмотреть её код ( или описание, если она вызывается из DLL)

PS: Советую отличный учебник "С.Бобровский Delphi 7 учебный курс"
Ответить с цитированием
  #11  
Старый 22.12.2007, 13:25
Аватар для Oleg
Oleg Oleg вне форума
Активный
 
Регистрация: 29.11.2007
Адрес: Оренбургская обл., Россия
Сообщения: 261
Репутация: 15
Подмигивание

У меня стоит Delphi 6 и Delphi 7
только там справка по английски
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:41.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter