Текущий архив: 2003.02.06;
Скачать: CL | DM;
ВнизПривет Мастаки :) Нужно КРАСИВОЕ решение ??? Код прилагается. Найти похожие ветки
← →
Альф (2003-01-27 16:03) [0]
var
Section: string;
Idents: TStringList;
Params: TStringList;
begin
Section := "Anywhere"
// Определение кол-ва Ident в Section
ReadSection (Section, Idents);
if Idents.Count >0
then begin
// В списке Idents - список ключей в секции
for i:=0 to Idents.Count-1 do begin
// Цикл по каждому
Params.CommaText := ReadString(Section, Idents.Strings[i], ".");
// В списке Params - все параметры в выбраной строчке
if Params.Count >0
then begin
// А тут разборка параметров типа Param0 := Params.Strings[0]
// Хотелось бы сюда поместить функцию - которая бы заполняла параметры типа:
MyCoolFunction();
end;{if}
end;{for}
end;{if}
end;{}
А тело функции такого вида:
procedure MyCoolFunction();
begin
// Для загрузки параметров Grid-а примерно так
with dbGrid.Columns.Add() do begin
FieldName := Idents.Strings[i];
Title.Caption := Params.Strings[0];
Width := IntToStr(Params.Strings[1]);
end;{with}
end;
А вот как внешшей функции дать знать о существовании Idents и Params ???
← →
icWasya (2003-01-27 16:12) [1]procedure MyCoolFunction(Params,Idents:TStringList); //???
← →
MBo (2003-01-27 16:15) [2]1) где создание STringList-ов?
2) почему бы не передать списки как аргументы процедуры?
← →
Альф (2003-01-27 16:17) [3]Блинн - а я уже думал передавать фунции параметром адрес вызвавшей процедуры - помешался на объектах наверно :(
Хотя получилось бы классно типа SummonProc.Idents :)))
← →
LongIsland (2003-01-27 16:18) [4]
> MBo © (27.01.03 16:15)
> 1) где создание STringList-ов?
> 2) почему бы не передать списки как аргументы процедуры?
+3) А почему бы не сделать их глобальными?
← →
Альф (2003-01-27 16:21) [5]2MBo © (27.01.03 16:15)
Да есть создание стринглистов - вот они:
Idents := TStringList.Create();
Params := TStringList.Create();
просто не хотелось захламлять код тем что и так подразумевается :)
← →
Anatoly Podgoretsky (2003-01-27 16:29) [6]Знаешь как часто бывает это "подразумевается"
← →
Альф (2003-01-27 16:33) [7]2Anatoly Podgoretsky © (27.01.03 16:29)
Догадываюсь :(
Но я же не о TStringList спрашивал - а о реализации :)
← →
Бурундук (2003-01-27 16:36) [8]Насколько я понимаю, у тебя данные и код связаны.
Тогда прямая дорога к ООП:
TParamParser = class
...
function ParseStr(s: string);
property Idents...
property Params...
constructor Create(ASourceStr: string);
destructor Destroy; override;
...
end;
constructor TParamParser.Create(ASourceStr: string);
begin
FIdents := TStringList.Create;
FParams := TStringList.Create;
FSource := ASourceString;
ParseStr(FSource);
//Здесь делаешь раэбор строки
end;
ParamParser := TParamParser.Create(Section);
// или объект может быть глобальным
try
MyCoolFunction(ParamParser);
finally
ParamParser.Free;
end;
← →
Альф (2003-01-27 16:47) [9]2Бурундук (27.01.03 16:36)
Классс - просто сумашедшая интуиция :)))
Спасибо.
Уже так и делаю :)))
← →
Альф (2003-01-27 16:55) [10]Спасибо ВСЕМ :)
Извините - просто не до конца объяснил проблему :(
Была функцияFillColumns(iD:integer;dbGrid:TDBGrid);
которая заполнялаdbGrid
по выбраному параметруiD
из базы - теперь же потребовалось сделать заполнение параметров и из ini-файла.
А с другой стороны хотелось сделать универсальную процедуру считывания параметров из ini-файла - т.е. получалось рассогласование между тем чтоdbGrid
заранее не известен и тем что параметрыMyCoolFunction();
нужно фиксировать.
И как выход - наверное только ООП - больше ничего в голову не приходит :(
Страницы: 1 вся ветка
Текущий архив: 2003.02.06;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.01 c