Вопрос № 119910: Здравствуйте.
Хотел бы по интересоваться, как реализовать такое.
Написал программку, которая работает с ини файлом другой программы, но не могу понять- имея listbox, как загрузить в него данные с ини файла в 9 колонок? Содержимое ини файла вы...
Вопрос № 119.910
Здравствуйте.
Хотел бы по интересоваться, как реализовать такое.
Написал программку, которая работает с ини файлом другой программы, но не могу понять- имея listbox, как загрузить в него данные с ини файла в 9 колонок? Содержимое ини файла выглядит так:
[ColorEffect]
Color1=(R1=0,G1=10,B1=20,R2=0,G2=0,B2=30,tran=0.1,Number=0.1)
Color2=(R1=0,G1=10,B1=20,R2=0,G2=0,B2=30,tran=0.1,Number=0.1)
Color3=(R1=0,G1=10,B1=20,R2=0,G2=0,B2=30,tran=0.1,Number=0.1)
Надо загрузить все эти строки в listbox в 9 колонок построчно т.е.
Color1 0 10 20 0 0 30 0.1 0.1
Color2 0 10 20 0 0 30 0.1 0.1
и т.д.
С файлом работаю через TiniFile. Пробывал через ReadSectionValues, но в данной секции есть имена переменных, которые мне не нужны - надо считать все у которых название color (т.е. 5 символов с названия).
Или может есть другой какой нить способ реализовать это ?
Если можно, то пример хотя бы наводящий. За ранее спасибо.
Отправлен: 24.01.2008, 08:43
Вопрос задал: Gavrila (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Raptor3
Здравствуйте, Gavrila!
1. вариант
считываем ReadSection('ColorEffect',stringList) с ColorEffect все "переменные" в TStringList
бежим по StringList и проверяем - color ли это - если да, то считываем его значение - ReadString('ColorEffect',stringList[i],''), полученную строку парсим "(R1=0,G1=10,B1=20,R2=0,G2=0,B2=30,tran=0.1,Number=0.1)"
2.
проще бы было если структура ини файла имела такой вид
[Color1]
R1=0
G1=10
B1=20
R2=0
G2=0
B2=30
tran=0.1
Number=0.1
--------- Программист - это человек который решает проблему, о которой вы не знаете, способом который вы не понимаете
Ответ отправил: Raptor3 (статус: 4-ый класс)
Ответ отправлен: 24.01.2008, 09:18
Отвечает: Selya
Здравствуйте, Gavrila!
Предлагаю разбить эту задачу на два этапа:
1. Считать ini-файл во временный TStrings. Здесь может сгодиться ваша ReadSectionValues.
2. Парсинг (разбиение) каждого Item'а этого временного TString'а с целью "выуживания" необходимых переменных. Для этого:
a. "Обрезаем" скобки.
b. Поскольку разделитель - запятая, можно легко выделеить каждое равенство этой строки:
var
Str: TStringList;
begin
Str := TStringList.Create;
try
Str.Text := S; // S - строка с "R1=0,G1=10,B1=20,R2=0,G2=0,B2=30,tran=0.1,Number=0.1"
finally
Str.Free;
end;
end;
У вас получится TStringList примерно с таким содержимым:
Item[0] "R1=0"
Item[1] "G1=10"
и т.д.
Ну а дальше "выцепляем" значения переменных, те что после знака "=":
S := Copy(Item[I], Pos("=", Item[I])+1, Length(Item[I]))
А дальше задача загрузки полученных переменных в листбох по колонкам (см. в приложении).
Приложение:
Ответ отправил: Selya (статус: 4-ый класс)
Ответ отправлен: 24.01.2008, 09:20
Вы имеете возможность оценить этот выпуск рассылки. Нам очень важно Ваше мнение!
* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.
Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!
Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.
Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.