Читання значень з ini файлу

Добрий час доби.

ReadSectionValues: він читає значення ключів в секціях, або значення ключів в секціях разом з ключами?

Якщо друге то як створити перше.

є стоячий запитальник, хелп називається, ходити не пробував, сходи дуже допомагає.

Толя, миленький, дуже розумним себе вважаєте.

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.

Так от мені зчитує значення С ключами, а мені треба БЕЗ ключів.

А спробувати і подивитися, що вийде, слабо?

evgeg в якому сенсі?
Третій день пробую.

Чого на таке питання відповісти не можете?

А я ось за 3 хвилини спробував, і зробив висновок, що ReadSectionValues ​​читає значення разом з ключами :)

Eduard, що С КЛЮЧАМИ кажу - третій день б'юся, а БЕЗ КЛЮЧІВ.

Просто глянь в моє цитування HELP "a: там же чорним по білому (в HELP" e) написано: значення ключів, а не рядки секцій.

Може інша функція є?

TStrings help (F1 адже радив ж)
Names, Values

"Толя, миленький, дуже розумним себе вважаєте ?!" це тому що пам'ятаю чарівну кнопку F1

Анатолій, так виходить, що я цю чарівну кнопку не пам'ятаю.
Функцію я де по-ващему витягнув?
Напевно перлопатіл пів-хелп!

Значить дуже погано дивився, досить однієї табулеткі

procedure ReadSectionValues ​​(const Section: string; Strings: TStrings);

The ReadSectionValues ​​method reads all the variables and their values ​​of 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. У ній містяться відповіді на всі твої питання.
А в тебе яка версія Дельфі?

to evgeg:
Взагалі то зазвичай D5 Enterprise юзаю, рідко D3.

Ne znay kak vse, a ia delay tak:


procedure CorrectStrings (var Data: TMemo);
begin
i: = 0;
while i 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;

v samom nachale zabil :)

procedure TfmMainEdit.OpenLog (LogName: string);
var
i, j: integer;
TempString: string;
DataStrings: TStrings;
//////////////////
a potom vse ostalnoe

"Так ось мені зчитує значення С ключами, а мені треба БЕЗ ключів."

Key1 = Value1
Key2 = Value2
.
KeyN = ValueN

зліва від знака "=" - імена ключів, праворуч - значення ключів. Чи не буде знаку "=" - отримаєш саме те, що ти отримуєш (імена ключів в секції і їх значення зчитуються разом). А інакше як системі визначити, де кінчається ім'я ключа і починається строкове представлення його значення.
При дотриманні формату INI-файлу ф-ція ReadSectionValues ​​() ПОВИННА прочитати в заздалегідь підготовлений об'єкт TSringList ТІЛЬКИ значення ключів у зазначеній секції. А для читання списку ключів в секції передбачена зовсім інша ф-ція - ReadSection (). І, якщо немає роздільників між ключами і значеннями, ReadSection () поверне тобі той же "маячня", що і при виклику ReadSectionValues ​​()

готове рішення:
// приклад використання
//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;

Прошу вибачення за спотворення істини. ReadSectionValues ​​() дійсно читає рядок "Key = Value" цілком. Для роботи окремо зі значеннями ключів можна скористатися об'єктом класу TMemo. Його метод Lines.Values ​​() позаоляет отримати значення ключа по його імені (тобто TMemo реалізує ф-цію найпростішого парсеру записів а-ля ключ INI-файлу)

Пам'ять: 0.75 MB
Час: 0.043 c

Схожі статті