Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.02.06;
Скачать: [xml.tar.bz2];

Вниз

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

 
Альф   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.01 c
8-15772
Lony
2002-10-21 02:53
2003.02.06
MPEG4


1-15600
delpher_gray
2003-01-27 12:08
2003.02.06
Поиск файлов


14-15934
hedgehoge
2003-01-21 19:08
2003.02.06
XMLDocument


3-15416
diww
2003-01-21 20:49
2003.02.06
Как програмно переиндексировать файл?


14-15874
Феликс
2003-01-18 13:26
2003.02.06
PERL VS PHP





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский