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

Вниз

Аналог опертора макроподстановки Foxpro (&) в Delphi   Найти похожие ветки 

 
sad   (2003-12-15 11:06) [0]

как реализовать следующее

dbas = "Some_Base";
&dbas.Open;

или

dbas = "mkind"
&dbas=4

? mkind
4


 
PVOzerski   (2003-12-15 11:10) [1]

По-хорошему - никак. По-плохому (с потерей скорости, с нарушением логики языка Pascal, но это всё IMHO, а, скажем, в OLE/ActiveX все равно приходится так делать) - через тип Variant.


 
Romkin   (2003-12-15 11:11) [2]

Нету такого :) Delphi - компилятор, а не интерпретатор. Можно, правда, использовать сторонние компоненты, парсеры на Торри есть. Или у MS взять scripting, но там уже с интерфейсами работа.


 
PVOzerski   (2003-12-15 11:16) [3]

2Romkin:
Если Some_Base - интерфейс, а dbas - вариант, то всё получится. С учетом сказанного в [1].


 
sad   (2003-12-15 11:18) [4]

Тогда, ка можно реализовать такое:
в файл надо записать значения переменных,
в порядке указанном в некой таблице: позиция, имя_переменной ?


 
REA   (2003-12-15 11:19) [5]

Не, ну с некоторым допущением DataBaseName, FieldByName. Но совсем то такого нету. И это правильно.


 
Erik   (2003-12-15 11:27) [6]

Преведи полностью задачу, возможно, что все намного проще.


 
KSergey   (2003-12-15 11:31) [7]

А если переменные сделать полями нек. класса (да хоть и формы), поместить эти поля класса в Published секцию (или придется их сделать property"ями?) и привлечь в помощь RTTI?

А вообще-то - распишите задачу шире
Наверняка нет необходимости точно копировать логику FoxPro"шной программы (привычек?)


 
sad   (2003-12-15 12:08) [8]

Задача.
Дана таблица:
номер_строки_в_файле, имя_переменной
Нужно
Записать в номер_строки_в_файле значение переменной


 
Romkin   (2003-12-15 12:47) [9]

НУ что же, делай через if, организуй массивчик с именами переменных, и по нему получай, какую переменную писать. И какой идиот такие задания дает?


 
REA   (2003-12-15 12:52) [10]

А что есть переменная, которая задана именем? На момент, когда программа скомпилирована такого понятия уже нет.


 
sad   (2003-12-15 13:04) [11]

>>REA ©
можешь предложить вариант на asm с косвенной адресацией?


 
KSergey   (2003-12-15 15:23) [12]

> [8] sad © (15.12.03 12:08)

Это шире?? ;)
Это повторение.
А вот зачем это надо?


 
sad   (2003-12-15 15:30) [13]

>>KSergey © (15.12.03 15:23) [12]
для того, чтобы сформировать файл со строками в указанной в таблице последовательностью

да, ладно, 52 if"а -это не конец света.


 
sad   (2003-12-15 15:28) [14]

>>KSergey © (15.12.03 15:23) [12]
для того, чтобы сформировать файл со строками в указанной в таблице последовательностью

да, ладно, 52 if"а -это не конец света.


 
Romkin   (2003-12-15 15:35) [15]

Подозреваю, что тебе подойдет TStringList, там есть возможность сделать, забиваешь строками вида param=value, и используешь


 
REA   (2003-12-15 15:43) [16]


> можешь предложить вариант на asm с косвенной адресацией?

Нет. Я не понимаю терминологию. Ты отладчик что ли делаешь? Тогда нужно почитать про отладочные таблицы, размещение переменных в памяти и т.п. Достаточно сложно. Если отладочных таблиц нет, то и переменных тоже нет (по крайней мере их имен). Есть память и регистры.


 
KSergey   (2003-12-15 15:47) [17]

А что, строки обязательно хранить в переменных? А в массиве, к которому уже можно обращаться по индексу, т.е. возникает все же регулятность - нельзя?
И все же я никак не пойму, почему не хочешь нормально, подробно все описать.
Рискну предположить, что есть несколько переменных, имена которых совпадают со значением строк в таблице, а рядом в таблице есть число, описывающее порядок выдачи в файл. (вот только почему это я пишу? А сам - лень?)

Тогда я вижу 2 пути выхода их этого кризиза:
1.В таблице хранить не имена (переменных), а соотв. индекс в массиве.
2.Хранить массив структур

имя_параметра (оно же имя, забитое сейчас в таблице)
связанное_значение (его и сохряняем в файл)

Тогда можно сосряпять цикл, который пробегая по этому массиву будет выискивать соотв. его элемент и сохранять значение.

PS

Хотя лучше бы услышать задачу в твоем исполнении
А то я тут много чего нафантазировать могу ;)


 
cpp   (2003-12-15 16:17) [18]

Ребята когда вы переходите на другой язык программирования - используйте только его принципы программирования. Если нет возможности макроподстановки ну и не надо. Без этого всё и так превосходно работает.
Я программировал и на FoxPro и Delphi и Java и С++. И когда пытался применить тот или иной принцип программирования, взятый из другого языка - то у меня уходило на это масса времеени. Всё это можно было сделать проще и элегантнее, но другим способом


 
sad   (2003-12-15 16:17) [19]

>>REA © (15.12.03 15:43) [16]
>>Ты отладчик что ли делаешь?
нет. все намного проще.

>>
KSergey © (15.12.03 15:47) [17]
>>Рискну предположить...
да именно так.

Организация предоставила структуру файла, который должна формировать программа в виде таблицы

00 ФИО клиента
01 Номер счета
.....
52 E-mail

порядок полей может меняться.

В конце дня из основной базы происходит выгрузка в файл согласно структуре, приведенной в таблице.

Можно использовать массив, скорей всего так и сделаю. Отпугивает, только то, что надо помнить какой индекс за что отвечает.

Спасибо за ответы.
С уважением,
sad


 
Romkin   (2003-12-15 16:18) [20]

А просто по полям таблицы пробежаться сложно?


 
Anatoly Podgoretsky   (2003-12-15 16:20) [21]

Так этоже не переменные, а имена полей в таблице, в общем элементарный экспорт.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.12.26;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.006 c
1-86411
Ivolg
2003-12-14 16:20
2003.12.26
Canvas


14-86500
REA
2003-12-04 15:09
2003.12.26
Разница между Function и Function()


3-86318
ivan01234
2003-12-01 21:54
2003.12.26
DblookublistBox и DbGrid - Не хотят жить дружно!


1-86331
DDA
2003-12-13 15:45
2003.12.26
Растянуть *.ico в TImage


7-86580
crocodile_
2003-10-22 14:33
2003.12.26
WMI





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский