Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > проблема с INI


Автор: delphi_ 8.4.2007, 17:48
Код



procedure TForm1.Button2Click(Sender: TObject);
var
Version:string;
IniFile:TIniFile;

begin

 inifile:=TiniFile.Create(extractfilepath(Application.ExeName)+'ini.ini');
 TRY
 Version:=IniFile.ReadString('LALA', 'version', 'gg');
   label1.caption:=version;
   finally
IniFile.Free;

сам ини файл


[LALA]
version=17777



пробовал сделать так-
Код

path:=extractfilepath(Application.ExeName)+'ini.ini';

путь правильный
что я не так делаю?

Автор: Sergius 8.4.2007, 18:20
Код

var
 Ini : TIniFile;
begin
  Ini := TIniFile.Create((IncludeTrailingPathDelimiter(ExtractFileDir(ParamStr(0)))) + 'Ini.ini');
  Caption := Ini.ReadString('About', 'Version', '1234567');
  Ini.Free;


О как!  smile 

Автор: Insert 8.4.2007, 18:30
Код

var
   ln: byte;
   Ini : TIniFile;
   Root: string; // адрес папки с exe
begin
 ln := 255;
 SetLength(Root, ln);
 ln := windows.GetCurrentDirectory(ln, PChar( Root ));
 SetLength( Root, ln );
 Ini := TIniFile.Create( Root + '\Ini.ini');


 Вот так!  smile 

Автор: aktuba 8.4.2007, 18:33
Цитата

TIniFile.Create((IncludeTrailingPathDelimiter(ExtractFileDir(ParamStr(0)))) + 'Ini.ini');


Какая-то страшная строка  smile Так проще:
Код

TIniFile.Create(ExtractFilePath(Application.ExeName) + 'Ini.ini');

Автор: Guedda 8.4.2007, 18:37
А ещё проще IncludeTrailingBackSlash

Автор: Sergius 8.4.2007, 18:51
Цитата(Guedda @ 8.4.2007,  18:37)
А ещё проще IncludeTrailingBackSlash

Да вы правы.

Код

var
 Ini : TIniFile;
begin
  Ini := TIniFile.Create(IncludeTrailingBackSlash(ParamStr(0)) + 'Ini.ini');
  Caption := Ini.ReadString('About', 'Version', '1234567');
  Ini.Free;


 smile

Добавлено @ 18:52
Цитата(aktuba @ 8.4.2007,  18:33)
Цитата

TIniFile.Create((IncludeTrailingPathDelimiter(ExtractFileDir(ParamStr(0)))) + 'Ini.ini');


Какая-то страшная строка  smile Так проще:
Код

TIniFile.Create(ExtractFilePath(Application.ExeName) + 'Ini.ini');

Поэксперементируйте и поймете, что это не есть гуд...

Автор: aktuba 8.4.2007, 19:10
Цитата

Поэксперементируйте и поймете, что это не есть гуд...


Почему??? Эксперементы не выявили глюков. Может вы подскажете?

Автор: delphi_ 8.4.2007, 19:13
нет,всеравно он какбудто конфиг не видит и выдает дефолт значение...бред какойто =(

Автор: aktuba 8.4.2007, 20:03
Цитата

нет,всеравно он какбудто конфиг не видит и выдает дефолт значение...бред какойто =( 


Тогда объясни подробнее, где что лежит. И покажи полный код...

Автор: delphi_ 8.4.2007, 20:12
файл ini.ini лежит собственно в директории программы.мне нужно из него просто узнать значение version..
смысл давать полный код,только эта процедура с ини работает,другие вообще его не трогают...собственно с процедурой и мучаюсь

Автор: Yanis 8.4.2007, 20:13
Цитата(Sergius @  8.4.2007,  19:51 Найти цитируемый пост)
Да вы правы.

var
 Ini : TIniFile;
begin
  Ini := TIniFile.Create(IncludeTrailingBackSlash(ParamStr(0)) + 'Ini.ini');
  Caption := Ini.ReadString('About', 'Version', '1234567');
  Ini.Free;

smile
Будь добр оформляй примеры кода в тег code.


M
Alexeis
Модератор: спасибо Yanis, добавлю что выделение кода это не просто рекомендация, 

а требование записанное в правилах форума обязательное к выполнению.

Автор: delphi_ 9.4.2007, 12:31
Народ,как поступить то?попробовал щас сделать новый проект-всеравно не читает данные в INI и выводит дефолт

Код

procedure TForm1.Button1Click(Sender: TObject);
var
 Ini : TIniFile;
begin
  Ini := TIniFile.Create(IncludeTrailingBackSlash(ParamStr(0)) + 'ini.ini');
  label1.Caption := Ini.ReadInteger('version', 'ver', '1234567');
  Ini.Free;
end;


Код

[version]
ver=11

Автор: Yanis 9.4.2007, 12:41
delphi_
Ты уверен, что ini файл называется project1.exe\ini.ini?

Автор: delphi_ 9.4.2007, 12:43
да,Уверен 100%

Автор: aktuba 9.4.2007, 12:45
Цитата

Ты уверен, что ini файл называется project1.exe\ini.ini? 


Твой файл называется ini.ini, а не project1.exe\ini.ini =))) Yanis проверял тебя =)))) Он имел в виду, что ты добавляешь название ini файла не к директории, а к исполняемому файлу. Т.е. вместо Projects\ini.ini ты получаешь Projects.exe\ini.ini Соответственно такого файла нет, вот тебе и возвращается дефолтное значение =)))

