Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Привет Мастаки :) Нужно КРАСИВОЕ решение ??? Код прилагается. [D5, Win2k]


Альф ©   (2003-01-27 16:03:00) 

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 ???


Альф   (2003-01-27 16:55:00) [1]

Спасибо ВСЕМ :)
Извините - просто не до конца объяснил проблему :(

Была функция FillColumns(iD:integer;dbGrid:TDBGrid);
которая заполняла dbGridпо выбраному параметру iDиз базы - теперь же потребовалось сделать заполнение параметров и из ini-файла.
А с другой стороны хотелось сделать универсальнуюпроцедуру считывания параметров из ini-файла - т.е. получалось рассогласование между тем что dbGridзаранее не известен и тем что параметры MyCoolFunction();нужно фиксировать.
И как выход - наверное только ООП - больше ничего в голову не приходит :(


Альф   (2003-01-27 16:47:00) [2]

2Бурундук (27.01.03 16:36)
Классс - просто сумашедшая интуиция :)))
Спасибо.
Уже так и делаю :)))


Бурундук   (2003-01-27 16:36:00) [3]

Насколько я понимаю, у тебя данные и код связаны.
Тогда прямая дорога к ООП:

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:33:00) [4]

2Anatoly Podgoretsky © (27.01.03 16:29)
Догадываюсь :(

Но я же не о TStringList спрашивал - а о реализации :)


Anatoly Podgoretsky   (2003-01-27 16:29:00) [5]

Знаешь как часто бывает это "подразумевается"


Альф   (2003-01-27 16:21:00) [6]

2MBo © (27.01.03 16:15)
Да есть создание стринглистов - вот они:
Idents := TStringList.Create();
Params := TStringList.Create();

просто не хотелось захламлять код тем что и так подразумевается :)


LongIsland   (2003-01-27 16:18:00) [7]


> MBo © (27.01.03 16:15)
> 1) где создание STringList-ов?
> 2) почему бы не передать списки как аргументы процедуры?

+3) А почему бы не сделать их глобальными?


Альф   (2003-01-27 16:17:00) [8]

Блинн - а я уже думал передавать фунции параметром адрес вызвавшей процедуры - помешался на объектах наверно :(

Хотя получилось бы классно типа SummonProc.Idents :)))


MBo   (2003-01-27 16:15:00) [9]

1) где создание STringList-ов?
2) почему бы не передать списки как аргументы процедуры?


icWasya   (2003-01-27 16:12:00) [10]

procedure MyCoolFunction(Params,Idents:TStringList); //???


Наверх

Титульная страница Поиск, карта сайта Написать письмо