![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Чтение значений из ini файла
ходячий вопросник © (2001-12-15 08:50:00)Доброе время суток...
ReadSectionValues: он читает значения ключей в секциях, или значения ключей в секциях вместе с ключами?
Если второе то как сотворить первое?...
Спасибо.
Digitman (2001-12-17 15:01:00) [1]Прошу прощения за искажение истины. ReadSectionValues() действительно читает строку "Key = Value" целиком. Для работы отдельно со значениями ключей можно воспользоваться объектом класса TMemo. Его метод Lines.Values() позаоляет получить значение ключа по его имени (т.е. TMemo реализует ф-цию простейшего парсера записей а-ля ключ INI-файла)
Дмитрий Д. (2001-12-17 14:42:00) [2]готовое решение:
//пример использования
//edit1.Text:=ReadIni("my.ini","section 1", "value1");
function ReadIni(FName, ASection, AString: string): string;
var
sIniFile: TIniFile;
sPath: string[60];
const
S = "не могу прочитать файл";
begin
GetDir(0, sPath);
sIniFile := TIniFile.Create(FName);
Result := sIniFile.ReadString(ASection, AString, S);
sIniFile.Free;
end;
Digitman (2001-12-17 13:57:00) [3]>ходячий вопросник
"Так вот мне считывает значения С ключами, а мне надо БЕЗ ключей."
структура INI-файла :
[section]
Key1 = Value1
Key2 = Value2
...
KeyN = ValueN
слева от знака "=" - имена ключей, справа - значения ключей. Не будет знака "=" - получишь как раз то, что ты получаешь (имена ключей в секции и их значения считываются вместе). А иначе как системе определить, где кончается имя ключа и начинается строковое представление его значения ?
При соблюдении формата INI-файла ф-ция ReadSectionValues() ДОЛЖНА прочитать в заранее подготовленный объект TSringList ТОЛЬКО значения ключей в указанной секции ! А для чтения списка ключей в секции предусмотрена совсем другая ф-ция - ReadSection(). И, если нет разделителей между ключами и значениями, ReadSection() вернет тебе тот же "бред", что и при вызове ReadSectionValues()
stasev (2001-12-16 11:32:00) [4]v samom nachale zabil :)
procedure TfmMainEdit.OpenLog(LogName: string);
var
i, j: integer;
TempString: string;
DataStrings: TStrings;
//////////////////
a potom vse ostalnoe
stasev (2001-12-16 11:29:00) [5]Ne znay kak vse,a ia delay tak:
procedure CorrectStrings(var Data: TMemo);
begin
i:= 0;
while i < Data.Lines.Count do begin
Data.Lines[i]:= Data.Lines.Values[Data.Lines.Names[i]];
Inc(i);
end;
end;
begin
try
LogFile := TIniFile.Create(LogName);
with LogFile as TIniFile do begin
ReadSectionValues("Section Name", Memo1.Lines);
CorrectStrings(Memo1.Lines);
except
MessageDlg("Error reading MAP file !", mtError, [mbOk], 0);
end;
end;
ходячий вопросник (2001-12-15 17:47:00) [6]to evgeg:
Вообще то обычно D5 Enterprise юзаю, редко D3.
evgeg (2001-12-15 15:49:00) [7]Applies to
TIniFile object
Declaration
procedure ReadSectionValues(const Section: string; Strings: TStrings);
Description
The ReadSectionValues method reads all the variables and their valuesof an entire section of an .INI file into a string object. You can then use the Values property of string and string list objects to access a specific string in the list of strings.
Это выдержка из help-а для Дельфи 2. В ней содержатся ответы на все твои вопросы.
А у тебя какая версия Дельфи?
Anatoly Podgoretsky (2001-12-15 15:43:00) [8]Значит очень плохо смотрел, достаточно одной табулетки
ходячий вопросник (2001-12-15 15:14:00) [9]Анатолий, так получается, что я эту волшебную кнопку не помню?!
Функцию я где по-ващему вытащил?
Наверняка перлопатил пол-хелпа!
Anatoly Podgoretsky (2001-12-15 15:10:00) [10]TStrings help (F1 ведь советовал же)
Names, Values
"Толя, миленький, шибко умным себя считаете?!" это потому что помню волшебную кнопку F1
ходячий вопросник (2001-12-15 14:47:00) [11]Просто глянь в мое цитирование HELP"a: там же черным по белому (в HELP"e) написано: значения ключей, а не строки секций???
Может другая функция есть?
ходячий вопросник (2001-12-15 14:46:00) [12]Eduard,что С КЛЮЧАМИ -говорю - третий день бьюсь, а БЕЗ КЛЮЧЕЙ???
Eduard (2001-12-15 14:42:00) [13]А я вот за 3 минуты попробовал, и сделал вывод, что ReadSectionValues читает значения вместе с ключами:)
ходячий вопросник (2001-12-15 14:41:00) [14]Мастера!
Чего на такой вопрос ответить не можете?
ходячий вопросник (2001-12-15 12:32:00) [15]evgeg в каком смысле?
Третий день пробую...
evgeg (2001-12-15 12:24:00) [16]А попробовать и посмотреть, что получится, слабо?
ходячий вопросник (2001-12-15 12:18:00) [17]Толя, миленький, шибко умным себя считаете?!
1. Мож я не так вопрос задал... Перезадам: Что именно читает ReadSectionValues???
2. Выдержка из хелпа:
Reads the values from all keys within a section of an INI file into a string list.
procedure ReadSectionValues(const Section: string; Strings: TStrings); override;
Поясняю: Читает значения ВСЕХ КЛЮЧЕЙ в секции из файла типа INI в String List.
Так вот мне считывает значения С ключами, а мне надо БЕЗ ключей.
Anatoly Podgoretsky (2001-12-15 11:59:00) [18]есть стоячий вопросник, хелп называется, ходить не пробовал, сходи очень помогает.