P.S: замени ReadInteger на ReadString =))))

Прикладываю ТВОЙ же код, который работает =))))

Автор: Yanis 9.4.2007, 12:46
Цитата(delphi_ @  9.4.2007,  13:43 Найти цитируемый пост)
да,Уверен 100% 

Да? А точно не так:
Код
ExtractFilePath(ParamStr(0)) + 'ini.ini'

?

Добавлено через 36 секунд
Цитата(delphi_ @  9.4.2007,  13:43 Найти цитируемый пост)
да,Уверен 100%

Гонишь!

Автор: aktuba 9.4.2007, 12:50
Цитата

Гонишь! 



Yanis, не издевайся =))) Видно же, что новичок...

Автор: Yanis 9.4.2007, 13:04
Цитата(aktuba @  9.4.2007,  13:50 Найти цитируемый пост)
Yanis, не издевайся =))) Видно же, что новичок... 

Вижу. Но это не отговрка что бы флудить тут.

Автор: delphi_ 9.4.2007, 13:34
Цитата(aktuba @ 9.4.2007,  12:45)
Цитата

Ты уверен, что ini файл называется project1.exe\ini.ini? 


Твой файл называется ini.ini, а не project1.exe\ini.ini =))) Yanis проверял тебя =)))) Он имел в виду, что ты добавляешь название ini файла не к директории, а к исполняемому файлу. Т.е. вместо Projects\ini.ini ты получаешь Projects.exe\ini.ini Соответственно такого файла нет, вот тебе и возвращается дефолтное значение =)))

P.S: замени ReadInteger на ReadString =))))

Прикладываю ТВОЙ же код, который работает =))))

 я не совсем понимаю чем отличаеться код в файле от кода в моем первом посте))

Автор: Yanis 9.4.2007, 13:48
delphi_
Скажи, что показывает этот код:
Код
ShowMessage(BoolToStr(FileExists(extractfilepath(Application.ExeName)+'ini.ini'), True));

Автор: aktuba 9.4.2007, 13:59
Цитата

я не совсем понимаю чем отличаеться код в файле от кода в моем первом посте)) 


Наверное ни чем. Не сравнивал. Но мой код работает - 100% =)

Автор: Sergius 9.4.2007, 19:15
Цитата(aktuba @ 8.4.2007,  19:10)
Цитата

Поэксперементируйте и поймете, что это не есть гуд...


Почему??? Эксперементы не выявили глюков. Может вы подскажете?

2 Yanis Очень жаль.. Копайте глубже, если не найдете подкину..


2 Yanis and Модератор
Исправлюсь.. Честно - честно...

Автор: Yanis 9.4.2007, 19:47
Цитата(Sergius @  9.4.2007,  20:15 Найти цитируемый пост)
2 Yanis Очень жаль.. Копайте глубже, если не найдете подкину..

До Земного ядра копать? Что искать? Что подкинешь?
У меня пока труднойстей никаких не возникало в связи с этой темой.
А у тебя, судя по всему проблемы.
Мне тоже очень жаль.

Окстись, Sergius.

Автор: Sergius 9.4.2007, 19:59
Вой не тому отправил... писал для aktuba   smile 

Автор: aktuba 9.4.2007, 20:01
Цитата

Очень жаль.. Копайте глубже, если не найдете подкину..


Не нашел ни сейчас, ни раньше... Так что?

Автор: Sergius 9.4.2007, 21:14
Цитата(aktuba @ 9.4.2007,  20:01)
Цитата

Очень жаль.. Копайте глубже, если не найдете подкину..


Не нашел ни сейчас, ни раньше... Так что?

Завтра вечерком загляните напишу.

Автор: aktuba 10.4.2007, 22:47
Цитата

Завтра вечерком загляните напишу. 


Ау...

Автор: Lence 14.4.2007, 23:30
уууу как страшно ....  а еще проще ? 
Код

var
sIniFile: TIniFile;
w, version : string;
begin
      w:= ExtractFilePath(paramstr(0));
      sIniFile := TIniFile.Create(w+ 'ini.ini');
      version:= sIniFile.Ini.ReadString('About', 'Version', '1234567');
      sIniFile.free;


 smile  smile   пойдет ? и всегда у тебя будет нормальный путь.

Автор: lukas 16.4.2007, 10:33
Lence, 

да но при чтении с CD ... extractfilepath не работает... поэтому нужно пользоваться 

Код

GetDir(0, var str:string);



Код

Function ReadVer:string;
var
sIniFile: TIniFile;
w, version : string;
begin
      GetDir(0, w);  {не нужно также забывать про ChDir - иначе может получится неразбериха с путями, поэтому путь к папки программы нужно извлекать сразу при ее запуске}
      sIniFile := TIniFile.Create(w+ '\ini.ini');
      version:= sIniFile.Ini.ReadString('About', 'Version', 'Not Found');
      sIniFile.free;
end;

Автор: MetalFan 16.4.2007, 13:10
Цитата(lukas @  16.4.2007,  10:33 Найти цитируемый пост)
да но при чтении с CD ... extractfilepath не работает

что за бред? причем тут ExtractFilePath и носитель?

Автор: aktuba 16.4.2007, 16:53
Цитата

да но при чтении с CD ... extractfilepath не работает...


да ну???? во всех программах работает, а тут нет... ничего не путаешь???

Автор: Lence 16.4.2007, 18:15
Цитата(lukas @ 16.4.2007,  10:33)
Lence, 
да но при чтении с CD ... extractfilepath не работает... поэтому нужно пользоваться ...


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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)