Вопрос № 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