function GetDBPath(const Alias: string): string; var AllSt: TStringList; i: integer; S: string; begin Result:=''; if Length(Alias)<>0 thenbegin AllSt := TStringList.Create; try DM1.Session1.GetAliasParams(Alias,AllSt); S:=''; for i:=0 to AllSt.Count-1 dobegin if Copy(AllSt[i],1,11)='SERVER NAME' thenbegin S:=ExtractFilePath(Copy(AllSt[i],13,80)); Break; endelseif Copy(AllSt[i],1,4)='PATH'
thenbegin
S:=Copy(AllSt[i],6,80); Break; end; end; if Length(S)<>0 then Result:=S finally AllSt.Free; end; end; end;
Модификация этого примера от Середа Александра (alex@uice.com.ua) 1. Если делать универсальную функцию, то Session лучше передавать как параметр. 2. Если уж создаем StringList, то давайте использовать его возможности.
function GetDBPath(ASession: TSession; const Alias: string): string; var AllSt: TStringList; begin Result:=''; if Length(Alias)<>0 thenbegin AllSt := TStringList.Create;
try ASession.GetAliasParams(Alias,AllSt); if (AllSt.IndexOfName('SERVER N!
AME') >
-1) then Result := AllSt.Values['SERVER NAME'] elseif (AllSt.IndexOfName('PATH') > -1) then Result := AllSt.Values['PATH']; finally AllSt.Free; end; end; end;
Вариант от Vitaly Grobshtein (tusm5@vorkuta.com) Давно пользуюсь другим приемом. Работает надежно.
//******************************************************************** // Возвращает путь к базе по имени алиаса (вместе с конечным "\") function GetPhNameByAlias(sAlias: string ): String; var Database: TDatabase; pszDir: PChar; begin Database := TDatabase.Create( nil ); {allocate memory} pszDir := StrAlloc(
255 ); try Database.AliasName := sAlias;
Database.DatabaseName := 'TEMP'; {requires a name -- is ignored} Database.Connected := True; {connect without opening any table} DbiGetDirectory( Database.Handle, True, pszDir ); {get the dir.} Database.Connected := False; {disconnect} Result := OemToAnsiStr(StrPas( pszDir )); {convert to a string} finally Database.Free; {free memory} StrDispose( pszDir ); end; end;
Что за приколы c потрепаться?
Не в тему конечно. Но потрепаться не работает. Все форумы работают. А потрепаться не работает (Internal Server Error) ...
А СОБСТВЕННО ЗАЧЕМ? Немного об пользовательских интерфейсах. Часть 3.
Термин юзабилити становится все более модным. Его начинают склонять все кому не лень. Не удивлюсь если в скором времени, они будут зазывать пользователей слоганами вроде: "В нашей программе самое лучшее юзабилити. Покупайте только у нас!"... И возникает резонный вопрос, помимо этой своеобразной моды на юзабилити, существуют ли другие основания, для того чтобы программисты дружною толпой кинулись в дебри проектирования интерфейсов и эргономики?
Языки программирования: разработка и реализация. 4-е изд.
В книге известных американских специалистов в области языков программирования Т. Пратта и М. Зелковица рассматриваются общие концепции разработки и реализации языков программирования, а также основы формальных грамматик и конечных автоматов — математических моделей, используемых для определения и реализации языков программирования. Это именно та база, которая необходима высококвалифицированному программисту для создания производительных и устойчивых к ошибкам программ. Изложение материала в книге не привязано ни к какому конкретному языку программирования, хотя предполагается, что читатель знаком хотя бы с одним процедурным и с одним объектно-ориентированным языком. Книга будет полезна студентам высших учебных заведений, а также программистам любой квалификации.
Автор: Пратт Т., Зелковиц М.
Хокку дня
Гляжу - опавший лист Опять взлетел на ветку: То бабочка была.
Афоризмы
Когда дети ставили отца в тупик, он отправлял их в угол (Валерий Миронов)
Фраза дня
Объявление в туалете: "В случае бомбежки прятаться под этот писсуар - в него еще никто никогда не попадал".
Дурацкие законы (информация предоставлена сайтом kurilka.com)
В городе Провиденсе, Род Айланд (США), в магазинах запрещено по воскресеньям продавать зубную щетку и пасту одному и тому же покупателю.
В Аризоне (США) под угрозой штрафа запрещено класть спать осла в ванной.
И на закуску коротенький анекдот
Жена жалуется Мужу: - Что-то случилось с нашим телефоном: я pазговаpивала со своей подpугой и мы совеpшенно не могли дpуг дpуга понять. - А вы не пpобовали говоpить по очеpеди?